From 86c534dd5d1988b02a19317024da82065fb560fb Mon Sep 17 00:00:00 2001 From: Pan Date: Wed, 6 Mar 2019 18:17:48 +0000 Subject: [PATCH 1/4] Disabled OSX 10.11 wheel builds [skip appveyor] Updated travis cfg for osx builds Removed system package builds. Updated travis cfg to not login or push to docker on PR builds. Switched testing to pytest. Removed channel close on channel object de-allocation. Removed GIL release on session and channel object de-allocation. Updated Changelog. Removed out of repo package files before building wheels and updated gitignore - resolves #14 --- .gitignore | 1 + .travis.yml | 42 +- Changelog.rst | 18 + ci/travis/build-manylinux.sh | 4 +- requirements_dev.txt | 2 +- ssh2/agent.c | 104 ++- ssh2/channel.c | 1228 ++++++++++++++-------------- ssh2/channel.pyx | 7 +- ssh2/error_codes.c | 102 ++- ssh2/exceptions.c | 102 ++- ssh2/fileinfo.c | 102 ++- ssh2/knownhost.c | 106 ++- ssh2/listener.c | 102 ++- ssh2/pkey.c | 102 ++- ssh2/publickey.c | 118 ++- ssh2/session.c | 1450 +++++++++++++++++----------------- ssh2/session.pyx | 3 +- ssh2/sftp.c | 104 ++- ssh2/sftp_handle.c | 108 ++- ssh2/statinfo.c | 102 ++- ssh2/utils.c | 104 ++- 21 files changed, 2216 insertions(+), 1795 deletions(-) diff --git a/.gitignore b/.gitignore index 38b2f182..2b926eeb 100644 --- a/.gitignore +++ b/.gitignore @@ -5,3 +5,4 @@ build *~ *.so .idea/ +ssh2/libssh2.so* diff --git a/.travis.yml b/.travis.yml index faf64710..f64629fd 100644 --- a/.travis.yml +++ b/.travis.yml @@ -26,7 +26,7 @@ install: - python setup.py build_ext --inplace - eval "$(ssh-agent -s)" script: - - nosetests + - pytest tests - flake8 ssh2 # Test source distribution builds - python setup.py sdist @@ -44,9 +44,8 @@ jobs: - &osx-wheels stage: build packages os: osx - osx_image: xcode8 + osx_image: xcode9.2 env: - - PYENV: 3.6.4 - SYSTEM_LIBSSH2: 1 before_install: - brew update @@ -74,7 +73,6 @@ jobs: - python -c "from ssh2.session import Session; Session()" - cd ..; pwd - mv -f *.whl wheels/ - - travis_wait ./ci/travis/pyenv-wheel.sh after_success: - if [[ ! -z "$TRAVIS_TAG" ]]; then twine upload --skip-existing -u $PYPI_U -p $PYPI_P wheels/*.whl; @@ -86,12 +84,18 @@ jobs: osx_image: xcode9.2 - <<: *osx-wheels - osx_image: xcode9.4 + osx_image: xcode9.2 + env: + - PYENV: 3.6.4 + - SYSTEM_LIBSSH2: 1 + install: skip + script: + - travis_wait ./ci/travis/pyenv-wheel.sh - <<: *osx-wheels - osx_image: xcode8 + osx_image: xcode9.4 env: - - PYENV: 3.7.0 + - PYENV: 3.6.4 - SYSTEM_LIBSSH2: 1 install: skip script: @@ -115,28 +119,6 @@ jobs: script: - travis_wait ./ci/travis/pyenv-wheel.sh - - stage: build packages - env: - - SYSTEM_PACKAGES=1 - os: linux - language: generic - python: skip - install: skip - script: - - docker --version - - docker login -u="$DOCKER_USERNAME" -p="$DOCKER_PASSWORD" - - ./ci/docker/build-packages.sh - deploy: - - provider: releases - skip_cleanup: true - api_key: - secure: i1Dr0k393wXBsCKST5ckeTPdZT+hjkikHCGgMSEkJxw+Q8m/Sgq9bbBalkJZDZDc8t0a/nE4ioEXoYO+PT9wRSpjLbjDVwRoWde5PVHaR3JviiwxULEynFLbvdJ1S2O/zRM37YMVgIIXN/2SWSXvQcQznrrvjtBoV+nZfYHX2WZQruq1nQXcPvTJPeZtCBsWaA3TwbVobnOJdb3TFxnHybN3N4gCTOkurek0V7OSMpjd1qgSzNMDIhjXKf/ZB9bcuusXo2QSnzUDJo3S6QE4FBxKohVom7z4AQ8+iRVPkkrWezBo089vzPzfZN/C5+8xQAUfZ6bVNdS6DfI80+55s6Xj7BFEKQW9Kh3Em0GpipHxdxiBf176xktY9EROkDkwDHlsbE7JRRQUmfmJe+0yCo+gg9uAsz5XHNrQgU5BxKhVzggMA/VU+clJ51WfbYGJAvVs/NjHQb/A9CzYKdBamUvy3YY2dxLbdohR7TZMM0JWYmZcmSiaOiZxrCT3ThlQ/J9o9r6TFWvkVjvt+ozABsx0OvtNrdkp7VvFbSQGvmTzGnPM2O5xqzWrM73Z7g8Ahw1g08FDN0JAO8n/Y0tb/xpVAFBmkQTJpQk7f4kQAHWlZKEYN2wEnX+hptjXfDjMYGX9Tc5vdDQJ3oTxnCt+y7Vl9IplT0a5GTTE0l8Pyc4= - file_glob: true - file: '*.{deb,rpm}' - on: - repo: ParallelSSH/ssh2-python - tags: true - - stage: build packages os: linux python: 3.6 @@ -145,7 +127,7 @@ jobs: install: - pip install twine script: - - docker login -u="$DOCKER_USERNAME" -p="$DOCKER_PASSWORD" + - if [[ "$TRAVIS_PULL_REQUEST" == "false" ]]; then docker login -u="$DOCKER_USERNAME" -p="$DOCKER_PASSWORD"; fi - ./ci/travis/build-manylinux.sh after_success: - if [[ ! -z "$TRAVIS_TAG" ]]; then diff --git a/Changelog.rst b/Changelog.rst index 5fee2d81..8fef978b 100644 --- a/Changelog.rst +++ b/Changelog.rst @@ -1,6 +1,24 @@ Change Log ============= +0.18.0 ++++++++ + +Changes +-------- + +* Session object de-allocation no longer calls session disconnect. +* Channel object de-allocation no longer calls channel close. +* Rebuilt sources with Cython ``0.29.6``. + +Packaging +---------- + +* Source distribution builds would not include embedded libssh2 module in package - #51 +* Removed OSX 10.10 binary wheel builds - deprecated by Travis-CI. +* Updated embedded OpenSSL version for Windows wheel builds. + + 0.17.0.post2 +++++++++++++ diff --git a/ci/travis/build-manylinux.sh b/ci/travis/build-manylinux.sh index 3b1e52de..d7135748 100755 --- a/ci/travis/build-manylinux.sh +++ b/ci/travis/build-manylinux.sh @@ -2,10 +2,10 @@ docker_tag="parallelssh/ssh2-manylinux" -rm -rf build dist +rm -rf build dist ssh2/libssh2.* docker pull $docker_tag || echo docker build --cache-from $docker_tag ci/docker/manylinux -t $docker_tag -docker push $docker_tag +if [[ "$TRAVIS_PULL_REQUEST" == "false" ]]; then docker push $docker_tag; fi docker run --rm -v `pwd`:/io $docker_tag /io/ci/travis/build-wheels.sh ls wheelhouse/ diff --git a/requirements_dev.txt b/requirements_dev.txt index b6f23776..7383b387 100644 --- a/requirements_dev.txt +++ b/requirements_dev.txt @@ -3,4 +3,4 @@ flake8 jinja2 sphinx sphinx_rtd_theme -nose +pytest diff --git a/ssh2/agent.c b/ssh2/agent.c index be27cb6f..e6db95e6 100644 --- a/ssh2/agent.c +++ b/ssh2/agent.c @@ -1,4 +1,4 @@ -/* Generated by Cython 0.29 */ +/* Generated by Cython 0.29.6 */ #define PY_SSIZE_T_CLEAN #include "Python.h" @@ -7,8 +7,8 @@ #elif PY_VERSION_HEX < 0x02060000 || (0x03000000 <= PY_VERSION_HEX && PY_VERSION_HEX < 0x03030000) #error Cython requires Python 2.6+ or Python 3.3+. #else -#define CYTHON_ABI "0_29" -#define CYTHON_HEX_VERSION 0x001D00F0 +#define CYTHON_ABI "0_29_6" +#define CYTHON_HEX_VERSION 0x001D06F0 #define CYTHON_FUTURE_DIVISION 0 #include #ifndef offsetof @@ -197,6 +197,9 @@ #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 @@ -343,26 +346,6 @@ #else #define __Pyx_PyFastCFunction_Check(func) 0 #endif -#if CYTHON_USE_DICT_VERSIONS -#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);\ - }\ - } -#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 #if CYTHON_COMPILING_IN_PYPY && !defined(PyObject_Malloc) #define PyObject_Malloc(s) PyMem_Malloc(s) #define PyObject_Free(p) PyMem_Free(p) @@ -395,7 +378,7 @@ typedef int Py_tss_t; static CYTHON_INLINE int PyThread_tss_create(Py_tss_t *key) { *key = PyThread_create_key(); - return 0; // PyThread_create_key reports success always + 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)); @@ -418,7 +401,7 @@ static CYTHON_INLINE int PyThread_tss_set(Py_tss_t *key, void *value) { static CYTHON_INLINE void * PyThread_tss_get(Py_tss_t *key) { return PyThread_get_key_value(*key); } -#endif // TSS (Thread Specific Storage) API +#endif #if CYTHON_COMPILING_IN_CPYTHON || defined(_PyDict_NewPresized) #define __Pyx_PyDict_NewPresized(n) ((n <= 8) ? PyDict_New() : _PyDict_NewPresized(n)) #else @@ -622,7 +605,8 @@ typedef struct {PyObject **p; const char *s; const Py_ssize_t n; const char* enc 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_DEFAULT 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 @@ -955,6 +939,32 @@ static CYTHON_INLINE PyObject* __Pyx_PyObject_GetAttrStr(PyObject* obj, PyObject /* GetBuiltinName.proto */ static PyObject *__Pyx_GetBuiltinName(PyObject *name); +/* 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) {\ @@ -1001,7 +1011,7 @@ static PyObject *__Pyx_PyFunction_FastCallDict(PyObject *func, PyObject **args, #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 = PyFrame_Type.tp_basicsize - 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 @@ -3885,11 +3895,13 @@ static CYTHON_SMALL_CODE int __Pyx_check_single_interpreter(void) { } return 0; } -static CYTHON_SMALL_CODE int __Pyx_copy_spec_to_module(PyObject *spec, PyObject *moddict, const char* from_name, const char* to_name) { +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) { PyObject *value = PyObject_GetAttrString(spec, from_name); int result = 0; if (likely(value)) { - result = PyDict_SetItemString(moddict, to_name, value); + if (allow_none || value != Py_None) { + result = PyDict_SetItemString(moddict, to_name, value); + } Py_DECREF(value); } else if (PyErr_ExceptionMatches(PyExc_AttributeError)) { PyErr_Clear(); @@ -3911,10 +3923,10 @@ static CYTHON_SMALL_CODE PyObject* __pyx_pymod_create(PyObject *spec, CYTHON_UNU if (unlikely(!module)) goto bad; moddict = PyModule_GetDict(module); if (unlikely(!moddict)) goto bad; - if (unlikely(__Pyx_copy_spec_to_module(spec, moddict, "loader", "__loader__") < 0)) goto bad; - if (unlikely(__Pyx_copy_spec_to_module(spec, moddict, "origin", "__file__") < 0)) goto bad; - if (unlikely(__Pyx_copy_spec_to_module(spec, moddict, "parent", "__package__") < 0)) goto bad; - if (unlikely(__Pyx_copy_spec_to_module(spec, moddict, "submodule_search_locations", "__path__") < 0)) goto bad; + 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); @@ -4163,6 +4175,32 @@ static PyObject *__Pyx_GetBuiltinName(PyObject *name) { return result; } +/* PyDictVersioning */ +#if CYTHON_USE_DICT_VERSIONS && CYTHON_USE_TYPE_SLOTS +static CYTHON_INLINE PY_UINT64_T __Pyx_get_tp_dict_version(PyObject *obj) { + PyObject *dict = Py_TYPE(obj)->tp_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) diff --git a/ssh2/channel.c b/ssh2/channel.c index ba8c71bf..8f901cfe 100644 --- a/ssh2/channel.c +++ b/ssh2/channel.c @@ -1,4 +1,4 @@ -/* Generated by Cython 0.29 */ +/* Generated by Cython 0.29.6 */ #define PY_SSIZE_T_CLEAN #include "Python.h" @@ -7,8 +7,8 @@ #elif PY_VERSION_HEX < 0x02060000 || (0x03000000 <= PY_VERSION_HEX && PY_VERSION_HEX < 0x03030000) #error Cython requires Python 2.6+ or Python 3.3+. #else -#define CYTHON_ABI "0_29" -#define CYTHON_HEX_VERSION 0x001D00F0 +#define CYTHON_ABI "0_29_6" +#define CYTHON_HEX_VERSION 0x001D06F0 #define CYTHON_FUTURE_DIVISION 0 #include #ifndef offsetof @@ -197,6 +197,9 @@ #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 @@ -343,26 +346,6 @@ #else #define __Pyx_PyFastCFunction_Check(func) 0 #endif -#if CYTHON_USE_DICT_VERSIONS -#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);\ - }\ - } -#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 #if CYTHON_COMPILING_IN_PYPY && !defined(PyObject_Malloc) #define PyObject_Malloc(s) PyMem_Malloc(s) #define PyObject_Free(p) PyMem_Free(p) @@ -395,7 +378,7 @@ typedef int Py_tss_t; static CYTHON_INLINE int PyThread_tss_create(Py_tss_t *key) { *key = PyThread_create_key(); - return 0; // PyThread_create_key reports success always + 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)); @@ -418,7 +401,7 @@ static CYTHON_INLINE int PyThread_tss_set(Py_tss_t *key, void *value) { static CYTHON_INLINE void * PyThread_tss_get(Py_tss_t *key) { return PyThread_get_key_value(*key); } -#endif // TSS (Thread Specific Storage) API +#endif #if CYTHON_COMPILING_IN_CPYTHON || defined(_PyDict_NewPresized) #define __Pyx_PyDict_NewPresized(n) ((n <= 8) ? PyDict_New() : _PyDict_NewPresized(n)) #else @@ -625,7 +608,8 @@ typedef struct {PyObject **p; const char *s; const Py_ssize_t n; const char* enc 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_DEFAULT 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 @@ -1090,6 +1074,32 @@ static PyObject *__Pyx_Import(PyObject *name, PyObject *from_list, int level); /* ImportFrom.proto */ static PyObject* __Pyx_ImportFrom(PyObject* module, PyObject* name); +/* 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 + /* CLineInTraceback.proto */ #ifdef CYTHON_CLINE_IN_TRACEBACK #define __Pyx_CLineForTraceback(tstate, c_line) (((CYTHON_CLINE_IN_TRACEBACK)) ? c_line : 0) @@ -1396,8 +1406,8 @@ static PyObject *__pyx_f_4ssh2_7channel_PyChannel(LIBSSH2_CHANNEL *__pyx_v_chann * cdef class Channel: * * def __cinit__(self, Session session): # <<<<<<<<<<<<<< - * self._channel = NULL * self._session = session + * */ /* Python wrapper */ @@ -1463,15 +1473,6 @@ static int __pyx_pf_4ssh2_7channel_7Channel___cinit__(struct __pyx_obj_4ssh2_7ch /* "ssh2/channel.pyx":36 * * def __cinit__(self, Session session): - * self._channel = NULL # <<<<<<<<<<<<<< - * self._session = session - * - */ - __pyx_v_self->_channel = NULL; - - /* "ssh2/channel.pyx":37 - * def __cinit__(self, Session session): - * self._channel = NULL * self._session = session # <<<<<<<<<<<<<< * * def __dealloc__(self): @@ -1486,8 +1487,8 @@ static int __pyx_pf_4ssh2_7channel_7Channel___cinit__(struct __pyx_obj_4ssh2_7ch * cdef class Channel: * * def __cinit__(self, Session session): # <<<<<<<<<<<<<< - * self._channel = NULL * self._session = session + * */ /* function exit code */ @@ -1496,12 +1497,12 @@ static int __pyx_pf_4ssh2_7channel_7Channel___cinit__(struct __pyx_obj_4ssh2_7ch return __pyx_r; } -/* "ssh2/channel.pyx":39 +/* "ssh2/channel.pyx":38 * self._session = session * * def __dealloc__(self): # <<<<<<<<<<<<<< - * if self._channel is not NULL and self._session is not None: - * with nogil: + * if self._channel is not NULL: + * c_ssh2.libssh2_channel_free(self._channel) */ /* Python wrapper */ @@ -1518,113 +1519,58 @@ static void __pyx_pw_4ssh2_7channel_7Channel_3__dealloc__(PyObject *__pyx_v_self static void __pyx_pf_4ssh2_7channel_7Channel_2__dealloc__(struct __pyx_obj_4ssh2_7channel_Channel *__pyx_v_self) { __Pyx_RefNannyDeclarations int __pyx_t_1; - int __pyx_t_2; - int __pyx_t_3; __Pyx_RefNannySetupContext("__dealloc__", 0); - /* "ssh2/channel.pyx":40 + /* "ssh2/channel.pyx":39 * * def __dealloc__(self): - * if self._channel is not NULL and self._session is not None: # <<<<<<<<<<<<<< - * with nogil: - * c_ssh2.libssh2_channel_close(self._channel) + * if self._channel is not NULL: # <<<<<<<<<<<<<< + * c_ssh2.libssh2_channel_free(self._channel) + * self._channel = NULL */ - __pyx_t_2 = ((__pyx_v_self->_channel != NULL) != 0); - if (__pyx_t_2) { - } else { - __pyx_t_1 = __pyx_t_2; - goto __pyx_L4_bool_binop_done; - } - __pyx_t_2 = (((PyObject *)__pyx_v_self->_session) != Py_None); - __pyx_t_3 = (__pyx_t_2 != 0); - __pyx_t_1 = __pyx_t_3; - __pyx_L4_bool_binop_done:; + __pyx_t_1 = ((__pyx_v_self->_channel != NULL) != 0); if (__pyx_t_1) { - /* "ssh2/channel.pyx":41 + /* "ssh2/channel.pyx":40 * def __dealloc__(self): - * if self._channel is not NULL and self._session is not None: - * with nogil: # <<<<<<<<<<<<<< - * c_ssh2.libssh2_channel_close(self._channel) - * c_ssh2.libssh2_channel_free(self._channel) - */ - { - #ifdef WITH_THREAD - PyThreadState *_save; - Py_UNBLOCK_THREADS - __Pyx_FastGIL_Remember(); - #endif - /*try:*/ { - - /* "ssh2/channel.pyx":42 - * if self._channel is not NULL and self._session is not None: - * with nogil: - * c_ssh2.libssh2_channel_close(self._channel) # <<<<<<<<<<<<<< - * c_ssh2.libssh2_channel_free(self._channel) - * self._channel = NULL - */ - (void)(libssh2_channel_close(__pyx_v_self->_channel)); - - /* "ssh2/channel.pyx":43 - * with nogil: - * c_ssh2.libssh2_channel_close(self._channel) - * c_ssh2.libssh2_channel_free(self._channel) # <<<<<<<<<<<<<< + * if self._channel is not NULL: + * c_ssh2.libssh2_channel_free(self._channel) # <<<<<<<<<<<<<< * self._channel = NULL * */ - (void)(libssh2_channel_free(__pyx_v_self->_channel)); - } + (void)(libssh2_channel_free(__pyx_v_self->_channel)); - /* "ssh2/channel.pyx":41 - * def __dealloc__(self): - * if self._channel is not NULL and self._session is not None: - * with nogil: # <<<<<<<<<<<<<< - * c_ssh2.libssh2_channel_close(self._channel) - * c_ssh2.libssh2_channel_free(self._channel) - */ - /*finally:*/ { - /*normal exit:*/{ - #ifdef WITH_THREAD - __Pyx_FastGIL_Forget(); - Py_BLOCK_THREADS - #endif - goto __pyx_L8; - } - __pyx_L8:; - } - } - - /* "ssh2/channel.pyx":40 + /* "ssh2/channel.pyx":39 * * def __dealloc__(self): - * if self._channel is not NULL and self._session is not None: # <<<<<<<<<<<<<< - * with nogil: - * c_ssh2.libssh2_channel_close(self._channel) + * if self._channel is not NULL: # <<<<<<<<<<<<<< + * c_ssh2.libssh2_channel_free(self._channel) + * self._channel = NULL */ } - /* "ssh2/channel.pyx":44 - * c_ssh2.libssh2_channel_close(self._channel) - * c_ssh2.libssh2_channel_free(self._channel) + /* "ssh2/channel.pyx":41 + * if self._channel is not NULL: + * c_ssh2.libssh2_channel_free(self._channel) * self._channel = NULL # <<<<<<<<<<<<<< * * @property */ __pyx_v_self->_channel = NULL; - /* "ssh2/channel.pyx":39 + /* "ssh2/channel.pyx":38 * self._session = session * * def __dealloc__(self): # <<<<<<<<<<<<<< - * if self._channel is not NULL and self._session is not None: - * with nogil: + * if self._channel is not NULL: + * c_ssh2.libssh2_channel_free(self._channel) */ /* function exit code */ __Pyx_RefNannyFinishContext(); } -/* "ssh2/channel.pyx":47 +/* "ssh2/channel.pyx":44 * * @property * def session(self): # <<<<<<<<<<<<<< @@ -1650,7 +1596,7 @@ static PyObject *__pyx_pf_4ssh2_7channel_7Channel_7session___get__(struct __pyx_ __Pyx_RefNannyDeclarations __Pyx_RefNannySetupContext("__get__", 0); - /* "ssh2/channel.pyx":49 + /* "ssh2/channel.pyx":46 * def session(self): * """Originating session.""" * return self._session # <<<<<<<<<<<<<< @@ -1662,7 +1608,7 @@ static PyObject *__pyx_pf_4ssh2_7channel_7Channel_7session___get__(struct __pyx_ __pyx_r = ((PyObject *)__pyx_v_self->_session); goto __pyx_L0; - /* "ssh2/channel.pyx":47 + /* "ssh2/channel.pyx":44 * * @property * def session(self): # <<<<<<<<<<<<<< @@ -1677,7 +1623,7 @@ static PyObject *__pyx_pf_4ssh2_7channel_7Channel_7session___get__(struct __pyx_ return __pyx_r; } -/* "ssh2/channel.pyx":51 +/* "ssh2/channel.pyx":48 * return self._session * * def pty(self, term="vt100"): # <<<<<<<<<<<<<< @@ -1715,7 +1661,7 @@ static PyObject *__pyx_pw_4ssh2_7channel_7Channel_5pty(PyObject *__pyx_v_self, P } } if (unlikely(kw_args > 0)) { - if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_pyargnames, 0, values, pos_args, "pty") < 0)) __PYX_ERR(0, 51, __pyx_L3_error) + if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_pyargnames, 0, values, pos_args, "pty") < 0)) __PYX_ERR(0, 48, __pyx_L3_error) } } else { switch (PyTuple_GET_SIZE(__pyx_args)) { @@ -1729,7 +1675,7 @@ static PyObject *__pyx_pw_4ssh2_7channel_7Channel_5pty(PyObject *__pyx_v_self, P } goto __pyx_L4_argument_unpacking_done; __pyx_L5_argtuple_error:; - __Pyx_RaiseArgtupleInvalid("pty", 0, 0, 1, PyTuple_GET_SIZE(__pyx_args)); __PYX_ERR(0, 51, __pyx_L3_error) + __Pyx_RaiseArgtupleInvalid("pty", 0, 0, 1, PyTuple_GET_SIZE(__pyx_args)); __PYX_ERR(0, 48, __pyx_L3_error) __pyx_L3_error:; __Pyx_AddTraceback("ssh2.channel.Channel.pty", __pyx_clineno, __pyx_lineno, __pyx_filename); __Pyx_RefNannyFinishContext(); @@ -1753,19 +1699,19 @@ static PyObject *__pyx_pf_4ssh2_7channel_7Channel_4pty(struct __pyx_obj_4ssh2_7c int __pyx_t_3; __Pyx_RefNannySetupContext("pty", 0); - /* "ssh2/channel.pyx":57 + /* "ssh2/channel.pyx":54 * :type term: str * """ * cdef bytes b_term = to_bytes(term) # <<<<<<<<<<<<<< * cdef const char *_term = b_term * cdef int rc */ - __pyx_t_1 = __pyx_f_4ssh2_5utils_to_bytes(__pyx_v_term); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 57, __pyx_L1_error) + __pyx_t_1 = __pyx_f_4ssh2_5utils_to_bytes(__pyx_v_term); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 54, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_1); __pyx_v_b_term = ((PyObject*)__pyx_t_1); __pyx_t_1 = 0; - /* "ssh2/channel.pyx":58 + /* "ssh2/channel.pyx":55 * """ * cdef bytes b_term = to_bytes(term) * cdef const char *_term = b_term # <<<<<<<<<<<<<< @@ -1774,12 +1720,12 @@ static PyObject *__pyx_pf_4ssh2_7channel_7Channel_4pty(struct __pyx_obj_4ssh2_7c */ if (unlikely(__pyx_v_b_term == Py_None)) { PyErr_SetString(PyExc_TypeError, "expected bytes, NoneType found"); - __PYX_ERR(0, 58, __pyx_L1_error) + __PYX_ERR(0, 55, __pyx_L1_error) } - __pyx_t_2 = __Pyx_PyBytes_AsString(__pyx_v_b_term); if (unlikely((!__pyx_t_2) && PyErr_Occurred())) __PYX_ERR(0, 58, __pyx_L1_error) + __pyx_t_2 = __Pyx_PyBytes_AsString(__pyx_v_b_term); if (unlikely((!__pyx_t_2) && PyErr_Occurred())) __PYX_ERR(0, 55, __pyx_L1_error) __pyx_v__term = __pyx_t_2; - /* "ssh2/channel.pyx":60 + /* "ssh2/channel.pyx":57 * cdef const char *_term = b_term * cdef int rc * with nogil: # <<<<<<<<<<<<<< @@ -1794,7 +1740,7 @@ static PyObject *__pyx_pf_4ssh2_7channel_7Channel_4pty(struct __pyx_obj_4ssh2_7c #endif /*try:*/ { - /* "ssh2/channel.pyx":61 + /* "ssh2/channel.pyx":58 * cdef int rc * with nogil: * rc = c_ssh2.libssh2_channel_request_pty( # <<<<<<<<<<<<<< @@ -1804,7 +1750,7 @@ static PyObject *__pyx_pf_4ssh2_7channel_7Channel_4pty(struct __pyx_obj_4ssh2_7c __pyx_v_rc = libssh2_channel_request_pty(__pyx_v_self->_channel, __pyx_v__term); } - /* "ssh2/channel.pyx":60 + /* "ssh2/channel.pyx":57 * cdef const char *_term = b_term * cdef int rc * with nogil: # <<<<<<<<<<<<<< @@ -1823,7 +1769,7 @@ static PyObject *__pyx_pf_4ssh2_7channel_7Channel_4pty(struct __pyx_obj_4ssh2_7c } } - /* "ssh2/channel.pyx":63 + /* "ssh2/channel.pyx":60 * rc = c_ssh2.libssh2_channel_request_pty( * self._channel, _term) * return handle_error_codes(rc) # <<<<<<<<<<<<<< @@ -1831,14 +1777,14 @@ static PyObject *__pyx_pf_4ssh2_7channel_7Channel_4pty(struct __pyx_obj_4ssh2_7c * def execute(self, command not None): */ __Pyx_XDECREF(__pyx_r); - __pyx_t_3 = __pyx_f_4ssh2_5utils_handle_error_codes(__pyx_v_rc, 0); if (unlikely(__pyx_t_3 == ((int)-1))) __PYX_ERR(0, 63, __pyx_L1_error) - __pyx_t_1 = __Pyx_PyInt_From_int(__pyx_t_3); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 63, __pyx_L1_error) + __pyx_t_3 = __pyx_f_4ssh2_5utils_handle_error_codes(__pyx_v_rc, 0); if (unlikely(__pyx_t_3 == ((int)-1))) __PYX_ERR(0, 60, __pyx_L1_error) + __pyx_t_1 = __Pyx_PyInt_From_int(__pyx_t_3); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 60, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_1); __pyx_r = __pyx_t_1; __pyx_t_1 = 0; goto __pyx_L0; - /* "ssh2/channel.pyx":51 + /* "ssh2/channel.pyx":48 * return self._session * * def pty(self, term="vt100"): # <<<<<<<<<<<<<< @@ -1858,7 +1804,7 @@ static PyObject *__pyx_pf_4ssh2_7channel_7Channel_4pty(struct __pyx_obj_4ssh2_7c return __pyx_r; } -/* "ssh2/channel.pyx":65 +/* "ssh2/channel.pyx":62 * return handle_error_codes(rc) * * def execute(self, command not None): # <<<<<<<<<<<<<< @@ -1874,7 +1820,7 @@ static PyObject *__pyx_pw_4ssh2_7channel_7Channel_7execute(PyObject *__pyx_v_sel __Pyx_RefNannyDeclarations __Pyx_RefNannySetupContext("execute (wrapper)", 0); if (unlikely(((PyObject *)__pyx_v_command) == Py_None)) { - PyErr_Format(PyExc_TypeError, "Argument '%.200s' must not be None", "command"); __PYX_ERR(0, 65, __pyx_L1_error) + PyErr_Format(PyExc_TypeError, "Argument '%.200s' must not be None", "command"); __PYX_ERR(0, 62, __pyx_L1_error) } __pyx_r = __pyx_pf_4ssh2_7channel_7Channel_6execute(((struct __pyx_obj_4ssh2_7channel_Channel *)__pyx_v_self), ((PyObject *)__pyx_v_command)); @@ -1898,19 +1844,19 @@ static PyObject *__pyx_pf_4ssh2_7channel_7Channel_6execute(struct __pyx_obj_4ssh int __pyx_t_3; __Pyx_RefNannySetupContext("execute", 0); - /* "ssh2/channel.pyx":77 + /* "ssh2/channel.pyx":74 * """ * cdef int rc * cdef bytes b_command = to_bytes(command) # <<<<<<<<<<<<<< * cdef char *_command = b_command * with nogil: */ - __pyx_t_1 = __pyx_f_4ssh2_5utils_to_bytes(__pyx_v_command); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 77, __pyx_L1_error) + __pyx_t_1 = __pyx_f_4ssh2_5utils_to_bytes(__pyx_v_command); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 74, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_1); __pyx_v_b_command = ((PyObject*)__pyx_t_1); __pyx_t_1 = 0; - /* "ssh2/channel.pyx":78 + /* "ssh2/channel.pyx":75 * cdef int rc * cdef bytes b_command = to_bytes(command) * cdef char *_command = b_command # <<<<<<<<<<<<<< @@ -1919,12 +1865,12 @@ static PyObject *__pyx_pf_4ssh2_7channel_7Channel_6execute(struct __pyx_obj_4ssh */ if (unlikely(__pyx_v_b_command == Py_None)) { PyErr_SetString(PyExc_TypeError, "expected bytes, NoneType found"); - __PYX_ERR(0, 78, __pyx_L1_error) + __PYX_ERR(0, 75, __pyx_L1_error) } - __pyx_t_2 = __Pyx_PyBytes_AsWritableString(__pyx_v_b_command); if (unlikely((!__pyx_t_2) && PyErr_Occurred())) __PYX_ERR(0, 78, __pyx_L1_error) + __pyx_t_2 = __Pyx_PyBytes_AsWritableString(__pyx_v_b_command); if (unlikely((!__pyx_t_2) && PyErr_Occurred())) __PYX_ERR(0, 75, __pyx_L1_error) __pyx_v__command = __pyx_t_2; - /* "ssh2/channel.pyx":79 + /* "ssh2/channel.pyx":76 * cdef bytes b_command = to_bytes(command) * cdef char *_command = b_command * with nogil: # <<<<<<<<<<<<<< @@ -1939,7 +1885,7 @@ static PyObject *__pyx_pf_4ssh2_7channel_7Channel_6execute(struct __pyx_obj_4ssh #endif /*try:*/ { - /* "ssh2/channel.pyx":80 + /* "ssh2/channel.pyx":77 * cdef char *_command = b_command * with nogil: * rc = c_ssh2.libssh2_channel_exec( # <<<<<<<<<<<<<< @@ -1949,7 +1895,7 @@ static PyObject *__pyx_pf_4ssh2_7channel_7Channel_6execute(struct __pyx_obj_4ssh __pyx_v_rc = libssh2_channel_exec(__pyx_v_self->_channel, __pyx_v__command); } - /* "ssh2/channel.pyx":79 + /* "ssh2/channel.pyx":76 * cdef bytes b_command = to_bytes(command) * cdef char *_command = b_command * with nogil: # <<<<<<<<<<<<<< @@ -1968,7 +1914,7 @@ static PyObject *__pyx_pf_4ssh2_7channel_7Channel_6execute(struct __pyx_obj_4ssh } } - /* "ssh2/channel.pyx":82 + /* "ssh2/channel.pyx":79 * rc = c_ssh2.libssh2_channel_exec( * self._channel, _command) * return handle_error_codes(rc) # <<<<<<<<<<<<<< @@ -1976,14 +1922,14 @@ static PyObject *__pyx_pf_4ssh2_7channel_7Channel_6execute(struct __pyx_obj_4ssh * def subsystem(self, subsystem not None): */ __Pyx_XDECREF(__pyx_r); - __pyx_t_3 = __pyx_f_4ssh2_5utils_handle_error_codes(__pyx_v_rc, 0); if (unlikely(__pyx_t_3 == ((int)-1))) __PYX_ERR(0, 82, __pyx_L1_error) - __pyx_t_1 = __Pyx_PyInt_From_int(__pyx_t_3); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 82, __pyx_L1_error) + __pyx_t_3 = __pyx_f_4ssh2_5utils_handle_error_codes(__pyx_v_rc, 0); if (unlikely(__pyx_t_3 == ((int)-1))) __PYX_ERR(0, 79, __pyx_L1_error) + __pyx_t_1 = __Pyx_PyInt_From_int(__pyx_t_3); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 79, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_1); __pyx_r = __pyx_t_1; __pyx_t_1 = 0; goto __pyx_L0; - /* "ssh2/channel.pyx":65 + /* "ssh2/channel.pyx":62 * return handle_error_codes(rc) * * def execute(self, command not None): # <<<<<<<<<<<<<< @@ -2003,7 +1949,7 @@ static PyObject *__pyx_pf_4ssh2_7channel_7Channel_6execute(struct __pyx_obj_4ssh return __pyx_r; } -/* "ssh2/channel.pyx":84 +/* "ssh2/channel.pyx":81 * return handle_error_codes(rc) * * def subsystem(self, subsystem not None): # <<<<<<<<<<<<<< @@ -2019,7 +1965,7 @@ static PyObject *__pyx_pw_4ssh2_7channel_7Channel_9subsystem(PyObject *__pyx_v_s __Pyx_RefNannyDeclarations __Pyx_RefNannySetupContext("subsystem (wrapper)", 0); if (unlikely(((PyObject *)__pyx_v_subsystem) == Py_None)) { - PyErr_Format(PyExc_TypeError, "Argument '%.200s' must not be None", "subsystem"); __PYX_ERR(0, 84, __pyx_L1_error) + PyErr_Format(PyExc_TypeError, "Argument '%.200s' must not be None", "subsystem"); __PYX_ERR(0, 81, __pyx_L1_error) } __pyx_r = __pyx_pf_4ssh2_7channel_7Channel_8subsystem(((struct __pyx_obj_4ssh2_7channel_Channel *)__pyx_v_self), ((PyObject *)__pyx_v_subsystem)); @@ -2043,19 +1989,19 @@ static PyObject *__pyx_pf_4ssh2_7channel_7Channel_8subsystem(struct __pyx_obj_4s int __pyx_t_3; __Pyx_RefNannySetupContext("subsystem", 0); - /* "ssh2/channel.pyx":90 + /* "ssh2/channel.pyx":87 * :type subsystem: str""" * cdef int rc * cdef bytes b_subsystem = to_bytes(subsystem) # <<<<<<<<<<<<<< * cdef char *_subsystem = b_subsystem * with nogil: */ - __pyx_t_1 = __pyx_f_4ssh2_5utils_to_bytes(__pyx_v_subsystem); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 90, __pyx_L1_error) + __pyx_t_1 = __pyx_f_4ssh2_5utils_to_bytes(__pyx_v_subsystem); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 87, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_1); __pyx_v_b_subsystem = ((PyObject*)__pyx_t_1); __pyx_t_1 = 0; - /* "ssh2/channel.pyx":91 + /* "ssh2/channel.pyx":88 * cdef int rc * cdef bytes b_subsystem = to_bytes(subsystem) * cdef char *_subsystem = b_subsystem # <<<<<<<<<<<<<< @@ -2064,12 +2010,12 @@ static PyObject *__pyx_pf_4ssh2_7channel_7Channel_8subsystem(struct __pyx_obj_4s */ if (unlikely(__pyx_v_b_subsystem == Py_None)) { PyErr_SetString(PyExc_TypeError, "expected bytes, NoneType found"); - __PYX_ERR(0, 91, __pyx_L1_error) + __PYX_ERR(0, 88, __pyx_L1_error) } - __pyx_t_2 = __Pyx_PyBytes_AsWritableString(__pyx_v_b_subsystem); if (unlikely((!__pyx_t_2) && PyErr_Occurred())) __PYX_ERR(0, 91, __pyx_L1_error) + __pyx_t_2 = __Pyx_PyBytes_AsWritableString(__pyx_v_b_subsystem); if (unlikely((!__pyx_t_2) && PyErr_Occurred())) __PYX_ERR(0, 88, __pyx_L1_error) __pyx_v__subsystem = __pyx_t_2; - /* "ssh2/channel.pyx":92 + /* "ssh2/channel.pyx":89 * cdef bytes b_subsystem = to_bytes(subsystem) * cdef char *_subsystem = b_subsystem * with nogil: # <<<<<<<<<<<<<< @@ -2084,7 +2030,7 @@ static PyObject *__pyx_pf_4ssh2_7channel_7Channel_8subsystem(struct __pyx_obj_4s #endif /*try:*/ { - /* "ssh2/channel.pyx":93 + /* "ssh2/channel.pyx":90 * cdef char *_subsystem = b_subsystem * with nogil: * rc = c_ssh2.libssh2_channel_subsystem( # <<<<<<<<<<<<<< @@ -2094,7 +2040,7 @@ static PyObject *__pyx_pf_4ssh2_7channel_7Channel_8subsystem(struct __pyx_obj_4s __pyx_v_rc = libssh2_channel_subsystem(__pyx_v_self->_channel, __pyx_v__subsystem); } - /* "ssh2/channel.pyx":92 + /* "ssh2/channel.pyx":89 * cdef bytes b_subsystem = to_bytes(subsystem) * cdef char *_subsystem = b_subsystem * with nogil: # <<<<<<<<<<<<<< @@ -2113,7 +2059,7 @@ static PyObject *__pyx_pf_4ssh2_7channel_7Channel_8subsystem(struct __pyx_obj_4s } } - /* "ssh2/channel.pyx":95 + /* "ssh2/channel.pyx":92 * rc = c_ssh2.libssh2_channel_subsystem( * self._channel, _subsystem) * return handle_error_codes(rc) # <<<<<<<<<<<<<< @@ -2121,14 +2067,14 @@ static PyObject *__pyx_pf_4ssh2_7channel_7Channel_8subsystem(struct __pyx_obj_4s * def shell(self): */ __Pyx_XDECREF(__pyx_r); - __pyx_t_3 = __pyx_f_4ssh2_5utils_handle_error_codes(__pyx_v_rc, 0); if (unlikely(__pyx_t_3 == ((int)-1))) __PYX_ERR(0, 95, __pyx_L1_error) - __pyx_t_1 = __Pyx_PyInt_From_int(__pyx_t_3); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 95, __pyx_L1_error) + __pyx_t_3 = __pyx_f_4ssh2_5utils_handle_error_codes(__pyx_v_rc, 0); if (unlikely(__pyx_t_3 == ((int)-1))) __PYX_ERR(0, 92, __pyx_L1_error) + __pyx_t_1 = __Pyx_PyInt_From_int(__pyx_t_3); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 92, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_1); __pyx_r = __pyx_t_1; __pyx_t_1 = 0; goto __pyx_L0; - /* "ssh2/channel.pyx":84 + /* "ssh2/channel.pyx":81 * return handle_error_codes(rc) * * def subsystem(self, subsystem not None): # <<<<<<<<<<<<<< @@ -2148,7 +2094,7 @@ static PyObject *__pyx_pf_4ssh2_7channel_7Channel_8subsystem(struct __pyx_obj_4s return __pyx_r; } -/* "ssh2/channel.pyx":97 +/* "ssh2/channel.pyx":94 * return handle_error_codes(rc) * * def shell(self): # <<<<<<<<<<<<<< @@ -2178,7 +2124,7 @@ static PyObject *__pyx_pf_4ssh2_7channel_7Channel_10shell(struct __pyx_obj_4ssh2 PyObject *__pyx_t_2 = NULL; __Pyx_RefNannySetupContext("shell", 0); - /* "ssh2/channel.pyx":104 + /* "ssh2/channel.pyx":101 * """ * cdef int rc * with nogil: # <<<<<<<<<<<<<< @@ -2193,7 +2139,7 @@ static PyObject *__pyx_pf_4ssh2_7channel_7Channel_10shell(struct __pyx_obj_4ssh2 #endif /*try:*/ { - /* "ssh2/channel.pyx":105 + /* "ssh2/channel.pyx":102 * cdef int rc * with nogil: * rc = c_ssh2.libssh2_channel_shell(self._channel) # <<<<<<<<<<<<<< @@ -2203,7 +2149,7 @@ static PyObject *__pyx_pf_4ssh2_7channel_7Channel_10shell(struct __pyx_obj_4ssh2 __pyx_v_rc = libssh2_channel_shell(__pyx_v_self->_channel); } - /* "ssh2/channel.pyx":104 + /* "ssh2/channel.pyx":101 * """ * cdef int rc * with nogil: # <<<<<<<<<<<<<< @@ -2222,7 +2168,7 @@ static PyObject *__pyx_pf_4ssh2_7channel_7Channel_10shell(struct __pyx_obj_4ssh2 } } - /* "ssh2/channel.pyx":106 + /* "ssh2/channel.pyx":103 * with nogil: * rc = c_ssh2.libssh2_channel_shell(self._channel) * return handle_error_codes(rc) # <<<<<<<<<<<<<< @@ -2230,14 +2176,14 @@ static PyObject *__pyx_pf_4ssh2_7channel_7Channel_10shell(struct __pyx_obj_4ssh2 * def read(self, size_t size=1024): */ __Pyx_XDECREF(__pyx_r); - __pyx_t_1 = __pyx_f_4ssh2_5utils_handle_error_codes(__pyx_v_rc, 0); if (unlikely(__pyx_t_1 == ((int)-1))) __PYX_ERR(0, 106, __pyx_L1_error) - __pyx_t_2 = __Pyx_PyInt_From_int(__pyx_t_1); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 106, __pyx_L1_error) + __pyx_t_1 = __pyx_f_4ssh2_5utils_handle_error_codes(__pyx_v_rc, 0); if (unlikely(__pyx_t_1 == ((int)-1))) __PYX_ERR(0, 103, __pyx_L1_error) + __pyx_t_2 = __Pyx_PyInt_From_int(__pyx_t_1); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 103, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_2); __pyx_r = __pyx_t_2; __pyx_t_2 = 0; goto __pyx_L0; - /* "ssh2/channel.pyx":97 + /* "ssh2/channel.pyx":94 * return handle_error_codes(rc) * * def shell(self): # <<<<<<<<<<<<<< @@ -2256,7 +2202,7 @@ static PyObject *__pyx_pf_4ssh2_7channel_7Channel_10shell(struct __pyx_obj_4ssh2 return __pyx_r; } -/* "ssh2/channel.pyx":108 +/* "ssh2/channel.pyx":105 * return handle_error_codes(rc) * * def read(self, size_t size=1024): # <<<<<<<<<<<<<< @@ -2293,7 +2239,7 @@ static PyObject *__pyx_pw_4ssh2_7channel_7Channel_13read(PyObject *__pyx_v_self, } } if (unlikely(kw_args > 0)) { - if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_pyargnames, 0, values, pos_args, "read") < 0)) __PYX_ERR(0, 108, __pyx_L3_error) + if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_pyargnames, 0, values, pos_args, "read") < 0)) __PYX_ERR(0, 105, __pyx_L3_error) } } else { switch (PyTuple_GET_SIZE(__pyx_args)) { @@ -2304,14 +2250,14 @@ static PyObject *__pyx_pw_4ssh2_7channel_7Channel_13read(PyObject *__pyx_v_self, } } if (values[0]) { - __pyx_v_size = __Pyx_PyInt_As_size_t(values[0]); if (unlikely((__pyx_v_size == (size_t)-1) && PyErr_Occurred())) __PYX_ERR(0, 108, __pyx_L3_error) + __pyx_v_size = __Pyx_PyInt_As_size_t(values[0]); if (unlikely((__pyx_v_size == (size_t)-1) && PyErr_Occurred())) __PYX_ERR(0, 105, __pyx_L3_error) } else { __pyx_v_size = ((size_t)0x400); } } goto __pyx_L4_argument_unpacking_done; __pyx_L5_argtuple_error:; - __Pyx_RaiseArgtupleInvalid("read", 0, 0, 1, PyTuple_GET_SIZE(__pyx_args)); __PYX_ERR(0, 108, __pyx_L3_error) + __Pyx_RaiseArgtupleInvalid("read", 0, 0, 1, PyTuple_GET_SIZE(__pyx_args)); __PYX_ERR(0, 105, __pyx_L3_error) __pyx_L3_error:; __Pyx_AddTraceback("ssh2.channel.Channel.read", __pyx_clineno, __pyx_lineno, __pyx_filename); __Pyx_RefNannyFinishContext(); @@ -2332,7 +2278,7 @@ static PyObject *__pyx_pf_4ssh2_7channel_7Channel_12read(struct __pyx_obj_4ssh2_ PyObject *__pyx_t_3 = NULL; __Pyx_RefNannySetupContext("read", 0); - /* "ssh2/channel.pyx":119 + /* "ssh2/channel.pyx":116 * * :rtype: (int, bytes)""" * return self.read_ex(size=size, stream_id=0) # <<<<<<<<<<<<<< @@ -2340,16 +2286,16 @@ static PyObject *__pyx_pf_4ssh2_7channel_7Channel_12read(struct __pyx_obj_4ssh2_ * def read_ex(self, size_t size=1024, int stream_id=0): */ __Pyx_XDECREF(__pyx_r); - __pyx_t_1 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_self), __pyx_n_s_read_ex); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 119, __pyx_L1_error) + __pyx_t_1 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_self), __pyx_n_s_read_ex); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 116, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_1); - __pyx_t_2 = __Pyx_PyDict_NewPresized(2); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 119, __pyx_L1_error) + __pyx_t_2 = __Pyx_PyDict_NewPresized(2); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 116, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_2); - __pyx_t_3 = __Pyx_PyInt_FromSize_t(__pyx_v_size); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 119, __pyx_L1_error) + __pyx_t_3 = __Pyx_PyInt_FromSize_t(__pyx_v_size); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 116, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_3); - if (PyDict_SetItem(__pyx_t_2, __pyx_n_s_size, __pyx_t_3) < 0) __PYX_ERR(0, 119, __pyx_L1_error) + if (PyDict_SetItem(__pyx_t_2, __pyx_n_s_size, __pyx_t_3) < 0) __PYX_ERR(0, 116, __pyx_L1_error) __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; - if (PyDict_SetItem(__pyx_t_2, __pyx_n_s_stream_id, __pyx_int_0) < 0) __PYX_ERR(0, 119, __pyx_L1_error) - __pyx_t_3 = __Pyx_PyObject_Call(__pyx_t_1, __pyx_empty_tuple, __pyx_t_2); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 119, __pyx_L1_error) + if (PyDict_SetItem(__pyx_t_2, __pyx_n_s_stream_id, __pyx_int_0) < 0) __PYX_ERR(0, 116, __pyx_L1_error) + __pyx_t_3 = __Pyx_PyObject_Call(__pyx_t_1, __pyx_empty_tuple, __pyx_t_2); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 116, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_3); __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; @@ -2357,7 +2303,7 @@ static PyObject *__pyx_pf_4ssh2_7channel_7Channel_12read(struct __pyx_obj_4ssh2_ __pyx_t_3 = 0; goto __pyx_L0; - /* "ssh2/channel.pyx":108 + /* "ssh2/channel.pyx":105 * return handle_error_codes(rc) * * def read(self, size_t size=1024): # <<<<<<<<<<<<<< @@ -2378,7 +2324,7 @@ static PyObject *__pyx_pf_4ssh2_7channel_7Channel_12read(struct __pyx_obj_4ssh2_ return __pyx_r; } -/* "ssh2/channel.pyx":121 +/* "ssh2/channel.pyx":118 * return self.read_ex(size=size, stream_id=0) * * def read_ex(self, size_t size=1024, int stream_id=0): # <<<<<<<<<<<<<< @@ -2424,7 +2370,7 @@ static PyObject *__pyx_pw_4ssh2_7channel_7Channel_15read_ex(PyObject *__pyx_v_se } } if (unlikely(kw_args > 0)) { - if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_pyargnames, 0, values, pos_args, "read_ex") < 0)) __PYX_ERR(0, 121, __pyx_L3_error) + if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_pyargnames, 0, values, pos_args, "read_ex") < 0)) __PYX_ERR(0, 118, __pyx_L3_error) } } else { switch (PyTuple_GET_SIZE(__pyx_args)) { @@ -2437,19 +2383,19 @@ static PyObject *__pyx_pw_4ssh2_7channel_7Channel_15read_ex(PyObject *__pyx_v_se } } if (values[0]) { - __pyx_v_size = __Pyx_PyInt_As_size_t(values[0]); if (unlikely((__pyx_v_size == (size_t)-1) && PyErr_Occurred())) __PYX_ERR(0, 121, __pyx_L3_error) + __pyx_v_size = __Pyx_PyInt_As_size_t(values[0]); if (unlikely((__pyx_v_size == (size_t)-1) && PyErr_Occurred())) __PYX_ERR(0, 118, __pyx_L3_error) } else { __pyx_v_size = ((size_t)0x400); } if (values[1]) { - __pyx_v_stream_id = __Pyx_PyInt_As_int(values[1]); if (unlikely((__pyx_v_stream_id == (int)-1) && PyErr_Occurred())) __PYX_ERR(0, 121, __pyx_L3_error) + __pyx_v_stream_id = __Pyx_PyInt_As_int(values[1]); if (unlikely((__pyx_v_stream_id == (int)-1) && PyErr_Occurred())) __PYX_ERR(0, 118, __pyx_L3_error) } else { __pyx_v_stream_id = ((int)0); } } goto __pyx_L4_argument_unpacking_done; __pyx_L5_argtuple_error:; - __Pyx_RaiseArgtupleInvalid("read_ex", 0, 0, 2, PyTuple_GET_SIZE(__pyx_args)); __PYX_ERR(0, 121, __pyx_L3_error) + __Pyx_RaiseArgtupleInvalid("read_ex", 0, 0, 2, PyTuple_GET_SIZE(__pyx_args)); __PYX_ERR(0, 118, __pyx_L3_error) __pyx_L3_error:; __Pyx_AddTraceback("ssh2.channel.Channel.read_ex", __pyx_clineno, __pyx_lineno, __pyx_filename); __Pyx_RefNannyFinishContext(); @@ -2482,7 +2428,7 @@ static PyObject *__pyx_pf_4ssh2_7channel_7Channel_14read_ex(struct __pyx_obj_4ss PyObject *__pyx_t_12 = NULL; __Pyx_RefNannySetupContext("read_ex", 0); - /* "ssh2/channel.pyx":132 + /* "ssh2/channel.pyx":129 * * :rtype: (int, bytes)""" * cdef bytes buf = b'' # <<<<<<<<<<<<<< @@ -2492,7 +2438,7 @@ static PyObject *__pyx_pf_4ssh2_7channel_7Channel_14read_ex(struct __pyx_obj_4ss __Pyx_INCREF(__pyx_kp_b_); __pyx_v_buf = __pyx_kp_b_; - /* "ssh2/channel.pyx":135 + /* "ssh2/channel.pyx":132 * cdef char *cbuf * cdef ssize_t rc * with nogil: # <<<<<<<<<<<<<< @@ -2507,7 +2453,7 @@ static PyObject *__pyx_pf_4ssh2_7channel_7Channel_14read_ex(struct __pyx_obj_4ss #endif /*try:*/ { - /* "ssh2/channel.pyx":136 + /* "ssh2/channel.pyx":133 * cdef ssize_t rc * with nogil: * cbuf = malloc(sizeof(char)*size) # <<<<<<<<<<<<<< @@ -2516,7 +2462,7 @@ static PyObject *__pyx_pf_4ssh2_7channel_7Channel_14read_ex(struct __pyx_obj_4ss */ __pyx_v_cbuf = ((char *)malloc(((sizeof(char)) * __pyx_v_size))); - /* "ssh2/channel.pyx":137 + /* "ssh2/channel.pyx":134 * with nogil: * cbuf = malloc(sizeof(char)*size) * if cbuf is NULL: # <<<<<<<<<<<<<< @@ -2526,7 +2472,7 @@ static PyObject *__pyx_pf_4ssh2_7channel_7Channel_14read_ex(struct __pyx_obj_4ss __pyx_t_1 = ((__pyx_v_cbuf == NULL) != 0); if (__pyx_t_1) { - /* "ssh2/channel.pyx":138 + /* "ssh2/channel.pyx":135 * cbuf = malloc(sizeof(char)*size) * if cbuf is NULL: * with gil: # <<<<<<<<<<<<<< @@ -2539,17 +2485,17 @@ static PyObject *__pyx_pf_4ssh2_7channel_7Channel_14read_ex(struct __pyx_obj_4ss #endif /*try:*/ { - /* "ssh2/channel.pyx":139 + /* "ssh2/channel.pyx":136 * if cbuf is NULL: * with gil: * raise MemoryError # <<<<<<<<<<<<<< * rc = c_ssh2.libssh2_channel_read_ex( * self._channel, stream_id, cbuf, size) */ - PyErr_NoMemory(); __PYX_ERR(0, 139, __pyx_L8_error) + PyErr_NoMemory(); __PYX_ERR(0, 136, __pyx_L8_error) } - /* "ssh2/channel.pyx":138 + /* "ssh2/channel.pyx":135 * cbuf = malloc(sizeof(char)*size) * if cbuf is NULL: * with gil: # <<<<<<<<<<<<<< @@ -2566,7 +2512,7 @@ static PyObject *__pyx_pf_4ssh2_7channel_7Channel_14read_ex(struct __pyx_obj_4ss } } - /* "ssh2/channel.pyx":137 + /* "ssh2/channel.pyx":134 * with nogil: * cbuf = malloc(sizeof(char)*size) * if cbuf is NULL: # <<<<<<<<<<<<<< @@ -2575,7 +2521,7 @@ static PyObject *__pyx_pf_4ssh2_7channel_7Channel_14read_ex(struct __pyx_obj_4ss */ } - /* "ssh2/channel.pyx":140 + /* "ssh2/channel.pyx":137 * with gil: * raise MemoryError * rc = c_ssh2.libssh2_channel_read_ex( # <<<<<<<<<<<<<< @@ -2585,7 +2531,7 @@ static PyObject *__pyx_pf_4ssh2_7channel_7Channel_14read_ex(struct __pyx_obj_4ss __pyx_v_rc = libssh2_channel_read_ex(__pyx_v_self->_channel, __pyx_v_stream_id, __pyx_v_cbuf, __pyx_v_size); } - /* "ssh2/channel.pyx":135 + /* "ssh2/channel.pyx":132 * cdef char *cbuf * cdef ssize_t rc * with nogil: # <<<<<<<<<<<<<< @@ -2611,7 +2557,7 @@ static PyObject *__pyx_pf_4ssh2_7channel_7Channel_14read_ex(struct __pyx_obj_4ss } } - /* "ssh2/channel.pyx":142 + /* "ssh2/channel.pyx":139 * rc = c_ssh2.libssh2_channel_read_ex( * self._channel, stream_id, cbuf, size) * try: # <<<<<<<<<<<<<< @@ -2620,7 +2566,7 @@ static PyObject *__pyx_pf_4ssh2_7channel_7Channel_14read_ex(struct __pyx_obj_4ss */ /*try:*/ { - /* "ssh2/channel.pyx":143 + /* "ssh2/channel.pyx":140 * self._channel, stream_id, cbuf, size) * try: * if rc > 0: # <<<<<<<<<<<<<< @@ -2630,19 +2576,19 @@ static PyObject *__pyx_pf_4ssh2_7channel_7Channel_14read_ex(struct __pyx_obj_4ss __pyx_t_1 = ((__pyx_v_rc > 0) != 0); if (__pyx_t_1) { - /* "ssh2/channel.pyx":144 + /* "ssh2/channel.pyx":141 * try: * if rc > 0: * buf = cbuf[:rc] # <<<<<<<<<<<<<< * finally: * free(cbuf) */ - __pyx_t_2 = __Pyx_PyBytes_FromStringAndSize(__pyx_v_cbuf + 0, __pyx_v_rc - 0); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 144, __pyx_L11_error) + __pyx_t_2 = __Pyx_PyBytes_FromStringAndSize(__pyx_v_cbuf + 0, __pyx_v_rc - 0); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 141, __pyx_L11_error) __Pyx_GOTREF(__pyx_t_2); __Pyx_DECREF_SET(__pyx_v_buf, ((PyObject*)__pyx_t_2)); __pyx_t_2 = 0; - /* "ssh2/channel.pyx":143 + /* "ssh2/channel.pyx":140 * self._channel, stream_id, cbuf, size) * try: * if rc > 0: # <<<<<<<<<<<<<< @@ -2652,7 +2598,7 @@ static PyObject *__pyx_pf_4ssh2_7channel_7Channel_14read_ex(struct __pyx_obj_4ss } } - /* "ssh2/channel.pyx":146 + /* "ssh2/channel.pyx":143 * buf = cbuf[:rc] * finally: * free(cbuf) # <<<<<<<<<<<<<< @@ -2699,16 +2645,16 @@ static PyObject *__pyx_pf_4ssh2_7channel_7Channel_14read_ex(struct __pyx_obj_4ss __pyx_L12:; } - /* "ssh2/channel.pyx":147 + /* "ssh2/channel.pyx":144 * finally: * free(cbuf) * handle_error_codes(rc) # <<<<<<<<<<<<<< * return rc, buf * */ - __pyx_t_4 = __pyx_f_4ssh2_5utils_handle_error_codes(__pyx_v_rc, 0); if (unlikely(__pyx_t_4 == ((int)-1))) __PYX_ERR(0, 147, __pyx_L1_error) + __pyx_t_4 = __pyx_f_4ssh2_5utils_handle_error_codes(__pyx_v_rc, 0); if (unlikely(__pyx_t_4 == ((int)-1))) __PYX_ERR(0, 144, __pyx_L1_error) - /* "ssh2/channel.pyx":148 + /* "ssh2/channel.pyx":145 * free(cbuf) * handle_error_codes(rc) * return rc, buf # <<<<<<<<<<<<<< @@ -2716,9 +2662,9 @@ static PyObject *__pyx_pf_4ssh2_7channel_7Channel_14read_ex(struct __pyx_obj_4ss * def read_stderr(self, size_t size=1024): */ __Pyx_XDECREF(__pyx_r); - __pyx_t_2 = PyInt_FromSsize_t(__pyx_v_rc); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 148, __pyx_L1_error) + __pyx_t_2 = PyInt_FromSsize_t(__pyx_v_rc); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 145, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_2); - __pyx_t_12 = PyTuple_New(2); if (unlikely(!__pyx_t_12)) __PYX_ERR(0, 148, __pyx_L1_error) + __pyx_t_12 = PyTuple_New(2); if (unlikely(!__pyx_t_12)) __PYX_ERR(0, 145, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_12); __Pyx_GIVEREF(__pyx_t_2); PyTuple_SET_ITEM(__pyx_t_12, 0, __pyx_t_2); @@ -2730,7 +2676,7 @@ static PyObject *__pyx_pf_4ssh2_7channel_7Channel_14read_ex(struct __pyx_obj_4ss __pyx_t_12 = 0; goto __pyx_L0; - /* "ssh2/channel.pyx":121 + /* "ssh2/channel.pyx":118 * return self.read_ex(size=size, stream_id=0) * * def read_ex(self, size_t size=1024, int stream_id=0): # <<<<<<<<<<<<<< @@ -2751,7 +2697,7 @@ static PyObject *__pyx_pf_4ssh2_7channel_7Channel_14read_ex(struct __pyx_obj_4ss return __pyx_r; } -/* "ssh2/channel.pyx":150 +/* "ssh2/channel.pyx":147 * return rc, buf * * def read_stderr(self, size_t size=1024): # <<<<<<<<<<<<<< @@ -2788,7 +2734,7 @@ static PyObject *__pyx_pw_4ssh2_7channel_7Channel_17read_stderr(PyObject *__pyx_ } } if (unlikely(kw_args > 0)) { - if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_pyargnames, 0, values, pos_args, "read_stderr") < 0)) __PYX_ERR(0, 150, __pyx_L3_error) + if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_pyargnames, 0, values, pos_args, "read_stderr") < 0)) __PYX_ERR(0, 147, __pyx_L3_error) } } else { switch (PyTuple_GET_SIZE(__pyx_args)) { @@ -2799,14 +2745,14 @@ static PyObject *__pyx_pw_4ssh2_7channel_7Channel_17read_stderr(PyObject *__pyx_ } } if (values[0]) { - __pyx_v_size = __Pyx_PyInt_As_size_t(values[0]); if (unlikely((__pyx_v_size == (size_t)-1) && PyErr_Occurred())) __PYX_ERR(0, 150, __pyx_L3_error) + __pyx_v_size = __Pyx_PyInt_As_size_t(values[0]); if (unlikely((__pyx_v_size == (size_t)-1) && PyErr_Occurred())) __PYX_ERR(0, 147, __pyx_L3_error) } else { __pyx_v_size = ((size_t)0x400); } } goto __pyx_L4_argument_unpacking_done; __pyx_L5_argtuple_error:; - __Pyx_RaiseArgtupleInvalid("read_stderr", 0, 0, 1, PyTuple_GET_SIZE(__pyx_args)); __PYX_ERR(0, 150, __pyx_L3_error) + __Pyx_RaiseArgtupleInvalid("read_stderr", 0, 0, 1, PyTuple_GET_SIZE(__pyx_args)); __PYX_ERR(0, 147, __pyx_L3_error) __pyx_L3_error:; __Pyx_AddTraceback("ssh2.channel.Channel.read_stderr", __pyx_clineno, __pyx_lineno, __pyx_filename); __Pyx_RefNannyFinishContext(); @@ -2827,7 +2773,7 @@ static PyObject *__pyx_pf_4ssh2_7channel_7Channel_16read_stderr(struct __pyx_obj PyObject *__pyx_t_3 = NULL; __Pyx_RefNannySetupContext("read_stderr", 0); - /* "ssh2/channel.pyx":158 + /* "ssh2/channel.pyx":155 * * :rtype: (int, bytes)""" * return self.read_ex( # <<<<<<<<<<<<<< @@ -2835,35 +2781,35 @@ static PyObject *__pyx_pf_4ssh2_7channel_7Channel_16read_stderr(struct __pyx_obj * */ __Pyx_XDECREF(__pyx_r); - __pyx_t_1 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_self), __pyx_n_s_read_ex); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 158, __pyx_L1_error) + __pyx_t_1 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_self), __pyx_n_s_read_ex); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 155, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_1); - /* "ssh2/channel.pyx":159 + /* "ssh2/channel.pyx":156 * :rtype: (int, bytes)""" * return self.read_ex( * size=size, stream_id=c_ssh2.SSH_EXTENDED_DATA_STDERR) # <<<<<<<<<<<<<< * * def eof(self): */ - __pyx_t_2 = __Pyx_PyDict_NewPresized(2); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 159, __pyx_L1_error) + __pyx_t_2 = __Pyx_PyDict_NewPresized(2); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 156, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_2); - __pyx_t_3 = __Pyx_PyInt_FromSize_t(__pyx_v_size); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 159, __pyx_L1_error) + __pyx_t_3 = __Pyx_PyInt_FromSize_t(__pyx_v_size); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 156, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_3); - if (PyDict_SetItem(__pyx_t_2, __pyx_n_s_size, __pyx_t_3) < 0) __PYX_ERR(0, 159, __pyx_L1_error) + if (PyDict_SetItem(__pyx_t_2, __pyx_n_s_size, __pyx_t_3) < 0) __PYX_ERR(0, 156, __pyx_L1_error) __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; - __pyx_t_3 = __Pyx_PyInt_From_int(SSH_EXTENDED_DATA_STDERR); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 159, __pyx_L1_error) + __pyx_t_3 = __Pyx_PyInt_From_int(SSH_EXTENDED_DATA_STDERR); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 156, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_3); - if (PyDict_SetItem(__pyx_t_2, __pyx_n_s_stream_id, __pyx_t_3) < 0) __PYX_ERR(0, 159, __pyx_L1_error) + if (PyDict_SetItem(__pyx_t_2, __pyx_n_s_stream_id, __pyx_t_3) < 0) __PYX_ERR(0, 156, __pyx_L1_error) __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; - /* "ssh2/channel.pyx":158 + /* "ssh2/channel.pyx":155 * * :rtype: (int, bytes)""" * return self.read_ex( # <<<<<<<<<<<<<< * size=size, stream_id=c_ssh2.SSH_EXTENDED_DATA_STDERR) * */ - __pyx_t_3 = __Pyx_PyObject_Call(__pyx_t_1, __pyx_empty_tuple, __pyx_t_2); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 158, __pyx_L1_error) + __pyx_t_3 = __Pyx_PyObject_Call(__pyx_t_1, __pyx_empty_tuple, __pyx_t_2); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 155, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_3); __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; @@ -2871,7 +2817,7 @@ static PyObject *__pyx_pf_4ssh2_7channel_7Channel_16read_stderr(struct __pyx_obj __pyx_t_3 = 0; goto __pyx_L0; - /* "ssh2/channel.pyx":150 + /* "ssh2/channel.pyx":147 * return rc, buf * * def read_stderr(self, size_t size=1024): # <<<<<<<<<<<<<< @@ -2892,7 +2838,7 @@ static PyObject *__pyx_pf_4ssh2_7channel_7Channel_16read_stderr(struct __pyx_obj return __pyx_r; } -/* "ssh2/channel.pyx":161 +/* "ssh2/channel.pyx":158 * size=size, stream_id=c_ssh2.SSH_EXTENDED_DATA_STDERR) * * def eof(self): # <<<<<<<<<<<<<< @@ -2922,7 +2868,7 @@ static PyObject *__pyx_pf_4ssh2_7channel_7Channel_18eof(struct __pyx_obj_4ssh2_7 int __pyx_t_2; __Pyx_RefNannySetupContext("eof", 0); - /* "ssh2/channel.pyx":166 + /* "ssh2/channel.pyx":163 * :rtype: bool""" * cdef int rc * with nogil: # <<<<<<<<<<<<<< @@ -2937,7 +2883,7 @@ static PyObject *__pyx_pf_4ssh2_7channel_7Channel_18eof(struct __pyx_obj_4ssh2_7 #endif /*try:*/ { - /* "ssh2/channel.pyx":167 + /* "ssh2/channel.pyx":164 * cdef int rc * with nogil: * rc = c_ssh2.libssh2_channel_eof(self._channel) # <<<<<<<<<<<<<< @@ -2947,7 +2893,7 @@ static PyObject *__pyx_pf_4ssh2_7channel_7Channel_18eof(struct __pyx_obj_4ssh2_7 __pyx_v_rc = libssh2_channel_eof(__pyx_v_self->_channel); } - /* "ssh2/channel.pyx":166 + /* "ssh2/channel.pyx":163 * :rtype: bool""" * cdef int rc * with nogil: # <<<<<<<<<<<<<< @@ -2966,7 +2912,7 @@ static PyObject *__pyx_pf_4ssh2_7channel_7Channel_18eof(struct __pyx_obj_4ssh2_7 } } - /* "ssh2/channel.pyx":168 + /* "ssh2/channel.pyx":165 * with nogil: * rc = c_ssh2.libssh2_channel_eof(self._channel) * return bool(rc) # <<<<<<<<<<<<<< @@ -2974,17 +2920,17 @@ static PyObject *__pyx_pf_4ssh2_7channel_7Channel_18eof(struct __pyx_obj_4ssh2_7 * def send_eof(self): */ __Pyx_XDECREF(__pyx_r); - __pyx_t_1 = __Pyx_PyInt_From_int(__pyx_v_rc); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 168, __pyx_L1_error) + __pyx_t_1 = __Pyx_PyInt_From_int(__pyx_v_rc); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 165, __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, 168, __pyx_L1_error) + __pyx_t_2 = __Pyx_PyObject_IsTrue(__pyx_t_1); if (unlikely(__pyx_t_2 < 0)) __PYX_ERR(0, 165, __pyx_L1_error) __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; - __pyx_t_1 = __Pyx_PyBool_FromLong((!(!__pyx_t_2))); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 168, __pyx_L1_error) + __pyx_t_1 = __Pyx_PyBool_FromLong((!(!__pyx_t_2))); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 165, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_1); __pyx_r = __pyx_t_1; __pyx_t_1 = 0; goto __pyx_L0; - /* "ssh2/channel.pyx":161 + /* "ssh2/channel.pyx":158 * size=size, stream_id=c_ssh2.SSH_EXTENDED_DATA_STDERR) * * def eof(self): # <<<<<<<<<<<<<< @@ -3003,7 +2949,7 @@ static PyObject *__pyx_pf_4ssh2_7channel_7Channel_18eof(struct __pyx_obj_4ssh2_7 return __pyx_r; } -/* "ssh2/channel.pyx":170 +/* "ssh2/channel.pyx":167 * return bool(rc) * * def send_eof(self): # <<<<<<<<<<<<<< @@ -3033,7 +2979,7 @@ static PyObject *__pyx_pf_4ssh2_7channel_7Channel_20send_eof(struct __pyx_obj_4s PyObject *__pyx_t_2 = NULL; __Pyx_RefNannySetupContext("send_eof", 0); - /* "ssh2/channel.pyx":181 + /* "ssh2/channel.pyx":178 * """ * cdef int rc * with nogil: # <<<<<<<<<<<<<< @@ -3048,7 +2994,7 @@ static PyObject *__pyx_pf_4ssh2_7channel_7Channel_20send_eof(struct __pyx_obj_4s #endif /*try:*/ { - /* "ssh2/channel.pyx":182 + /* "ssh2/channel.pyx":179 * cdef int rc * with nogil: * rc = c_ssh2.libssh2_channel_send_eof(self._channel) # <<<<<<<<<<<<<< @@ -3058,7 +3004,7 @@ static PyObject *__pyx_pf_4ssh2_7channel_7Channel_20send_eof(struct __pyx_obj_4s __pyx_v_rc = libssh2_channel_send_eof(__pyx_v_self->_channel); } - /* "ssh2/channel.pyx":181 + /* "ssh2/channel.pyx":178 * """ * cdef int rc * with nogil: # <<<<<<<<<<<<<< @@ -3077,7 +3023,7 @@ static PyObject *__pyx_pf_4ssh2_7channel_7Channel_20send_eof(struct __pyx_obj_4s } } - /* "ssh2/channel.pyx":183 + /* "ssh2/channel.pyx":180 * with nogil: * rc = c_ssh2.libssh2_channel_send_eof(self._channel) * return handle_error_codes(rc) # <<<<<<<<<<<<<< @@ -3085,14 +3031,14 @@ static PyObject *__pyx_pf_4ssh2_7channel_7Channel_20send_eof(struct __pyx_obj_4s * def wait_eof(self): */ __Pyx_XDECREF(__pyx_r); - __pyx_t_1 = __pyx_f_4ssh2_5utils_handle_error_codes(__pyx_v_rc, 0); if (unlikely(__pyx_t_1 == ((int)-1))) __PYX_ERR(0, 183, __pyx_L1_error) - __pyx_t_2 = __Pyx_PyInt_From_int(__pyx_t_1); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 183, __pyx_L1_error) + __pyx_t_1 = __pyx_f_4ssh2_5utils_handle_error_codes(__pyx_v_rc, 0); if (unlikely(__pyx_t_1 == ((int)-1))) __PYX_ERR(0, 180, __pyx_L1_error) + __pyx_t_2 = __Pyx_PyInt_From_int(__pyx_t_1); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 180, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_2); __pyx_r = __pyx_t_2; __pyx_t_2 = 0; goto __pyx_L0; - /* "ssh2/channel.pyx":170 + /* "ssh2/channel.pyx":167 * return bool(rc) * * def send_eof(self): # <<<<<<<<<<<<<< @@ -3111,7 +3057,7 @@ static PyObject *__pyx_pf_4ssh2_7channel_7Channel_20send_eof(struct __pyx_obj_4s return __pyx_r; } -/* "ssh2/channel.pyx":185 +/* "ssh2/channel.pyx":182 * return handle_error_codes(rc) * * def wait_eof(self): # <<<<<<<<<<<<<< @@ -3141,7 +3087,7 @@ static PyObject *__pyx_pf_4ssh2_7channel_7Channel_22wait_eof(struct __pyx_obj_4s PyObject *__pyx_t_2 = NULL; __Pyx_RefNannySetupContext("wait_eof", 0); - /* "ssh2/channel.pyx":195 + /* "ssh2/channel.pyx":192 * """ * cdef int rc * with nogil: # <<<<<<<<<<<<<< @@ -3156,7 +3102,7 @@ static PyObject *__pyx_pf_4ssh2_7channel_7Channel_22wait_eof(struct __pyx_obj_4s #endif /*try:*/ { - /* "ssh2/channel.pyx":196 + /* "ssh2/channel.pyx":193 * cdef int rc * with nogil: * rc = c_ssh2.libssh2_channel_wait_eof(self._channel) # <<<<<<<<<<<<<< @@ -3166,7 +3112,7 @@ static PyObject *__pyx_pf_4ssh2_7channel_7Channel_22wait_eof(struct __pyx_obj_4s __pyx_v_rc = libssh2_channel_wait_eof(__pyx_v_self->_channel); } - /* "ssh2/channel.pyx":195 + /* "ssh2/channel.pyx":192 * """ * cdef int rc * with nogil: # <<<<<<<<<<<<<< @@ -3185,7 +3131,7 @@ static PyObject *__pyx_pf_4ssh2_7channel_7Channel_22wait_eof(struct __pyx_obj_4s } } - /* "ssh2/channel.pyx":197 + /* "ssh2/channel.pyx":194 * with nogil: * rc = c_ssh2.libssh2_channel_wait_eof(self._channel) * return handle_error_codes(rc) # <<<<<<<<<<<<<< @@ -3193,14 +3139,14 @@ static PyObject *__pyx_pf_4ssh2_7channel_7Channel_22wait_eof(struct __pyx_obj_4s * def close(self): */ __Pyx_XDECREF(__pyx_r); - __pyx_t_1 = __pyx_f_4ssh2_5utils_handle_error_codes(__pyx_v_rc, 0); if (unlikely(__pyx_t_1 == ((int)-1))) __PYX_ERR(0, 197, __pyx_L1_error) - __pyx_t_2 = __Pyx_PyInt_From_int(__pyx_t_1); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 197, __pyx_L1_error) + __pyx_t_1 = __pyx_f_4ssh2_5utils_handle_error_codes(__pyx_v_rc, 0); if (unlikely(__pyx_t_1 == ((int)-1))) __PYX_ERR(0, 194, __pyx_L1_error) + __pyx_t_2 = __Pyx_PyInt_From_int(__pyx_t_1); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 194, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_2); __pyx_r = __pyx_t_2; __pyx_t_2 = 0; goto __pyx_L0; - /* "ssh2/channel.pyx":185 + /* "ssh2/channel.pyx":182 * return handle_error_codes(rc) * * def wait_eof(self): # <<<<<<<<<<<<<< @@ -3219,7 +3165,7 @@ static PyObject *__pyx_pf_4ssh2_7channel_7Channel_22wait_eof(struct __pyx_obj_4s return __pyx_r; } -/* "ssh2/channel.pyx":199 +/* "ssh2/channel.pyx":196 * return handle_error_codes(rc) * * def close(self): # <<<<<<<<<<<<<< @@ -3249,7 +3195,7 @@ static PyObject *__pyx_pf_4ssh2_7channel_7Channel_24close(struct __pyx_obj_4ssh2 PyObject *__pyx_t_2 = NULL; __Pyx_RefNannySetupContext("close", 0); - /* "ssh2/channel.pyx":202 + /* "ssh2/channel.pyx":199 * """Close channel. Typically done to be able to get exit status.""" * cdef int rc * with nogil: # <<<<<<<<<<<<<< @@ -3264,7 +3210,7 @@ static PyObject *__pyx_pf_4ssh2_7channel_7Channel_24close(struct __pyx_obj_4ssh2 #endif /*try:*/ { - /* "ssh2/channel.pyx":203 + /* "ssh2/channel.pyx":200 * cdef int rc * with nogil: * rc = c_ssh2.libssh2_channel_close(self._channel) # <<<<<<<<<<<<<< @@ -3274,7 +3220,7 @@ static PyObject *__pyx_pf_4ssh2_7channel_7Channel_24close(struct __pyx_obj_4ssh2 __pyx_v_rc = libssh2_channel_close(__pyx_v_self->_channel); } - /* "ssh2/channel.pyx":202 + /* "ssh2/channel.pyx":199 * """Close channel. Typically done to be able to get exit status.""" * cdef int rc * with nogil: # <<<<<<<<<<<<<< @@ -3293,7 +3239,7 @@ static PyObject *__pyx_pf_4ssh2_7channel_7Channel_24close(struct __pyx_obj_4ssh2 } } - /* "ssh2/channel.pyx":204 + /* "ssh2/channel.pyx":201 * with nogil: * rc = c_ssh2.libssh2_channel_close(self._channel) * return handle_error_codes(rc) # <<<<<<<<<<<<<< @@ -3301,14 +3247,14 @@ static PyObject *__pyx_pf_4ssh2_7channel_7Channel_24close(struct __pyx_obj_4ssh2 * def flush(self): */ __Pyx_XDECREF(__pyx_r); - __pyx_t_1 = __pyx_f_4ssh2_5utils_handle_error_codes(__pyx_v_rc, 0); if (unlikely(__pyx_t_1 == ((int)-1))) __PYX_ERR(0, 204, __pyx_L1_error) - __pyx_t_2 = __Pyx_PyInt_From_int(__pyx_t_1); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 204, __pyx_L1_error) + __pyx_t_1 = __pyx_f_4ssh2_5utils_handle_error_codes(__pyx_v_rc, 0); if (unlikely(__pyx_t_1 == ((int)-1))) __PYX_ERR(0, 201, __pyx_L1_error) + __pyx_t_2 = __Pyx_PyInt_From_int(__pyx_t_1); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 201, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_2); __pyx_r = __pyx_t_2; __pyx_t_2 = 0; goto __pyx_L0; - /* "ssh2/channel.pyx":199 + /* "ssh2/channel.pyx":196 * return handle_error_codes(rc) * * def close(self): # <<<<<<<<<<<<<< @@ -3327,7 +3273,7 @@ static PyObject *__pyx_pf_4ssh2_7channel_7Channel_24close(struct __pyx_obj_4ssh2 return __pyx_r; } -/* "ssh2/channel.pyx":206 +/* "ssh2/channel.pyx":203 * return handle_error_codes(rc) * * def flush(self): # <<<<<<<<<<<<<< @@ -3357,7 +3303,7 @@ static PyObject *__pyx_pf_4ssh2_7channel_7Channel_26flush(struct __pyx_obj_4ssh2 PyObject *__pyx_t_2 = NULL; __Pyx_RefNannySetupContext("flush", 0); - /* "ssh2/channel.pyx":209 + /* "ssh2/channel.pyx":206 * """Flush stdout stream""" * cdef int rc * with nogil: # <<<<<<<<<<<<<< @@ -3372,7 +3318,7 @@ static PyObject *__pyx_pf_4ssh2_7channel_7Channel_26flush(struct __pyx_obj_4ssh2 #endif /*try:*/ { - /* "ssh2/channel.pyx":210 + /* "ssh2/channel.pyx":207 * cdef int rc * with nogil: * rc = c_ssh2.libssh2_channel_flush(self._channel) # <<<<<<<<<<<<<< @@ -3382,7 +3328,7 @@ static PyObject *__pyx_pf_4ssh2_7channel_7Channel_26flush(struct __pyx_obj_4ssh2 __pyx_v_rc = libssh2_channel_flush(__pyx_v_self->_channel); } - /* "ssh2/channel.pyx":209 + /* "ssh2/channel.pyx":206 * """Flush stdout stream""" * cdef int rc * with nogil: # <<<<<<<<<<<<<< @@ -3401,7 +3347,7 @@ static PyObject *__pyx_pf_4ssh2_7channel_7Channel_26flush(struct __pyx_obj_4ssh2 } } - /* "ssh2/channel.pyx":211 + /* "ssh2/channel.pyx":208 * with nogil: * rc = c_ssh2.libssh2_channel_flush(self._channel) * return handle_error_codes(rc) # <<<<<<<<<<<<<< @@ -3409,14 +3355,14 @@ static PyObject *__pyx_pf_4ssh2_7channel_7Channel_26flush(struct __pyx_obj_4ssh2 * def flush_ex(self, int stream_id): */ __Pyx_XDECREF(__pyx_r); - __pyx_t_1 = __pyx_f_4ssh2_5utils_handle_error_codes(__pyx_v_rc, 0); if (unlikely(__pyx_t_1 == ((int)-1))) __PYX_ERR(0, 211, __pyx_L1_error) - __pyx_t_2 = __Pyx_PyInt_From_int(__pyx_t_1); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 211, __pyx_L1_error) + __pyx_t_1 = __pyx_f_4ssh2_5utils_handle_error_codes(__pyx_v_rc, 0); if (unlikely(__pyx_t_1 == ((int)-1))) __PYX_ERR(0, 208, __pyx_L1_error) + __pyx_t_2 = __Pyx_PyInt_From_int(__pyx_t_1); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 208, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_2); __pyx_r = __pyx_t_2; __pyx_t_2 = 0; goto __pyx_L0; - /* "ssh2/channel.pyx":206 + /* "ssh2/channel.pyx":203 * return handle_error_codes(rc) * * def flush(self): # <<<<<<<<<<<<<< @@ -3435,7 +3381,7 @@ static PyObject *__pyx_pf_4ssh2_7channel_7Channel_26flush(struct __pyx_obj_4ssh2 return __pyx_r; } -/* "ssh2/channel.pyx":213 +/* "ssh2/channel.pyx":210 * return handle_error_codes(rc) * * def flush_ex(self, int stream_id): # <<<<<<<<<<<<<< @@ -3452,7 +3398,7 @@ static PyObject *__pyx_pw_4ssh2_7channel_7Channel_29flush_ex(PyObject *__pyx_v_s __Pyx_RefNannyDeclarations __Pyx_RefNannySetupContext("flush_ex (wrapper)", 0); assert(__pyx_arg_stream_id); { - __pyx_v_stream_id = __Pyx_PyInt_As_int(__pyx_arg_stream_id); if (unlikely((__pyx_v_stream_id == (int)-1) && PyErr_Occurred())) __PYX_ERR(0, 213, __pyx_L3_error) + __pyx_v_stream_id = __Pyx_PyInt_As_int(__pyx_arg_stream_id); if (unlikely((__pyx_v_stream_id == (int)-1) && PyErr_Occurred())) __PYX_ERR(0, 210, __pyx_L3_error) } goto __pyx_L4_argument_unpacking_done; __pyx_L3_error:; @@ -3475,7 +3421,7 @@ static PyObject *__pyx_pf_4ssh2_7channel_7Channel_28flush_ex(struct __pyx_obj_4s PyObject *__pyx_t_2 = NULL; __Pyx_RefNannySetupContext("flush_ex", 0); - /* "ssh2/channel.pyx":216 + /* "ssh2/channel.pyx":213 * """Flush stream with id""" * cdef int rc * with nogil: # <<<<<<<<<<<<<< @@ -3490,7 +3436,7 @@ static PyObject *__pyx_pf_4ssh2_7channel_7Channel_28flush_ex(struct __pyx_obj_4s #endif /*try:*/ { - /* "ssh2/channel.pyx":217 + /* "ssh2/channel.pyx":214 * cdef int rc * with nogil: * rc = c_ssh2.libssh2_channel_flush_ex(self._channel, stream_id) # <<<<<<<<<<<<<< @@ -3500,7 +3446,7 @@ static PyObject *__pyx_pf_4ssh2_7channel_7Channel_28flush_ex(struct __pyx_obj_4s __pyx_v_rc = libssh2_channel_flush_ex(__pyx_v_self->_channel, __pyx_v_stream_id); } - /* "ssh2/channel.pyx":216 + /* "ssh2/channel.pyx":213 * """Flush stream with id""" * cdef int rc * with nogil: # <<<<<<<<<<<<<< @@ -3519,7 +3465,7 @@ static PyObject *__pyx_pf_4ssh2_7channel_7Channel_28flush_ex(struct __pyx_obj_4s } } - /* "ssh2/channel.pyx":218 + /* "ssh2/channel.pyx":215 * with nogil: * rc = c_ssh2.libssh2_channel_flush_ex(self._channel, stream_id) * return handle_error_codes(rc) # <<<<<<<<<<<<<< @@ -3527,14 +3473,14 @@ static PyObject *__pyx_pf_4ssh2_7channel_7Channel_28flush_ex(struct __pyx_obj_4s * def flush_stderr(self): */ __Pyx_XDECREF(__pyx_r); - __pyx_t_1 = __pyx_f_4ssh2_5utils_handle_error_codes(__pyx_v_rc, 0); if (unlikely(__pyx_t_1 == ((int)-1))) __PYX_ERR(0, 218, __pyx_L1_error) - __pyx_t_2 = __Pyx_PyInt_From_int(__pyx_t_1); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 218, __pyx_L1_error) + __pyx_t_1 = __pyx_f_4ssh2_5utils_handle_error_codes(__pyx_v_rc, 0); if (unlikely(__pyx_t_1 == ((int)-1))) __PYX_ERR(0, 215, __pyx_L1_error) + __pyx_t_2 = __Pyx_PyInt_From_int(__pyx_t_1); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 215, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_2); __pyx_r = __pyx_t_2; __pyx_t_2 = 0; goto __pyx_L0; - /* "ssh2/channel.pyx":213 + /* "ssh2/channel.pyx":210 * return handle_error_codes(rc) * * def flush_ex(self, int stream_id): # <<<<<<<<<<<<<< @@ -3553,7 +3499,7 @@ static PyObject *__pyx_pf_4ssh2_7channel_7Channel_28flush_ex(struct __pyx_obj_4s return __pyx_r; } -/* "ssh2/channel.pyx":220 +/* "ssh2/channel.pyx":217 * return handle_error_codes(rc) * * def flush_stderr(self): # <<<<<<<<<<<<<< @@ -3583,7 +3529,7 @@ static PyObject *__pyx_pf_4ssh2_7channel_7Channel_30flush_stderr(struct __pyx_ob PyObject *__pyx_t_2 = NULL; __Pyx_RefNannySetupContext("flush_stderr", 0); - /* "ssh2/channel.pyx":223 + /* "ssh2/channel.pyx":220 * """Flush stderr stream""" * cdef int rc * with nogil: # <<<<<<<<<<<<<< @@ -3598,7 +3544,7 @@ static PyObject *__pyx_pf_4ssh2_7channel_7Channel_30flush_stderr(struct __pyx_ob #endif /*try:*/ { - /* "ssh2/channel.pyx":224 + /* "ssh2/channel.pyx":221 * cdef int rc * with nogil: * rc = c_ssh2.libssh2_channel_flush_stderr(self._channel) # <<<<<<<<<<<<<< @@ -3608,7 +3554,7 @@ static PyObject *__pyx_pf_4ssh2_7channel_7Channel_30flush_stderr(struct __pyx_ob __pyx_v_rc = libssh2_channel_flush_stderr(__pyx_v_self->_channel); } - /* "ssh2/channel.pyx":223 + /* "ssh2/channel.pyx":220 * """Flush stderr stream""" * cdef int rc * with nogil: # <<<<<<<<<<<<<< @@ -3627,7 +3573,7 @@ static PyObject *__pyx_pf_4ssh2_7channel_7Channel_30flush_stderr(struct __pyx_ob } } - /* "ssh2/channel.pyx":225 + /* "ssh2/channel.pyx":222 * with nogil: * rc = c_ssh2.libssh2_channel_flush_stderr(self._channel) * return handle_error_codes(rc) # <<<<<<<<<<<<<< @@ -3635,14 +3581,14 @@ static PyObject *__pyx_pf_4ssh2_7channel_7Channel_30flush_stderr(struct __pyx_ob * def wait_closed(self): */ __Pyx_XDECREF(__pyx_r); - __pyx_t_1 = __pyx_f_4ssh2_5utils_handle_error_codes(__pyx_v_rc, 0); if (unlikely(__pyx_t_1 == ((int)-1))) __PYX_ERR(0, 225, __pyx_L1_error) - __pyx_t_2 = __Pyx_PyInt_From_int(__pyx_t_1); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 225, __pyx_L1_error) + __pyx_t_1 = __pyx_f_4ssh2_5utils_handle_error_codes(__pyx_v_rc, 0); if (unlikely(__pyx_t_1 == ((int)-1))) __PYX_ERR(0, 222, __pyx_L1_error) + __pyx_t_2 = __Pyx_PyInt_From_int(__pyx_t_1); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 222, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_2); __pyx_r = __pyx_t_2; __pyx_t_2 = 0; goto __pyx_L0; - /* "ssh2/channel.pyx":220 + /* "ssh2/channel.pyx":217 * return handle_error_codes(rc) * * def flush_stderr(self): # <<<<<<<<<<<<<< @@ -3661,7 +3607,7 @@ static PyObject *__pyx_pf_4ssh2_7channel_7Channel_30flush_stderr(struct __pyx_ob return __pyx_r; } -/* "ssh2/channel.pyx":227 +/* "ssh2/channel.pyx":224 * return handle_error_codes(rc) * * def wait_closed(self): # <<<<<<<<<<<<<< @@ -3691,7 +3637,7 @@ static PyObject *__pyx_pf_4ssh2_7channel_7Channel_32wait_closed(struct __pyx_obj PyObject *__pyx_t_2 = NULL; __Pyx_RefNannySetupContext("wait_closed", 0); - /* "ssh2/channel.pyx":230 + /* "ssh2/channel.pyx":227 * """Wait for server to acknowledge channel close command.""" * cdef int rc * with nogil: # <<<<<<<<<<<<<< @@ -3706,7 +3652,7 @@ static PyObject *__pyx_pf_4ssh2_7channel_7Channel_32wait_closed(struct __pyx_obj #endif /*try:*/ { - /* "ssh2/channel.pyx":231 + /* "ssh2/channel.pyx":228 * cdef int rc * with nogil: * rc = c_ssh2.libssh2_channel_wait_closed(self._channel) # <<<<<<<<<<<<<< @@ -3716,7 +3662,7 @@ static PyObject *__pyx_pf_4ssh2_7channel_7Channel_32wait_closed(struct __pyx_obj __pyx_v_rc = libssh2_channel_wait_closed(__pyx_v_self->_channel); } - /* "ssh2/channel.pyx":230 + /* "ssh2/channel.pyx":227 * """Wait for server to acknowledge channel close command.""" * cdef int rc * with nogil: # <<<<<<<<<<<<<< @@ -3735,7 +3681,7 @@ static PyObject *__pyx_pf_4ssh2_7channel_7Channel_32wait_closed(struct __pyx_obj } } - /* "ssh2/channel.pyx":232 + /* "ssh2/channel.pyx":229 * with nogil: * rc = c_ssh2.libssh2_channel_wait_closed(self._channel) * return handle_error_codes(rc) # <<<<<<<<<<<<<< @@ -3743,14 +3689,14 @@ static PyObject *__pyx_pf_4ssh2_7channel_7Channel_32wait_closed(struct __pyx_obj * def get_exit_status(self): */ __Pyx_XDECREF(__pyx_r); - __pyx_t_1 = __pyx_f_4ssh2_5utils_handle_error_codes(__pyx_v_rc, 0); if (unlikely(__pyx_t_1 == ((int)-1))) __PYX_ERR(0, 232, __pyx_L1_error) - __pyx_t_2 = __Pyx_PyInt_From_int(__pyx_t_1); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 232, __pyx_L1_error) + __pyx_t_1 = __pyx_f_4ssh2_5utils_handle_error_codes(__pyx_v_rc, 0); if (unlikely(__pyx_t_1 == ((int)-1))) __PYX_ERR(0, 229, __pyx_L1_error) + __pyx_t_2 = __Pyx_PyInt_From_int(__pyx_t_1); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 229, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_2); __pyx_r = __pyx_t_2; __pyx_t_2 = 0; goto __pyx_L0; - /* "ssh2/channel.pyx":227 + /* "ssh2/channel.pyx":224 * return handle_error_codes(rc) * * def wait_closed(self): # <<<<<<<<<<<<<< @@ -3769,7 +3715,7 @@ static PyObject *__pyx_pf_4ssh2_7channel_7Channel_32wait_closed(struct __pyx_obj return __pyx_r; } -/* "ssh2/channel.pyx":234 +/* "ssh2/channel.pyx":231 * return handle_error_codes(rc) * * def get_exit_status(self): # <<<<<<<<<<<<<< @@ -3799,7 +3745,7 @@ static PyObject *__pyx_pf_4ssh2_7channel_7Channel_34get_exit_status(struct __pyx PyObject *__pyx_t_2 = NULL; __Pyx_RefNannySetupContext("get_exit_status", 0); - /* "ssh2/channel.pyx":242 + /* "ssh2/channel.pyx":239 * ``0`` indicates failure or an actual exit status of ``0``""" * cdef int rc * with nogil: # <<<<<<<<<<<<<< @@ -3814,7 +3760,7 @@ static PyObject *__pyx_pf_4ssh2_7channel_7Channel_34get_exit_status(struct __pyx #endif /*try:*/ { - /* "ssh2/channel.pyx":243 + /* "ssh2/channel.pyx":240 * cdef int rc * with nogil: * rc = c_ssh2.libssh2_channel_get_exit_status(self._channel) # <<<<<<<<<<<<<< @@ -3824,7 +3770,7 @@ static PyObject *__pyx_pf_4ssh2_7channel_7Channel_34get_exit_status(struct __pyx __pyx_v_rc = libssh2_channel_get_exit_status(__pyx_v_self->_channel); } - /* "ssh2/channel.pyx":242 + /* "ssh2/channel.pyx":239 * ``0`` indicates failure or an actual exit status of ``0``""" * cdef int rc * with nogil: # <<<<<<<<<<<<<< @@ -3843,7 +3789,7 @@ static PyObject *__pyx_pf_4ssh2_7channel_7Channel_34get_exit_status(struct __pyx } } - /* "ssh2/channel.pyx":244 + /* "ssh2/channel.pyx":241 * with nogil: * rc = c_ssh2.libssh2_channel_get_exit_status(self._channel) * return handle_error_codes(rc) # <<<<<<<<<<<<<< @@ -3851,14 +3797,14 @@ static PyObject *__pyx_pf_4ssh2_7channel_7Channel_34get_exit_status(struct __pyx * def get_exit_signal(self): */ __Pyx_XDECREF(__pyx_r); - __pyx_t_1 = __pyx_f_4ssh2_5utils_handle_error_codes(__pyx_v_rc, 0); if (unlikely(__pyx_t_1 == ((int)-1))) __PYX_ERR(0, 244, __pyx_L1_error) - __pyx_t_2 = __Pyx_PyInt_From_int(__pyx_t_1); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 244, __pyx_L1_error) + __pyx_t_1 = __pyx_f_4ssh2_5utils_handle_error_codes(__pyx_v_rc, 0); if (unlikely(__pyx_t_1 == ((int)-1))) __PYX_ERR(0, 241, __pyx_L1_error) + __pyx_t_2 = __Pyx_PyInt_From_int(__pyx_t_1); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 241, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_2); __pyx_r = __pyx_t_2; __pyx_t_2 = 0; goto __pyx_L0; - /* "ssh2/channel.pyx":234 + /* "ssh2/channel.pyx":231 * return handle_error_codes(rc) * * def get_exit_status(self): # <<<<<<<<<<<<<< @@ -3877,7 +3823,7 @@ static PyObject *__pyx_pf_4ssh2_7channel_7Channel_34get_exit_status(struct __pyx return __pyx_r; } -/* "ssh2/channel.pyx":246 +/* "ssh2/channel.pyx":243 * return handle_error_codes(rc) * * def get_exit_signal(self): # <<<<<<<<<<<<<< @@ -3921,7 +3867,7 @@ static PyObject *__pyx_pf_4ssh2_7channel_7Channel_36get_exit_signal(struct __pyx PyObject *__pyx_t_4 = NULL; __Pyx_RefNannySetupContext("get_exit_signal", 0); - /* "ssh2/channel.pyx":253 + /* "ssh2/channel.pyx":250 * * :rtype: tuple(int, bytes, bytes, bytes)""" * cdef char *exitsignal = b'none' # <<<<<<<<<<<<<< @@ -3930,7 +3876,7 @@ static PyObject *__pyx_pf_4ssh2_7channel_7Channel_36get_exit_signal(struct __pyx */ __pyx_v_exitsignal = ((char *)((char *)"none")); - /* "ssh2/channel.pyx":254 + /* "ssh2/channel.pyx":251 * :rtype: tuple(int, bytes, bytes, bytes)""" * cdef char *exitsignal = b'none' * cdef size_t *exitsignal_len = 0 # <<<<<<<<<<<<<< @@ -3939,7 +3885,7 @@ static PyObject *__pyx_pf_4ssh2_7channel_7Channel_36get_exit_signal(struct __pyx */ __pyx_v_exitsignal_len = ((size_t *)0); - /* "ssh2/channel.pyx":255 + /* "ssh2/channel.pyx":252 * cdef char *exitsignal = b'none' * cdef size_t *exitsignal_len = 0 * cdef char *errmsg = b'none' # <<<<<<<<<<<<<< @@ -3948,7 +3894,7 @@ static PyObject *__pyx_pf_4ssh2_7channel_7Channel_36get_exit_signal(struct __pyx */ __pyx_v_errmsg = ((char *)((char *)"none")); - /* "ssh2/channel.pyx":256 + /* "ssh2/channel.pyx":253 * cdef size_t *exitsignal_len = 0 * cdef char *errmsg = b'none' * cdef size_t *errmsg_len = 0 # <<<<<<<<<<<<<< @@ -3957,7 +3903,7 @@ static PyObject *__pyx_pf_4ssh2_7channel_7Channel_36get_exit_signal(struct __pyx */ __pyx_v_errmsg_len = ((size_t *)0); - /* "ssh2/channel.pyx":257 + /* "ssh2/channel.pyx":254 * cdef char *errmsg = b'none' * cdef size_t *errmsg_len = 0 * cdef char *langtag = b'none' # <<<<<<<<<<<<<< @@ -3966,7 +3912,7 @@ static PyObject *__pyx_pf_4ssh2_7channel_7Channel_36get_exit_signal(struct __pyx */ __pyx_v_langtag = ((char *)((char *)"none")); - /* "ssh2/channel.pyx":258 + /* "ssh2/channel.pyx":255 * cdef size_t *errmsg_len = 0 * cdef char *langtag = b'none' * cdef size_t *langtag_len = 0 # <<<<<<<<<<<<<< @@ -3975,7 +3921,7 @@ static PyObject *__pyx_pf_4ssh2_7channel_7Channel_36get_exit_signal(struct __pyx */ __pyx_v_langtag_len = ((size_t *)0); - /* "ssh2/channel.pyx":260 + /* "ssh2/channel.pyx":257 * cdef size_t *langtag_len = 0 * cdef int rc * cdef bytes py_exitsignal = None # <<<<<<<<<<<<<< @@ -3985,7 +3931,7 @@ static PyObject *__pyx_pf_4ssh2_7channel_7Channel_36get_exit_signal(struct __pyx __Pyx_INCREF(Py_None); __pyx_v_py_exitsignal = ((PyObject*)Py_None); - /* "ssh2/channel.pyx":261 + /* "ssh2/channel.pyx":258 * cdef int rc * cdef bytes py_exitsignal = None * cdef bytes py_errmsg = None # <<<<<<<<<<<<<< @@ -3995,7 +3941,7 @@ static PyObject *__pyx_pf_4ssh2_7channel_7Channel_36get_exit_signal(struct __pyx __Pyx_INCREF(Py_None); __pyx_v_py_errmsg = ((PyObject*)Py_None); - /* "ssh2/channel.pyx":262 + /* "ssh2/channel.pyx":259 * cdef bytes py_exitsignal = None * cdef bytes py_errmsg = None * cdef bytes py_langtag = None # <<<<<<<<<<<<<< @@ -4005,7 +3951,7 @@ static PyObject *__pyx_pf_4ssh2_7channel_7Channel_36get_exit_signal(struct __pyx __Pyx_INCREF(Py_None); __pyx_v_py_langtag = ((PyObject*)Py_None); - /* "ssh2/channel.pyx":263 + /* "ssh2/channel.pyx":260 * cdef bytes py_errmsg = None * cdef bytes py_langtag = None * cdef size_t py_siglen = 0 # <<<<<<<<<<<<<< @@ -4014,7 +3960,7 @@ static PyObject *__pyx_pf_4ssh2_7channel_7Channel_36get_exit_signal(struct __pyx */ __pyx_v_py_siglen = 0; - /* "ssh2/channel.pyx":264 + /* "ssh2/channel.pyx":261 * cdef bytes py_langtag = None * cdef size_t py_siglen = 0 * cdef size_t py_errlen = 0 # <<<<<<<<<<<<<< @@ -4023,7 +3969,7 @@ static PyObject *__pyx_pf_4ssh2_7channel_7Channel_36get_exit_signal(struct __pyx */ __pyx_v_py_errlen = 0; - /* "ssh2/channel.pyx":265 + /* "ssh2/channel.pyx":262 * cdef size_t py_siglen = 0 * cdef size_t py_errlen = 0 * cdef size_t py_langlen = 0 # <<<<<<<<<<<<<< @@ -4032,7 +3978,7 @@ static PyObject *__pyx_pf_4ssh2_7channel_7Channel_36get_exit_signal(struct __pyx */ __pyx_v_py_langlen = 0; - /* "ssh2/channel.pyx":266 + /* "ssh2/channel.pyx":263 * cdef size_t py_errlen = 0 * cdef size_t py_langlen = 0 * with nogil: # <<<<<<<<<<<<<< @@ -4047,7 +3993,7 @@ static PyObject *__pyx_pf_4ssh2_7channel_7Channel_36get_exit_signal(struct __pyx #endif /*try:*/ { - /* "ssh2/channel.pyx":267 + /* "ssh2/channel.pyx":264 * cdef size_t py_langlen = 0 * with nogil: * rc = c_ssh2.libssh2_channel_get_exit_signal( # <<<<<<<<<<<<<< @@ -4056,7 +4002,7 @@ static PyObject *__pyx_pf_4ssh2_7channel_7Channel_36get_exit_signal(struct __pyx */ __pyx_v_rc = libssh2_channel_get_exit_signal(__pyx_v_self->_channel, (&__pyx_v_exitsignal), __pyx_v_exitsignal_len, (&__pyx_v_errmsg), __pyx_v_errmsg_len, (&__pyx_v_langtag), __pyx_v_langtag_len); - /* "ssh2/channel.pyx":270 + /* "ssh2/channel.pyx":267 * self._channel, &exitsignal, exitsignal_len, &errmsg, * errmsg_len, &langtag, langtag_len) * if exitsignal_len is not NULL: # <<<<<<<<<<<<<< @@ -4066,7 +4012,7 @@ static PyObject *__pyx_pf_4ssh2_7channel_7Channel_36get_exit_signal(struct __pyx __pyx_t_1 = ((__pyx_v_exitsignal_len != NULL) != 0); if (__pyx_t_1) { - /* "ssh2/channel.pyx":271 + /* "ssh2/channel.pyx":268 * errmsg_len, &langtag, langtag_len) * if exitsignal_len is not NULL: * py_siglen = exitsignal_len # <<<<<<<<<<<<<< @@ -4075,7 +4021,7 @@ static PyObject *__pyx_pf_4ssh2_7channel_7Channel_36get_exit_signal(struct __pyx */ __pyx_v_py_siglen = ((size_t)__pyx_v_exitsignal_len); - /* "ssh2/channel.pyx":270 + /* "ssh2/channel.pyx":267 * self._channel, &exitsignal, exitsignal_len, &errmsg, * errmsg_len, &langtag, langtag_len) * if exitsignal_len is not NULL: # <<<<<<<<<<<<<< @@ -4084,7 +4030,7 @@ static PyObject *__pyx_pf_4ssh2_7channel_7Channel_36get_exit_signal(struct __pyx */ } - /* "ssh2/channel.pyx":272 + /* "ssh2/channel.pyx":269 * if exitsignal_len is not NULL: * py_siglen = exitsignal_len * if errmsg_len is not NULL: # <<<<<<<<<<<<<< @@ -4094,7 +4040,7 @@ static PyObject *__pyx_pf_4ssh2_7channel_7Channel_36get_exit_signal(struct __pyx __pyx_t_1 = ((__pyx_v_errmsg_len != NULL) != 0); if (__pyx_t_1) { - /* "ssh2/channel.pyx":273 + /* "ssh2/channel.pyx":270 * py_siglen = exitsignal_len * if errmsg_len is not NULL: * py_errlen = errmsg_len # <<<<<<<<<<<<<< @@ -4103,7 +4049,7 @@ static PyObject *__pyx_pf_4ssh2_7channel_7Channel_36get_exit_signal(struct __pyx */ __pyx_v_py_errlen = ((size_t)__pyx_v_errmsg_len); - /* "ssh2/channel.pyx":272 + /* "ssh2/channel.pyx":269 * if exitsignal_len is not NULL: * py_siglen = exitsignal_len * if errmsg_len is not NULL: # <<<<<<<<<<<<<< @@ -4112,7 +4058,7 @@ static PyObject *__pyx_pf_4ssh2_7channel_7Channel_36get_exit_signal(struct __pyx */ } - /* "ssh2/channel.pyx":274 + /* "ssh2/channel.pyx":271 * if errmsg_len is not NULL: * py_errlen = errmsg_len * if langtag_len is not NULL: # <<<<<<<<<<<<<< @@ -4122,7 +4068,7 @@ static PyObject *__pyx_pf_4ssh2_7channel_7Channel_36get_exit_signal(struct __pyx __pyx_t_1 = ((__pyx_v_langtag_len != NULL) != 0); if (__pyx_t_1) { - /* "ssh2/channel.pyx":275 + /* "ssh2/channel.pyx":272 * py_errlen = errmsg_len * if langtag_len is not NULL: * py_langlen = langtag_len # <<<<<<<<<<<<<< @@ -4131,7 +4077,7 @@ static PyObject *__pyx_pf_4ssh2_7channel_7Channel_36get_exit_signal(struct __pyx */ __pyx_v_py_langlen = ((size_t)__pyx_v_langtag_len); - /* "ssh2/channel.pyx":274 + /* "ssh2/channel.pyx":271 * if errmsg_len is not NULL: * py_errlen = errmsg_len * if langtag_len is not NULL: # <<<<<<<<<<<<<< @@ -4141,7 +4087,7 @@ static PyObject *__pyx_pf_4ssh2_7channel_7Channel_36get_exit_signal(struct __pyx } } - /* "ssh2/channel.pyx":266 + /* "ssh2/channel.pyx":263 * cdef size_t py_errlen = 0 * cdef size_t py_langlen = 0 * with nogil: # <<<<<<<<<<<<<< @@ -4160,7 +4106,7 @@ static PyObject *__pyx_pf_4ssh2_7channel_7Channel_36get_exit_signal(struct __pyx } } - /* "ssh2/channel.pyx":276 + /* "ssh2/channel.pyx":273 * if langtag_len is not NULL: * py_langlen = langtag_len * if py_siglen > 0: # <<<<<<<<<<<<<< @@ -4170,19 +4116,19 @@ static PyObject *__pyx_pf_4ssh2_7channel_7Channel_36get_exit_signal(struct __pyx __pyx_t_1 = ((__pyx_v_py_siglen > 0) != 0); if (__pyx_t_1) { - /* "ssh2/channel.pyx":277 + /* "ssh2/channel.pyx":274 * py_langlen = langtag_len * if py_siglen > 0: * py_exitsignal = exitsignal[:py_siglen] # <<<<<<<<<<<<<< * if py_errlen > 0: * py_errmsg = errmsg[:py_errlen] */ - __pyx_t_2 = __Pyx_PyBytes_FromStringAndSize(__pyx_v_exitsignal + 0, __pyx_v_py_siglen - 0); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 277, __pyx_L1_error) + __pyx_t_2 = __Pyx_PyBytes_FromStringAndSize(__pyx_v_exitsignal + 0, __pyx_v_py_siglen - 0); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 274, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_2); __Pyx_DECREF_SET(__pyx_v_py_exitsignal, ((PyObject*)__pyx_t_2)); __pyx_t_2 = 0; - /* "ssh2/channel.pyx":276 + /* "ssh2/channel.pyx":273 * if langtag_len is not NULL: * py_langlen = langtag_len * if py_siglen > 0: # <<<<<<<<<<<<<< @@ -4191,7 +4137,7 @@ static PyObject *__pyx_pf_4ssh2_7channel_7Channel_36get_exit_signal(struct __pyx */ } - /* "ssh2/channel.pyx":278 + /* "ssh2/channel.pyx":275 * if py_siglen > 0: * py_exitsignal = exitsignal[:py_siglen] * if py_errlen > 0: # <<<<<<<<<<<<<< @@ -4201,19 +4147,19 @@ static PyObject *__pyx_pf_4ssh2_7channel_7Channel_36get_exit_signal(struct __pyx __pyx_t_1 = ((__pyx_v_py_errlen > 0) != 0); if (__pyx_t_1) { - /* "ssh2/channel.pyx":279 + /* "ssh2/channel.pyx":276 * py_exitsignal = exitsignal[:py_siglen] * if py_errlen > 0: * py_errmsg = errmsg[:py_errlen] # <<<<<<<<<<<<<< * if py_langlen > 0: * py_langtag = langtag[:py_langlen] */ - __pyx_t_2 = __Pyx_PyBytes_FromStringAndSize(__pyx_v_errmsg + 0, __pyx_v_py_errlen - 0); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 279, __pyx_L1_error) + __pyx_t_2 = __Pyx_PyBytes_FromStringAndSize(__pyx_v_errmsg + 0, __pyx_v_py_errlen - 0); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 276, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_2); __Pyx_DECREF_SET(__pyx_v_py_errmsg, ((PyObject*)__pyx_t_2)); __pyx_t_2 = 0; - /* "ssh2/channel.pyx":278 + /* "ssh2/channel.pyx":275 * if py_siglen > 0: * py_exitsignal = exitsignal[:py_siglen] * if py_errlen > 0: # <<<<<<<<<<<<<< @@ -4222,7 +4168,7 @@ static PyObject *__pyx_pf_4ssh2_7channel_7Channel_36get_exit_signal(struct __pyx */ } - /* "ssh2/channel.pyx":280 + /* "ssh2/channel.pyx":277 * if py_errlen > 0: * py_errmsg = errmsg[:py_errlen] * if py_langlen > 0: # <<<<<<<<<<<<<< @@ -4232,19 +4178,19 @@ static PyObject *__pyx_pf_4ssh2_7channel_7Channel_36get_exit_signal(struct __pyx __pyx_t_1 = ((__pyx_v_py_langlen > 0) != 0); if (__pyx_t_1) { - /* "ssh2/channel.pyx":281 + /* "ssh2/channel.pyx":278 * py_errmsg = errmsg[:py_errlen] * if py_langlen > 0: * py_langtag = langtag[:py_langlen] # <<<<<<<<<<<<<< * return handle_error_codes(rc), py_exitsignal, py_errmsg, py_langtag * */ - __pyx_t_2 = __Pyx_PyBytes_FromStringAndSize(__pyx_v_langtag + 0, __pyx_v_py_langlen - 0); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 281, __pyx_L1_error) + __pyx_t_2 = __Pyx_PyBytes_FromStringAndSize(__pyx_v_langtag + 0, __pyx_v_py_langlen - 0); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 278, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_2); __Pyx_DECREF_SET(__pyx_v_py_langtag, ((PyObject*)__pyx_t_2)); __pyx_t_2 = 0; - /* "ssh2/channel.pyx":280 + /* "ssh2/channel.pyx":277 * if py_errlen > 0: * py_errmsg = errmsg[:py_errlen] * if py_langlen > 0: # <<<<<<<<<<<<<< @@ -4253,7 +4199,7 @@ static PyObject *__pyx_pf_4ssh2_7channel_7Channel_36get_exit_signal(struct __pyx */ } - /* "ssh2/channel.pyx":282 + /* "ssh2/channel.pyx":279 * if py_langlen > 0: * py_langtag = langtag[:py_langlen] * return handle_error_codes(rc), py_exitsignal, py_errmsg, py_langtag # <<<<<<<<<<<<<< @@ -4261,10 +4207,10 @@ static PyObject *__pyx_pf_4ssh2_7channel_7Channel_36get_exit_signal(struct __pyx * def setenv(self, varname not None, value not None): */ __Pyx_XDECREF(__pyx_r); - __pyx_t_3 = __pyx_f_4ssh2_5utils_handle_error_codes(__pyx_v_rc, 0); if (unlikely(__pyx_t_3 == ((int)-1))) __PYX_ERR(0, 282, __pyx_L1_error) - __pyx_t_2 = __Pyx_PyInt_From_int(__pyx_t_3); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 282, __pyx_L1_error) + __pyx_t_3 = __pyx_f_4ssh2_5utils_handle_error_codes(__pyx_v_rc, 0); if (unlikely(__pyx_t_3 == ((int)-1))) __PYX_ERR(0, 279, __pyx_L1_error) + __pyx_t_2 = __Pyx_PyInt_From_int(__pyx_t_3); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 279, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_2); - __pyx_t_4 = PyTuple_New(4); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 282, __pyx_L1_error) + __pyx_t_4 = PyTuple_New(4); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 279, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_4); __Pyx_GIVEREF(__pyx_t_2); PyTuple_SET_ITEM(__pyx_t_4, 0, __pyx_t_2); @@ -4282,7 +4228,7 @@ static PyObject *__pyx_pf_4ssh2_7channel_7Channel_36get_exit_signal(struct __pyx __pyx_t_4 = 0; goto __pyx_L0; - /* "ssh2/channel.pyx":246 + /* "ssh2/channel.pyx":243 * return handle_error_codes(rc) * * def get_exit_signal(self): # <<<<<<<<<<<<<< @@ -4305,7 +4251,7 @@ static PyObject *__pyx_pf_4ssh2_7channel_7Channel_36get_exit_signal(struct __pyx return __pyx_r; } -/* "ssh2/channel.pyx":284 +/* "ssh2/channel.pyx":281 * return handle_error_codes(rc), py_exitsignal, py_errmsg, py_langtag * * def setenv(self, varname not None, value not None): # <<<<<<<<<<<<<< @@ -4345,11 +4291,11 @@ static PyObject *__pyx_pw_4ssh2_7channel_7Channel_39setenv(PyObject *__pyx_v_sel case 1: if (likely((values[1] = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_value)) != 0)) kw_args--; else { - __Pyx_RaiseArgtupleInvalid("setenv", 1, 2, 2, 1); __PYX_ERR(0, 284, __pyx_L3_error) + __Pyx_RaiseArgtupleInvalid("setenv", 1, 2, 2, 1); __PYX_ERR(0, 281, __pyx_L3_error) } } if (unlikely(kw_args > 0)) { - if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_pyargnames, 0, values, pos_args, "setenv") < 0)) __PYX_ERR(0, 284, __pyx_L3_error) + if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_pyargnames, 0, values, pos_args, "setenv") < 0)) __PYX_ERR(0, 281, __pyx_L3_error) } } else if (PyTuple_GET_SIZE(__pyx_args) != 2) { goto __pyx_L5_argtuple_error; @@ -4362,17 +4308,17 @@ static PyObject *__pyx_pw_4ssh2_7channel_7Channel_39setenv(PyObject *__pyx_v_sel } goto __pyx_L4_argument_unpacking_done; __pyx_L5_argtuple_error:; - __Pyx_RaiseArgtupleInvalid("setenv", 1, 2, 2, PyTuple_GET_SIZE(__pyx_args)); __PYX_ERR(0, 284, __pyx_L3_error) + __Pyx_RaiseArgtupleInvalid("setenv", 1, 2, 2, PyTuple_GET_SIZE(__pyx_args)); __PYX_ERR(0, 281, __pyx_L3_error) __pyx_L3_error:; __Pyx_AddTraceback("ssh2.channel.Channel.setenv", __pyx_clineno, __pyx_lineno, __pyx_filename); __Pyx_RefNannyFinishContext(); return NULL; __pyx_L4_argument_unpacking_done:; if (unlikely(((PyObject *)__pyx_v_varname) == Py_None)) { - PyErr_Format(PyExc_TypeError, "Argument '%.200s' must not be None", "varname"); __PYX_ERR(0, 284, __pyx_L1_error) + PyErr_Format(PyExc_TypeError, "Argument '%.200s' must not be None", "varname"); __PYX_ERR(0, 281, __pyx_L1_error) } if (unlikely(((PyObject *)__pyx_v_value) == Py_None)) { - PyErr_Format(PyExc_TypeError, "Argument '%.200s' must not be None", "value"); __PYX_ERR(0, 284, __pyx_L1_error) + PyErr_Format(PyExc_TypeError, "Argument '%.200s' must not be None", "value"); __PYX_ERR(0, 281, __pyx_L1_error) } __pyx_r = __pyx_pf_4ssh2_7channel_7Channel_38setenv(((struct __pyx_obj_4ssh2_7channel_Channel *)__pyx_v_self), __pyx_v_varname, __pyx_v_value); @@ -4398,31 +4344,31 @@ static PyObject *__pyx_pf_4ssh2_7channel_7Channel_38setenv(struct __pyx_obj_4ssh int __pyx_t_3; __Pyx_RefNannySetupContext("setenv", 0); - /* "ssh2/channel.pyx":294 + /* "ssh2/channel.pyx":291 * :rtype: int""" * cdef int rc * cdef bytes b_varname = to_bytes(varname) # <<<<<<<<<<<<<< * cdef bytes b_value = to_bytes(value) * cdef char *_varname = b_varname */ - __pyx_t_1 = __pyx_f_4ssh2_5utils_to_bytes(__pyx_v_varname); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 294, __pyx_L1_error) + __pyx_t_1 = __pyx_f_4ssh2_5utils_to_bytes(__pyx_v_varname); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 291, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_1); __pyx_v_b_varname = ((PyObject*)__pyx_t_1); __pyx_t_1 = 0; - /* "ssh2/channel.pyx":295 + /* "ssh2/channel.pyx":292 * cdef int rc * cdef bytes b_varname = to_bytes(varname) * cdef bytes b_value = to_bytes(value) # <<<<<<<<<<<<<< * cdef char *_varname = b_varname * cdef char *_value = b_value */ - __pyx_t_1 = __pyx_f_4ssh2_5utils_to_bytes(__pyx_v_value); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 295, __pyx_L1_error) + __pyx_t_1 = __pyx_f_4ssh2_5utils_to_bytes(__pyx_v_value); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 292, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_1); __pyx_v_b_value = ((PyObject*)__pyx_t_1); __pyx_t_1 = 0; - /* "ssh2/channel.pyx":296 + /* "ssh2/channel.pyx":293 * cdef bytes b_varname = to_bytes(varname) * cdef bytes b_value = to_bytes(value) * cdef char *_varname = b_varname # <<<<<<<<<<<<<< @@ -4431,12 +4377,12 @@ static PyObject *__pyx_pf_4ssh2_7channel_7Channel_38setenv(struct __pyx_obj_4ssh */ if (unlikely(__pyx_v_b_varname == Py_None)) { PyErr_SetString(PyExc_TypeError, "expected bytes, NoneType found"); - __PYX_ERR(0, 296, __pyx_L1_error) + __PYX_ERR(0, 293, __pyx_L1_error) } - __pyx_t_2 = __Pyx_PyBytes_AsWritableString(__pyx_v_b_varname); if (unlikely((!__pyx_t_2) && PyErr_Occurred())) __PYX_ERR(0, 296, __pyx_L1_error) + __pyx_t_2 = __Pyx_PyBytes_AsWritableString(__pyx_v_b_varname); if (unlikely((!__pyx_t_2) && PyErr_Occurred())) __PYX_ERR(0, 293, __pyx_L1_error) __pyx_v__varname = __pyx_t_2; - /* "ssh2/channel.pyx":297 + /* "ssh2/channel.pyx":294 * cdef bytes b_value = to_bytes(value) * cdef char *_varname = b_varname * cdef char *_value = b_value # <<<<<<<<<<<<<< @@ -4445,12 +4391,12 @@ static PyObject *__pyx_pf_4ssh2_7channel_7Channel_38setenv(struct __pyx_obj_4ssh */ if (unlikely(__pyx_v_b_value == Py_None)) { PyErr_SetString(PyExc_TypeError, "expected bytes, NoneType found"); - __PYX_ERR(0, 297, __pyx_L1_error) + __PYX_ERR(0, 294, __pyx_L1_error) } - __pyx_t_2 = __Pyx_PyBytes_AsWritableString(__pyx_v_b_value); if (unlikely((!__pyx_t_2) && PyErr_Occurred())) __PYX_ERR(0, 297, __pyx_L1_error) + __pyx_t_2 = __Pyx_PyBytes_AsWritableString(__pyx_v_b_value); if (unlikely((!__pyx_t_2) && PyErr_Occurred())) __PYX_ERR(0, 294, __pyx_L1_error) __pyx_v__value = __pyx_t_2; - /* "ssh2/channel.pyx":298 + /* "ssh2/channel.pyx":295 * cdef char *_varname = b_varname * cdef char *_value = b_value * with nogil: # <<<<<<<<<<<<<< @@ -4465,7 +4411,7 @@ static PyObject *__pyx_pf_4ssh2_7channel_7Channel_38setenv(struct __pyx_obj_4ssh #endif /*try:*/ { - /* "ssh2/channel.pyx":299 + /* "ssh2/channel.pyx":296 * cdef char *_value = b_value * with nogil: * rc = c_ssh2.libssh2_channel_setenv( # <<<<<<<<<<<<<< @@ -4475,7 +4421,7 @@ static PyObject *__pyx_pf_4ssh2_7channel_7Channel_38setenv(struct __pyx_obj_4ssh __pyx_v_rc = libssh2_channel_setenv(__pyx_v_self->_channel, __pyx_v__varname, __pyx_v__value); } - /* "ssh2/channel.pyx":298 + /* "ssh2/channel.pyx":295 * cdef char *_varname = b_varname * cdef char *_value = b_value * with nogil: # <<<<<<<<<<<<<< @@ -4494,7 +4440,7 @@ static PyObject *__pyx_pf_4ssh2_7channel_7Channel_38setenv(struct __pyx_obj_4ssh } } - /* "ssh2/channel.pyx":301 + /* "ssh2/channel.pyx":298 * rc = c_ssh2.libssh2_channel_setenv( * self._channel, _varname, _value) * return handle_error_codes(rc) # <<<<<<<<<<<<<< @@ -4502,14 +4448,14 @@ static PyObject *__pyx_pf_4ssh2_7channel_7Channel_38setenv(struct __pyx_obj_4ssh * def window_read_ex(self, unsigned long read_avail, */ __Pyx_XDECREF(__pyx_r); - __pyx_t_3 = __pyx_f_4ssh2_5utils_handle_error_codes(__pyx_v_rc, 0); if (unlikely(__pyx_t_3 == ((int)-1))) __PYX_ERR(0, 301, __pyx_L1_error) - __pyx_t_1 = __Pyx_PyInt_From_int(__pyx_t_3); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 301, __pyx_L1_error) + __pyx_t_3 = __pyx_f_4ssh2_5utils_handle_error_codes(__pyx_v_rc, 0); if (unlikely(__pyx_t_3 == ((int)-1))) __PYX_ERR(0, 298, __pyx_L1_error) + __pyx_t_1 = __Pyx_PyInt_From_int(__pyx_t_3); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 298, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_1); __pyx_r = __pyx_t_1; __pyx_t_1 = 0; goto __pyx_L0; - /* "ssh2/channel.pyx":284 + /* "ssh2/channel.pyx":281 * return handle_error_codes(rc), py_exitsignal, py_errmsg, py_langtag * * def setenv(self, varname not None, value not None): # <<<<<<<<<<<<<< @@ -4530,7 +4476,7 @@ static PyObject *__pyx_pf_4ssh2_7channel_7Channel_38setenv(struct __pyx_obj_4ssh return __pyx_r; } -/* "ssh2/channel.pyx":303 +/* "ssh2/channel.pyx":300 * return handle_error_codes(rc) * * def window_read_ex(self, unsigned long read_avail, # <<<<<<<<<<<<<< @@ -4570,11 +4516,11 @@ static PyObject *__pyx_pw_4ssh2_7channel_7Channel_41window_read_ex(PyObject *__p case 1: if (likely((values[1] = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_window_size_initial)) != 0)) kw_args--; else { - __Pyx_RaiseArgtupleInvalid("window_read_ex", 1, 2, 2, 1); __PYX_ERR(0, 303, __pyx_L3_error) + __Pyx_RaiseArgtupleInvalid("window_read_ex", 1, 2, 2, 1); __PYX_ERR(0, 300, __pyx_L3_error) } } if (unlikely(kw_args > 0)) { - if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_pyargnames, 0, values, pos_args, "window_read_ex") < 0)) __PYX_ERR(0, 303, __pyx_L3_error) + if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_pyargnames, 0, values, pos_args, "window_read_ex") < 0)) __PYX_ERR(0, 300, __pyx_L3_error) } } else if (PyTuple_GET_SIZE(__pyx_args) != 2) { goto __pyx_L5_argtuple_error; @@ -4582,12 +4528,12 @@ static PyObject *__pyx_pw_4ssh2_7channel_7Channel_41window_read_ex(PyObject *__p values[0] = PyTuple_GET_ITEM(__pyx_args, 0); values[1] = PyTuple_GET_ITEM(__pyx_args, 1); } - __pyx_v_read_avail = __Pyx_PyInt_As_unsigned_long(values[0]); if (unlikely((__pyx_v_read_avail == (unsigned long)-1) && PyErr_Occurred())) __PYX_ERR(0, 303, __pyx_L3_error) - __pyx_v_window_size_initial = __Pyx_PyInt_As_unsigned_long(values[1]); if (unlikely((__pyx_v_window_size_initial == (unsigned long)-1) && PyErr_Occurred())) __PYX_ERR(0, 304, __pyx_L3_error) + __pyx_v_read_avail = __Pyx_PyInt_As_unsigned_long(values[0]); if (unlikely((__pyx_v_read_avail == (unsigned long)-1) && PyErr_Occurred())) __PYX_ERR(0, 300, __pyx_L3_error) + __pyx_v_window_size_initial = __Pyx_PyInt_As_unsigned_long(values[1]); if (unlikely((__pyx_v_window_size_initial == (unsigned long)-1) && PyErr_Occurred())) __PYX_ERR(0, 301, __pyx_L3_error) } goto __pyx_L4_argument_unpacking_done; __pyx_L5_argtuple_error:; - __Pyx_RaiseArgtupleInvalid("window_read_ex", 1, 2, 2, PyTuple_GET_SIZE(__pyx_args)); __PYX_ERR(0, 303, __pyx_L3_error) + __Pyx_RaiseArgtupleInvalid("window_read_ex", 1, 2, 2, PyTuple_GET_SIZE(__pyx_args)); __PYX_ERR(0, 300, __pyx_L3_error) __pyx_L3_error:; __Pyx_AddTraceback("ssh2.channel.Channel.window_read_ex", __pyx_clineno, __pyx_lineno, __pyx_filename); __Pyx_RefNannyFinishContext(); @@ -4608,7 +4554,7 @@ static PyObject *__pyx_pf_4ssh2_7channel_7Channel_40window_read_ex(struct __pyx_ PyObject *__pyx_t_2 = NULL; __Pyx_RefNannySetupContext("window_read_ex", 0); - /* "ssh2/channel.pyx":306 + /* "ssh2/channel.pyx":303 * unsigned long window_size_initial): * cdef unsigned long rc * with nogil: # <<<<<<<<<<<<<< @@ -4623,7 +4569,7 @@ static PyObject *__pyx_pf_4ssh2_7channel_7Channel_40window_read_ex(struct __pyx_ #endif /*try:*/ { - /* "ssh2/channel.pyx":307 + /* "ssh2/channel.pyx":304 * cdef unsigned long rc * with nogil: * rc = c_ssh2.libssh2_channel_window_read_ex( # <<<<<<<<<<<<<< @@ -4633,7 +4579,7 @@ static PyObject *__pyx_pf_4ssh2_7channel_7Channel_40window_read_ex(struct __pyx_ __pyx_v_rc = libssh2_channel_window_read_ex(__pyx_v_self->_channel, (&__pyx_v_read_avail), (&__pyx_v_window_size_initial)); } - /* "ssh2/channel.pyx":306 + /* "ssh2/channel.pyx":303 * unsigned long window_size_initial): * cdef unsigned long rc * with nogil: # <<<<<<<<<<<<<< @@ -4652,7 +4598,7 @@ static PyObject *__pyx_pf_4ssh2_7channel_7Channel_40window_read_ex(struct __pyx_ } } - /* "ssh2/channel.pyx":309 + /* "ssh2/channel.pyx":306 * rc = c_ssh2.libssh2_channel_window_read_ex( * self._channel, &read_avail, &window_size_initial) * return handle_error_codes(rc) # <<<<<<<<<<<<<< @@ -4660,14 +4606,14 @@ static PyObject *__pyx_pf_4ssh2_7channel_7Channel_40window_read_ex(struct __pyx_ * def window_read(self): */ __Pyx_XDECREF(__pyx_r); - __pyx_t_1 = __pyx_f_4ssh2_5utils_handle_error_codes(__pyx_v_rc, 0); if (unlikely(__pyx_t_1 == ((int)-1))) __PYX_ERR(0, 309, __pyx_L1_error) - __pyx_t_2 = __Pyx_PyInt_From_int(__pyx_t_1); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 309, __pyx_L1_error) + __pyx_t_1 = __pyx_f_4ssh2_5utils_handle_error_codes(__pyx_v_rc, 0); if (unlikely(__pyx_t_1 == ((int)-1))) __PYX_ERR(0, 306, __pyx_L1_error) + __pyx_t_2 = __Pyx_PyInt_From_int(__pyx_t_1); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 306, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_2); __pyx_r = __pyx_t_2; __pyx_t_2 = 0; goto __pyx_L0; - /* "ssh2/channel.pyx":303 + /* "ssh2/channel.pyx":300 * return handle_error_codes(rc) * * def window_read_ex(self, unsigned long read_avail, # <<<<<<<<<<<<<< @@ -4686,7 +4632,7 @@ static PyObject *__pyx_pf_4ssh2_7channel_7Channel_40window_read_ex(struct __pyx_ return __pyx_r; } -/* "ssh2/channel.pyx":311 +/* "ssh2/channel.pyx":308 * return handle_error_codes(rc) * * def window_read(self): # <<<<<<<<<<<<<< @@ -4716,7 +4662,7 @@ static PyObject *__pyx_pf_4ssh2_7channel_7Channel_42window_read(struct __pyx_obj PyObject *__pyx_t_2 = NULL; __Pyx_RefNannySetupContext("window_read", 0); - /* "ssh2/channel.pyx":313 + /* "ssh2/channel.pyx":310 * def window_read(self): * cdef unsigned long rc * with nogil: # <<<<<<<<<<<<<< @@ -4731,7 +4677,7 @@ static PyObject *__pyx_pf_4ssh2_7channel_7Channel_42window_read(struct __pyx_obj #endif /*try:*/ { - /* "ssh2/channel.pyx":314 + /* "ssh2/channel.pyx":311 * cdef unsigned long rc * with nogil: * rc = c_ssh2.libssh2_channel_window_read(self._channel) # <<<<<<<<<<<<<< @@ -4741,7 +4687,7 @@ static PyObject *__pyx_pf_4ssh2_7channel_7Channel_42window_read(struct __pyx_obj __pyx_v_rc = libssh2_channel_window_read(__pyx_v_self->_channel); } - /* "ssh2/channel.pyx":313 + /* "ssh2/channel.pyx":310 * def window_read(self): * cdef unsigned long rc * with nogil: # <<<<<<<<<<<<<< @@ -4760,7 +4706,7 @@ static PyObject *__pyx_pf_4ssh2_7channel_7Channel_42window_read(struct __pyx_obj } } - /* "ssh2/channel.pyx":315 + /* "ssh2/channel.pyx":312 * with nogil: * rc = c_ssh2.libssh2_channel_window_read(self._channel) * return handle_error_codes(rc) # <<<<<<<<<<<<<< @@ -4768,14 +4714,14 @@ static PyObject *__pyx_pf_4ssh2_7channel_7Channel_42window_read(struct __pyx_obj * def window_write_ex(self, unsigned long window_size_initial): */ __Pyx_XDECREF(__pyx_r); - __pyx_t_1 = __pyx_f_4ssh2_5utils_handle_error_codes(__pyx_v_rc, 0); if (unlikely(__pyx_t_1 == ((int)-1))) __PYX_ERR(0, 315, __pyx_L1_error) - __pyx_t_2 = __Pyx_PyInt_From_int(__pyx_t_1); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 315, __pyx_L1_error) + __pyx_t_1 = __pyx_f_4ssh2_5utils_handle_error_codes(__pyx_v_rc, 0); if (unlikely(__pyx_t_1 == ((int)-1))) __PYX_ERR(0, 312, __pyx_L1_error) + __pyx_t_2 = __Pyx_PyInt_From_int(__pyx_t_1); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 312, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_2); __pyx_r = __pyx_t_2; __pyx_t_2 = 0; goto __pyx_L0; - /* "ssh2/channel.pyx":311 + /* "ssh2/channel.pyx":308 * return handle_error_codes(rc) * * def window_read(self): # <<<<<<<<<<<<<< @@ -4794,7 +4740,7 @@ static PyObject *__pyx_pf_4ssh2_7channel_7Channel_42window_read(struct __pyx_obj return __pyx_r; } -/* "ssh2/channel.pyx":317 +/* "ssh2/channel.pyx":314 * return handle_error_codes(rc) * * def window_write_ex(self, unsigned long window_size_initial): # <<<<<<<<<<<<<< @@ -4811,7 +4757,7 @@ static PyObject *__pyx_pw_4ssh2_7channel_7Channel_45window_write_ex(PyObject *__ __Pyx_RefNannyDeclarations __Pyx_RefNannySetupContext("window_write_ex (wrapper)", 0); assert(__pyx_arg_window_size_initial); { - __pyx_v_window_size_initial = __Pyx_PyInt_As_unsigned_long(__pyx_arg_window_size_initial); if (unlikely((__pyx_v_window_size_initial == (unsigned long)-1) && PyErr_Occurred())) __PYX_ERR(0, 317, __pyx_L3_error) + __pyx_v_window_size_initial = __Pyx_PyInt_As_unsigned_long(__pyx_arg_window_size_initial); if (unlikely((__pyx_v_window_size_initial == (unsigned long)-1) && PyErr_Occurred())) __PYX_ERR(0, 314, __pyx_L3_error) } goto __pyx_L4_argument_unpacking_done; __pyx_L3_error:; @@ -4834,7 +4780,7 @@ static PyObject *__pyx_pf_4ssh2_7channel_7Channel_44window_write_ex(struct __pyx PyObject *__pyx_t_2 = NULL; __Pyx_RefNannySetupContext("window_write_ex", 0); - /* "ssh2/channel.pyx":319 + /* "ssh2/channel.pyx":316 * def window_write_ex(self, unsigned long window_size_initial): * cdef unsigned long rc * with nogil: # <<<<<<<<<<<<<< @@ -4849,7 +4795,7 @@ static PyObject *__pyx_pf_4ssh2_7channel_7Channel_44window_write_ex(struct __pyx #endif /*try:*/ { - /* "ssh2/channel.pyx":320 + /* "ssh2/channel.pyx":317 * cdef unsigned long rc * with nogil: * rc = c_ssh2.libssh2_channel_window_write_ex( # <<<<<<<<<<<<<< @@ -4859,7 +4805,7 @@ static PyObject *__pyx_pf_4ssh2_7channel_7Channel_44window_write_ex(struct __pyx __pyx_v_rc = libssh2_channel_window_write_ex(__pyx_v_self->_channel, (&__pyx_v_window_size_initial)); } - /* "ssh2/channel.pyx":319 + /* "ssh2/channel.pyx":316 * def window_write_ex(self, unsigned long window_size_initial): * cdef unsigned long rc * with nogil: # <<<<<<<<<<<<<< @@ -4878,7 +4824,7 @@ static PyObject *__pyx_pf_4ssh2_7channel_7Channel_44window_write_ex(struct __pyx } } - /* "ssh2/channel.pyx":322 + /* "ssh2/channel.pyx":319 * rc = c_ssh2.libssh2_channel_window_write_ex( * self._channel, &window_size_initial) * return handle_error_codes(rc) # <<<<<<<<<<<<<< @@ -4886,14 +4832,14 @@ static PyObject *__pyx_pf_4ssh2_7channel_7Channel_44window_write_ex(struct __pyx * def window_write(self): */ __Pyx_XDECREF(__pyx_r); - __pyx_t_1 = __pyx_f_4ssh2_5utils_handle_error_codes(__pyx_v_rc, 0); if (unlikely(__pyx_t_1 == ((int)-1))) __PYX_ERR(0, 322, __pyx_L1_error) - __pyx_t_2 = __Pyx_PyInt_From_int(__pyx_t_1); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 322, __pyx_L1_error) + __pyx_t_1 = __pyx_f_4ssh2_5utils_handle_error_codes(__pyx_v_rc, 0); if (unlikely(__pyx_t_1 == ((int)-1))) __PYX_ERR(0, 319, __pyx_L1_error) + __pyx_t_2 = __Pyx_PyInt_From_int(__pyx_t_1); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 319, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_2); __pyx_r = __pyx_t_2; __pyx_t_2 = 0; goto __pyx_L0; - /* "ssh2/channel.pyx":317 + /* "ssh2/channel.pyx":314 * return handle_error_codes(rc) * * def window_write_ex(self, unsigned long window_size_initial): # <<<<<<<<<<<<<< @@ -4912,7 +4858,7 @@ static PyObject *__pyx_pf_4ssh2_7channel_7Channel_44window_write_ex(struct __pyx return __pyx_r; } -/* "ssh2/channel.pyx":324 +/* "ssh2/channel.pyx":321 * return handle_error_codes(rc) * * def window_write(self): # <<<<<<<<<<<<<< @@ -4942,7 +4888,7 @@ static PyObject *__pyx_pf_4ssh2_7channel_7Channel_46window_write(struct __pyx_ob PyObject *__pyx_t_2 = NULL; __Pyx_RefNannySetupContext("window_write", 0); - /* "ssh2/channel.pyx":326 + /* "ssh2/channel.pyx":323 * def window_write(self): * cdef unsigned long rc * with nogil: # <<<<<<<<<<<<<< @@ -4957,7 +4903,7 @@ static PyObject *__pyx_pf_4ssh2_7channel_7Channel_46window_write(struct __pyx_ob #endif /*try:*/ { - /* "ssh2/channel.pyx":327 + /* "ssh2/channel.pyx":324 * cdef unsigned long rc * with nogil: * rc = c_ssh2.libssh2_channel_window_write(self._channel) # <<<<<<<<<<<<<< @@ -4967,7 +4913,7 @@ static PyObject *__pyx_pf_4ssh2_7channel_7Channel_46window_write(struct __pyx_ob __pyx_v_rc = libssh2_channel_window_write(__pyx_v_self->_channel); } - /* "ssh2/channel.pyx":326 + /* "ssh2/channel.pyx":323 * def window_write(self): * cdef unsigned long rc * with nogil: # <<<<<<<<<<<<<< @@ -4986,7 +4932,7 @@ static PyObject *__pyx_pf_4ssh2_7channel_7Channel_46window_write(struct __pyx_ob } } - /* "ssh2/channel.pyx":328 + /* "ssh2/channel.pyx":325 * with nogil: * rc = c_ssh2.libssh2_channel_window_write(self._channel) * return handle_error_codes(rc) # <<<<<<<<<<<<<< @@ -4994,14 +4940,14 @@ static PyObject *__pyx_pf_4ssh2_7channel_7Channel_46window_write(struct __pyx_ob * def receive_window_adjust(self, unsigned long adjustment, */ __Pyx_XDECREF(__pyx_r); - __pyx_t_1 = __pyx_f_4ssh2_5utils_handle_error_codes(__pyx_v_rc, 0); if (unlikely(__pyx_t_1 == ((int)-1))) __PYX_ERR(0, 328, __pyx_L1_error) - __pyx_t_2 = __Pyx_PyInt_From_int(__pyx_t_1); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 328, __pyx_L1_error) + __pyx_t_1 = __pyx_f_4ssh2_5utils_handle_error_codes(__pyx_v_rc, 0); if (unlikely(__pyx_t_1 == ((int)-1))) __PYX_ERR(0, 325, __pyx_L1_error) + __pyx_t_2 = __Pyx_PyInt_From_int(__pyx_t_1); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 325, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_2); __pyx_r = __pyx_t_2; __pyx_t_2 = 0; goto __pyx_L0; - /* "ssh2/channel.pyx":324 + /* "ssh2/channel.pyx":321 * return handle_error_codes(rc) * * def window_write(self): # <<<<<<<<<<<<<< @@ -5020,7 +4966,7 @@ static PyObject *__pyx_pf_4ssh2_7channel_7Channel_46window_write(struct __pyx_ob return __pyx_r; } -/* "ssh2/channel.pyx":330 +/* "ssh2/channel.pyx":327 * return handle_error_codes(rc) * * def receive_window_adjust(self, unsigned long adjustment, # <<<<<<<<<<<<<< @@ -5060,11 +5006,11 @@ static PyObject *__pyx_pw_4ssh2_7channel_7Channel_49receive_window_adjust(PyObje case 1: if (likely((values[1] = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_force)) != 0)) kw_args--; else { - __Pyx_RaiseArgtupleInvalid("receive_window_adjust", 1, 2, 2, 1); __PYX_ERR(0, 330, __pyx_L3_error) + __Pyx_RaiseArgtupleInvalid("receive_window_adjust", 1, 2, 2, 1); __PYX_ERR(0, 327, __pyx_L3_error) } } if (unlikely(kw_args > 0)) { - if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_pyargnames, 0, values, pos_args, "receive_window_adjust") < 0)) __PYX_ERR(0, 330, __pyx_L3_error) + if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_pyargnames, 0, values, pos_args, "receive_window_adjust") < 0)) __PYX_ERR(0, 327, __pyx_L3_error) } } else if (PyTuple_GET_SIZE(__pyx_args) != 2) { goto __pyx_L5_argtuple_error; @@ -5072,12 +5018,12 @@ static PyObject *__pyx_pw_4ssh2_7channel_7Channel_49receive_window_adjust(PyObje values[0] = PyTuple_GET_ITEM(__pyx_args, 0); values[1] = PyTuple_GET_ITEM(__pyx_args, 1); } - __pyx_v_adjustment = __Pyx_PyInt_As_unsigned_long(values[0]); if (unlikely((__pyx_v_adjustment == (unsigned long)-1) && PyErr_Occurred())) __PYX_ERR(0, 330, __pyx_L3_error) - __pyx_v_force = __Pyx_PyInt_As_unsigned_long(values[1]); if (unlikely((__pyx_v_force == (unsigned long)-1) && PyErr_Occurred())) __PYX_ERR(0, 331, __pyx_L3_error) + __pyx_v_adjustment = __Pyx_PyInt_As_unsigned_long(values[0]); if (unlikely((__pyx_v_adjustment == (unsigned long)-1) && PyErr_Occurred())) __PYX_ERR(0, 327, __pyx_L3_error) + __pyx_v_force = __Pyx_PyInt_As_unsigned_long(values[1]); if (unlikely((__pyx_v_force == (unsigned long)-1) && PyErr_Occurred())) __PYX_ERR(0, 328, __pyx_L3_error) } goto __pyx_L4_argument_unpacking_done; __pyx_L5_argtuple_error:; - __Pyx_RaiseArgtupleInvalid("receive_window_adjust", 1, 2, 2, PyTuple_GET_SIZE(__pyx_args)); __PYX_ERR(0, 330, __pyx_L3_error) + __Pyx_RaiseArgtupleInvalid("receive_window_adjust", 1, 2, 2, PyTuple_GET_SIZE(__pyx_args)); __PYX_ERR(0, 327, __pyx_L3_error) __pyx_L3_error:; __Pyx_AddTraceback("ssh2.channel.Channel.receive_window_adjust", __pyx_clineno, __pyx_lineno, __pyx_filename); __Pyx_RefNannyFinishContext(); @@ -5098,7 +5044,7 @@ static PyObject *__pyx_pf_4ssh2_7channel_7Channel_48receive_window_adjust(struct PyObject *__pyx_t_2 = NULL; __Pyx_RefNannySetupContext("receive_window_adjust", 0); - /* "ssh2/channel.pyx":333 + /* "ssh2/channel.pyx":330 * unsigned long force): * cdef unsigned long rc * with nogil: # <<<<<<<<<<<<<< @@ -5113,7 +5059,7 @@ static PyObject *__pyx_pf_4ssh2_7channel_7Channel_48receive_window_adjust(struct #endif /*try:*/ { - /* "ssh2/channel.pyx":334 + /* "ssh2/channel.pyx":331 * cdef unsigned long rc * with nogil: * rc = c_ssh2.libssh2_channel_receive_window_adjust( # <<<<<<<<<<<<<< @@ -5123,7 +5069,7 @@ static PyObject *__pyx_pf_4ssh2_7channel_7Channel_48receive_window_adjust(struct __pyx_v_rc = libssh2_channel_receive_window_adjust(__pyx_v_self->_channel, __pyx_v_adjustment, __pyx_v_force); } - /* "ssh2/channel.pyx":333 + /* "ssh2/channel.pyx":330 * unsigned long force): * cdef unsigned long rc * with nogil: # <<<<<<<<<<<<<< @@ -5142,7 +5088,7 @@ static PyObject *__pyx_pf_4ssh2_7channel_7Channel_48receive_window_adjust(struct } } - /* "ssh2/channel.pyx":336 + /* "ssh2/channel.pyx":333 * rc = c_ssh2.libssh2_channel_receive_window_adjust( * self._channel, adjustment, force) * return handle_error_codes(rc) # <<<<<<<<<<<<<< @@ -5150,14 +5096,14 @@ static PyObject *__pyx_pf_4ssh2_7channel_7Channel_48receive_window_adjust(struct * def receive_window_adjust2(self, unsigned long adjustment, */ __Pyx_XDECREF(__pyx_r); - __pyx_t_1 = __pyx_f_4ssh2_5utils_handle_error_codes(__pyx_v_rc, 0); if (unlikely(__pyx_t_1 == ((int)-1))) __PYX_ERR(0, 336, __pyx_L1_error) - __pyx_t_2 = __Pyx_PyInt_From_int(__pyx_t_1); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 336, __pyx_L1_error) + __pyx_t_1 = __pyx_f_4ssh2_5utils_handle_error_codes(__pyx_v_rc, 0); if (unlikely(__pyx_t_1 == ((int)-1))) __PYX_ERR(0, 333, __pyx_L1_error) + __pyx_t_2 = __Pyx_PyInt_From_int(__pyx_t_1); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 333, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_2); __pyx_r = __pyx_t_2; __pyx_t_2 = 0; goto __pyx_L0; - /* "ssh2/channel.pyx":330 + /* "ssh2/channel.pyx":327 * return handle_error_codes(rc) * * def receive_window_adjust(self, unsigned long adjustment, # <<<<<<<<<<<<<< @@ -5176,7 +5122,7 @@ static PyObject *__pyx_pf_4ssh2_7channel_7Channel_48receive_window_adjust(struct return __pyx_r; } -/* "ssh2/channel.pyx":338 +/* "ssh2/channel.pyx":335 * return handle_error_codes(rc) * * def receive_window_adjust2(self, unsigned long adjustment, # <<<<<<<<<<<<<< @@ -5216,11 +5162,11 @@ static PyObject *__pyx_pw_4ssh2_7channel_7Channel_51receive_window_adjust2(PyObj case 1: if (likely((values[1] = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_force)) != 0)) kw_args--; else { - __Pyx_RaiseArgtupleInvalid("receive_window_adjust2", 1, 2, 2, 1); __PYX_ERR(0, 338, __pyx_L3_error) + __Pyx_RaiseArgtupleInvalid("receive_window_adjust2", 1, 2, 2, 1); __PYX_ERR(0, 335, __pyx_L3_error) } } if (unlikely(kw_args > 0)) { - if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_pyargnames, 0, values, pos_args, "receive_window_adjust2") < 0)) __PYX_ERR(0, 338, __pyx_L3_error) + if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_pyargnames, 0, values, pos_args, "receive_window_adjust2") < 0)) __PYX_ERR(0, 335, __pyx_L3_error) } } else if (PyTuple_GET_SIZE(__pyx_args) != 2) { goto __pyx_L5_argtuple_error; @@ -5228,12 +5174,12 @@ static PyObject *__pyx_pw_4ssh2_7channel_7Channel_51receive_window_adjust2(PyObj values[0] = PyTuple_GET_ITEM(__pyx_args, 0); values[1] = PyTuple_GET_ITEM(__pyx_args, 1); } - __pyx_v_adjustment = __Pyx_PyInt_As_unsigned_long(values[0]); if (unlikely((__pyx_v_adjustment == (unsigned long)-1) && PyErr_Occurred())) __PYX_ERR(0, 338, __pyx_L3_error) - __pyx_v_force = __Pyx_PyInt_As_unsigned_long(values[1]); if (unlikely((__pyx_v_force == (unsigned long)-1) && PyErr_Occurred())) __PYX_ERR(0, 339, __pyx_L3_error) + __pyx_v_adjustment = __Pyx_PyInt_As_unsigned_long(values[0]); if (unlikely((__pyx_v_adjustment == (unsigned long)-1) && PyErr_Occurred())) __PYX_ERR(0, 335, __pyx_L3_error) + __pyx_v_force = __Pyx_PyInt_As_unsigned_long(values[1]); if (unlikely((__pyx_v_force == (unsigned long)-1) && PyErr_Occurred())) __PYX_ERR(0, 336, __pyx_L3_error) } goto __pyx_L4_argument_unpacking_done; __pyx_L5_argtuple_error:; - __Pyx_RaiseArgtupleInvalid("receive_window_adjust2", 1, 2, 2, PyTuple_GET_SIZE(__pyx_args)); __PYX_ERR(0, 338, __pyx_L3_error) + __Pyx_RaiseArgtupleInvalid("receive_window_adjust2", 1, 2, 2, PyTuple_GET_SIZE(__pyx_args)); __PYX_ERR(0, 335, __pyx_L3_error) __pyx_L3_error:; __Pyx_AddTraceback("ssh2.channel.Channel.receive_window_adjust2", __pyx_clineno, __pyx_lineno, __pyx_filename); __Pyx_RefNannyFinishContext(); @@ -5255,7 +5201,7 @@ static PyObject *__pyx_pf_4ssh2_7channel_7Channel_50receive_window_adjust2(struc PyObject *__pyx_t_2 = NULL; __Pyx_RefNannySetupContext("receive_window_adjust2", 0); - /* "ssh2/channel.pyx":341 + /* "ssh2/channel.pyx":338 * unsigned long force): * cdef unsigned long rc * cdef unsigned int storewindow = 0 # <<<<<<<<<<<<<< @@ -5264,7 +5210,7 @@ static PyObject *__pyx_pf_4ssh2_7channel_7Channel_50receive_window_adjust2(struc */ __pyx_v_storewindow = 0; - /* "ssh2/channel.pyx":342 + /* "ssh2/channel.pyx":339 * cdef unsigned long rc * cdef unsigned int storewindow = 0 * with nogil: # <<<<<<<<<<<<<< @@ -5279,7 +5225,7 @@ static PyObject *__pyx_pf_4ssh2_7channel_7Channel_50receive_window_adjust2(struc #endif /*try:*/ { - /* "ssh2/channel.pyx":343 + /* "ssh2/channel.pyx":340 * cdef unsigned int storewindow = 0 * with nogil: * rc = c_ssh2.libssh2_channel_receive_window_adjust2( # <<<<<<<<<<<<<< @@ -5289,7 +5235,7 @@ static PyObject *__pyx_pf_4ssh2_7channel_7Channel_50receive_window_adjust2(struc __pyx_v_rc = libssh2_channel_receive_window_adjust2(__pyx_v_self->_channel, __pyx_v_adjustment, __pyx_v_force, (&__pyx_v_storewindow)); } - /* "ssh2/channel.pyx":342 + /* "ssh2/channel.pyx":339 * cdef unsigned long rc * cdef unsigned int storewindow = 0 * with nogil: # <<<<<<<<<<<<<< @@ -5308,7 +5254,7 @@ static PyObject *__pyx_pf_4ssh2_7channel_7Channel_50receive_window_adjust2(struc } } - /* "ssh2/channel.pyx":345 + /* "ssh2/channel.pyx":342 * rc = c_ssh2.libssh2_channel_receive_window_adjust2( * self._channel, adjustment, force, &storewindow) * return handle_error_codes(rc) # <<<<<<<<<<<<<< @@ -5316,14 +5262,14 @@ static PyObject *__pyx_pf_4ssh2_7channel_7Channel_50receive_window_adjust2(struc * def write(self, buf not None): */ __Pyx_XDECREF(__pyx_r); - __pyx_t_1 = __pyx_f_4ssh2_5utils_handle_error_codes(__pyx_v_rc, 0); if (unlikely(__pyx_t_1 == ((int)-1))) __PYX_ERR(0, 345, __pyx_L1_error) - __pyx_t_2 = __Pyx_PyInt_From_int(__pyx_t_1); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 345, __pyx_L1_error) + __pyx_t_1 = __pyx_f_4ssh2_5utils_handle_error_codes(__pyx_v_rc, 0); if (unlikely(__pyx_t_1 == ((int)-1))) __PYX_ERR(0, 342, __pyx_L1_error) + __pyx_t_2 = __Pyx_PyInt_From_int(__pyx_t_1); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 342, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_2); __pyx_r = __pyx_t_2; __pyx_t_2 = 0; goto __pyx_L0; - /* "ssh2/channel.pyx":338 + /* "ssh2/channel.pyx":335 * return handle_error_codes(rc) * * def receive_window_adjust2(self, unsigned long adjustment, # <<<<<<<<<<<<<< @@ -5342,7 +5288,7 @@ static PyObject *__pyx_pf_4ssh2_7channel_7Channel_50receive_window_adjust2(struc return __pyx_r; } -/* "ssh2/channel.pyx":347 +/* "ssh2/channel.pyx":344 * return handle_error_codes(rc) * * def write(self, buf not None): # <<<<<<<<<<<<<< @@ -5358,7 +5304,7 @@ static PyObject *__pyx_pw_4ssh2_7channel_7Channel_53write(PyObject *__pyx_v_self __Pyx_RefNannyDeclarations __Pyx_RefNannySetupContext("write (wrapper)", 0); if (unlikely(((PyObject *)__pyx_v_buf) == Py_None)) { - PyErr_Format(PyExc_TypeError, "Argument '%.200s' must not be None", "buf"); __PYX_ERR(0, 347, __pyx_L1_error) + PyErr_Format(PyExc_TypeError, "Argument '%.200s' must not be None", "buf"); __PYX_ERR(0, 344, __pyx_L1_error) } __pyx_r = __pyx_pf_4ssh2_7channel_7Channel_52write(((struct __pyx_obj_4ssh2_7channel_Channel *)__pyx_v_self), ((PyObject *)__pyx_v_buf)); @@ -5390,19 +5336,19 @@ static PyObject *__pyx_pf_4ssh2_7channel_7Channel_52write(struct __pyx_obj_4ssh2 PyObject *__pyx_t_8 = NULL; __Pyx_RefNannySetupContext("write", 0); - /* "ssh2/channel.pyx":372 + /* "ssh2/channel.pyx":369 * :rtype: tuple(int, int) * """ * cdef bytes b_buf = to_bytes(buf) # <<<<<<<<<<<<<< * cdef const char *_buf = b_buf * cdef size_t buf_remainder = len(b_buf) */ - __pyx_t_1 = __pyx_f_4ssh2_5utils_to_bytes(__pyx_v_buf); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 372, __pyx_L1_error) + __pyx_t_1 = __pyx_f_4ssh2_5utils_to_bytes(__pyx_v_buf); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 369, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_1); __pyx_v_b_buf = ((PyObject*)__pyx_t_1); __pyx_t_1 = 0; - /* "ssh2/channel.pyx":373 + /* "ssh2/channel.pyx":370 * """ * cdef bytes b_buf = to_bytes(buf) * cdef const char *_buf = b_buf # <<<<<<<<<<<<<< @@ -5411,12 +5357,12 @@ static PyObject *__pyx_pf_4ssh2_7channel_7Channel_52write(struct __pyx_obj_4ssh2 */ if (unlikely(__pyx_v_b_buf == Py_None)) { PyErr_SetString(PyExc_TypeError, "expected bytes, NoneType found"); - __PYX_ERR(0, 373, __pyx_L1_error) + __PYX_ERR(0, 370, __pyx_L1_error) } - __pyx_t_2 = __Pyx_PyBytes_AsString(__pyx_v_b_buf); if (unlikely((!__pyx_t_2) && PyErr_Occurred())) __PYX_ERR(0, 373, __pyx_L1_error) + __pyx_t_2 = __Pyx_PyBytes_AsString(__pyx_v_b_buf); if (unlikely((!__pyx_t_2) && PyErr_Occurred())) __PYX_ERR(0, 370, __pyx_L1_error) __pyx_v__buf = __pyx_t_2; - /* "ssh2/channel.pyx":374 + /* "ssh2/channel.pyx":371 * cdef bytes b_buf = to_bytes(buf) * cdef const char *_buf = b_buf * cdef size_t buf_remainder = len(b_buf) # <<<<<<<<<<<<<< @@ -5425,12 +5371,12 @@ static PyObject *__pyx_pf_4ssh2_7channel_7Channel_52write(struct __pyx_obj_4ssh2 */ if (unlikely(__pyx_v_b_buf == Py_None)) { PyErr_SetString(PyExc_TypeError, "object of type 'NoneType' has no len()"); - __PYX_ERR(0, 374, __pyx_L1_error) + __PYX_ERR(0, 371, __pyx_L1_error) } - __pyx_t_3 = PyBytes_GET_SIZE(__pyx_v_b_buf); if (unlikely(__pyx_t_3 == ((Py_ssize_t)-1))) __PYX_ERR(0, 374, __pyx_L1_error) + __pyx_t_3 = PyBytes_GET_SIZE(__pyx_v_b_buf); if (unlikely(__pyx_t_3 == ((Py_ssize_t)-1))) __PYX_ERR(0, 371, __pyx_L1_error) __pyx_v_buf_remainder = __pyx_t_3; - /* "ssh2/channel.pyx":375 + /* "ssh2/channel.pyx":372 * cdef const char *_buf = b_buf * cdef size_t buf_remainder = len(b_buf) * cdef size_t buf_tot_size = buf_remainder # <<<<<<<<<<<<<< @@ -5439,7 +5385,7 @@ static PyObject *__pyx_pf_4ssh2_7channel_7Channel_52write(struct __pyx_obj_4ssh2 */ __pyx_v_buf_tot_size = __pyx_v_buf_remainder; - /* "ssh2/channel.pyx":377 + /* "ssh2/channel.pyx":374 * cdef size_t buf_tot_size = buf_remainder * cdef ssize_t rc * cdef size_t bytes_written = 0 # <<<<<<<<<<<<<< @@ -5448,7 +5394,7 @@ static PyObject *__pyx_pf_4ssh2_7channel_7Channel_52write(struct __pyx_obj_4ssh2 */ __pyx_v_bytes_written = 0; - /* "ssh2/channel.pyx":378 + /* "ssh2/channel.pyx":375 * cdef ssize_t rc * cdef size_t bytes_written = 0 * with nogil: # <<<<<<<<<<<<<< @@ -5463,7 +5409,7 @@ static PyObject *__pyx_pf_4ssh2_7channel_7Channel_52write(struct __pyx_obj_4ssh2 #endif /*try:*/ { - /* "ssh2/channel.pyx":379 + /* "ssh2/channel.pyx":376 * cdef size_t bytes_written = 0 * with nogil: * while buf_remainder > 0: # <<<<<<<<<<<<<< @@ -5474,7 +5420,7 @@ static PyObject *__pyx_pf_4ssh2_7channel_7Channel_52write(struct __pyx_obj_4ssh2 __pyx_t_4 = ((__pyx_v_buf_remainder > 0) != 0); if (!__pyx_t_4) break; - /* "ssh2/channel.pyx":380 + /* "ssh2/channel.pyx":377 * with nogil: * while buf_remainder > 0: * rc = c_ssh2.libssh2_channel_write( # <<<<<<<<<<<<<< @@ -5483,7 +5429,7 @@ static PyObject *__pyx_pf_4ssh2_7channel_7Channel_52write(struct __pyx_obj_4ssh2 */ __pyx_v_rc = libssh2_channel_write(__pyx_v_self->_channel, __pyx_v__buf, __pyx_v_buf_remainder); - /* "ssh2/channel.pyx":382 + /* "ssh2/channel.pyx":379 * rc = c_ssh2.libssh2_channel_write( * self._channel, _buf, buf_remainder) * if rc < 0 and rc != c_ssh2.LIBSSH2_ERROR_EAGAIN: # <<<<<<<<<<<<<< @@ -5501,7 +5447,7 @@ static PyObject *__pyx_pf_4ssh2_7channel_7Channel_52write(struct __pyx_obj_4ssh2 __pyx_L9_bool_binop_done:; if (__pyx_t_4) { - /* "ssh2/channel.pyx":384 + /* "ssh2/channel.pyx":381 * if rc < 0 and rc != c_ssh2.LIBSSH2_ERROR_EAGAIN: * # Error that will raise exception * with gil: # <<<<<<<<<<<<<< @@ -5514,7 +5460,7 @@ static PyObject *__pyx_pf_4ssh2_7channel_7Channel_52write(struct __pyx_obj_4ssh2 #endif /*try:*/ { - /* "ssh2/channel.pyx":385 + /* "ssh2/channel.pyx":382 * # Error that will raise exception * with gil: * return handle_error_codes(rc) # <<<<<<<<<<<<<< @@ -5522,15 +5468,15 @@ static PyObject *__pyx_pf_4ssh2_7channel_7Channel_52write(struct __pyx_obj_4ssh2 * break */ __Pyx_XDECREF(__pyx_r); - __pyx_t_6 = __pyx_f_4ssh2_5utils_handle_error_codes(__pyx_v_rc, 0); if (unlikely(__pyx_t_6 == ((int)-1))) __PYX_ERR(0, 385, __pyx_L14_error) - __pyx_t_1 = __Pyx_PyInt_From_int(__pyx_t_6); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 385, __pyx_L14_error) + __pyx_t_6 = __pyx_f_4ssh2_5utils_handle_error_codes(__pyx_v_rc, 0); if (unlikely(__pyx_t_6 == ((int)-1))) __PYX_ERR(0, 382, __pyx_L14_error) + __pyx_t_1 = __Pyx_PyInt_From_int(__pyx_t_6); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 382, __pyx_L14_error) __Pyx_GOTREF(__pyx_t_1); __pyx_r = __pyx_t_1; __pyx_t_1 = 0; goto __pyx_L13_return; } - /* "ssh2/channel.pyx":384 + /* "ssh2/channel.pyx":381 * if rc < 0 and rc != c_ssh2.LIBSSH2_ERROR_EAGAIN: * # Error that will raise exception * with gil: # <<<<<<<<<<<<<< @@ -5553,7 +5499,7 @@ static PyObject *__pyx_pf_4ssh2_7channel_7Channel_52write(struct __pyx_obj_4ssh2 } } - /* "ssh2/channel.pyx":382 + /* "ssh2/channel.pyx":379 * rc = c_ssh2.libssh2_channel_write( * self._channel, _buf, buf_remainder) * if rc < 0 and rc != c_ssh2.LIBSSH2_ERROR_EAGAIN: # <<<<<<<<<<<<<< @@ -5562,7 +5508,7 @@ static PyObject *__pyx_pf_4ssh2_7channel_7Channel_52write(struct __pyx_obj_4ssh2 */ } - /* "ssh2/channel.pyx":386 + /* "ssh2/channel.pyx":383 * with gil: * return handle_error_codes(rc) * elif rc == c_ssh2.LIBSSH2_ERROR_EAGAIN: # <<<<<<<<<<<<<< @@ -5572,7 +5518,7 @@ static PyObject *__pyx_pf_4ssh2_7channel_7Channel_52write(struct __pyx_obj_4ssh2 __pyx_t_4 = ((__pyx_v_rc == LIBSSH2_ERROR_EAGAIN) != 0); if (__pyx_t_4) { - /* "ssh2/channel.pyx":387 + /* "ssh2/channel.pyx":384 * return handle_error_codes(rc) * elif rc == c_ssh2.LIBSSH2_ERROR_EAGAIN: * break # <<<<<<<<<<<<<< @@ -5581,7 +5527,7 @@ static PyObject *__pyx_pf_4ssh2_7channel_7Channel_52write(struct __pyx_obj_4ssh2 */ goto __pyx_L7_break; - /* "ssh2/channel.pyx":386 + /* "ssh2/channel.pyx":383 * with gil: * return handle_error_codes(rc) * elif rc == c_ssh2.LIBSSH2_ERROR_EAGAIN: # <<<<<<<<<<<<<< @@ -5590,7 +5536,7 @@ static PyObject *__pyx_pf_4ssh2_7channel_7Channel_52write(struct __pyx_obj_4ssh2 */ } - /* "ssh2/channel.pyx":388 + /* "ssh2/channel.pyx":385 * elif rc == c_ssh2.LIBSSH2_ERROR_EAGAIN: * break * _buf += rc # <<<<<<<<<<<<<< @@ -5599,7 +5545,7 @@ static PyObject *__pyx_pf_4ssh2_7channel_7Channel_52write(struct __pyx_obj_4ssh2 */ __pyx_v__buf = (__pyx_v__buf + __pyx_v_rc); - /* "ssh2/channel.pyx":389 + /* "ssh2/channel.pyx":386 * break * _buf += rc * buf_remainder -= rc # <<<<<<<<<<<<<< @@ -5610,7 +5556,7 @@ static PyObject *__pyx_pf_4ssh2_7channel_7Channel_52write(struct __pyx_obj_4ssh2 } __pyx_L7_break:; - /* "ssh2/channel.pyx":390 + /* "ssh2/channel.pyx":387 * _buf += rc * buf_remainder -= rc * bytes_written = buf_tot_size - buf_remainder # <<<<<<<<<<<<<< @@ -5620,7 +5566,7 @@ static PyObject *__pyx_pf_4ssh2_7channel_7Channel_52write(struct __pyx_obj_4ssh2 __pyx_v_bytes_written = (__pyx_v_buf_tot_size - __pyx_v_buf_remainder); } - /* "ssh2/channel.pyx":378 + /* "ssh2/channel.pyx":375 * cdef ssize_t rc * cdef size_t bytes_written = 0 * with nogil: # <<<<<<<<<<<<<< @@ -5653,7 +5599,7 @@ static PyObject *__pyx_pf_4ssh2_7channel_7Channel_52write(struct __pyx_obj_4ssh2 } } - /* "ssh2/channel.pyx":391 + /* "ssh2/channel.pyx":388 * buf_remainder -= rc * bytes_written = buf_tot_size - buf_remainder * return rc, bytes_written # <<<<<<<<<<<<<< @@ -5661,11 +5607,11 @@ static PyObject *__pyx_pf_4ssh2_7channel_7Channel_52write(struct __pyx_obj_4ssh2 * def write_ex(self, int stream_id, buf not None): */ __Pyx_XDECREF(__pyx_r); - __pyx_t_1 = PyInt_FromSsize_t(__pyx_v_rc); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 391, __pyx_L1_error) + __pyx_t_1 = PyInt_FromSsize_t(__pyx_v_rc); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 388, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_1); - __pyx_t_7 = __Pyx_PyInt_FromSize_t(__pyx_v_bytes_written); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 391, __pyx_L1_error) + __pyx_t_7 = __Pyx_PyInt_FromSize_t(__pyx_v_bytes_written); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 388, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_7); - __pyx_t_8 = PyTuple_New(2); if (unlikely(!__pyx_t_8)) __PYX_ERR(0, 391, __pyx_L1_error) + __pyx_t_8 = PyTuple_New(2); if (unlikely(!__pyx_t_8)) __PYX_ERR(0, 388, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_8); __Pyx_GIVEREF(__pyx_t_1); PyTuple_SET_ITEM(__pyx_t_8, 0, __pyx_t_1); @@ -5677,7 +5623,7 @@ static PyObject *__pyx_pf_4ssh2_7channel_7Channel_52write(struct __pyx_obj_4ssh2 __pyx_t_8 = 0; goto __pyx_L0; - /* "ssh2/channel.pyx":347 + /* "ssh2/channel.pyx":344 * return handle_error_codes(rc) * * def write(self, buf not None): # <<<<<<<<<<<<<< @@ -5699,7 +5645,7 @@ static PyObject *__pyx_pf_4ssh2_7channel_7Channel_52write(struct __pyx_obj_4ssh2 return __pyx_r; } -/* "ssh2/channel.pyx":393 +/* "ssh2/channel.pyx":390 * return rc, bytes_written * * def write_ex(self, int stream_id, buf not None): # <<<<<<<<<<<<<< @@ -5739,11 +5685,11 @@ static PyObject *__pyx_pw_4ssh2_7channel_7Channel_55write_ex(PyObject *__pyx_v_s case 1: if (likely((values[1] = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_buf)) != 0)) kw_args--; else { - __Pyx_RaiseArgtupleInvalid("write_ex", 1, 2, 2, 1); __PYX_ERR(0, 393, __pyx_L3_error) + __Pyx_RaiseArgtupleInvalid("write_ex", 1, 2, 2, 1); __PYX_ERR(0, 390, __pyx_L3_error) } } if (unlikely(kw_args > 0)) { - if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_pyargnames, 0, values, pos_args, "write_ex") < 0)) __PYX_ERR(0, 393, __pyx_L3_error) + if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_pyargnames, 0, values, pos_args, "write_ex") < 0)) __PYX_ERR(0, 390, __pyx_L3_error) } } else if (PyTuple_GET_SIZE(__pyx_args) != 2) { goto __pyx_L5_argtuple_error; @@ -5751,19 +5697,19 @@ static PyObject *__pyx_pw_4ssh2_7channel_7Channel_55write_ex(PyObject *__pyx_v_s values[0] = PyTuple_GET_ITEM(__pyx_args, 0); values[1] = PyTuple_GET_ITEM(__pyx_args, 1); } - __pyx_v_stream_id = __Pyx_PyInt_As_int(values[0]); if (unlikely((__pyx_v_stream_id == (int)-1) && PyErr_Occurred())) __PYX_ERR(0, 393, __pyx_L3_error) + __pyx_v_stream_id = __Pyx_PyInt_As_int(values[0]); if (unlikely((__pyx_v_stream_id == (int)-1) && PyErr_Occurred())) __PYX_ERR(0, 390, __pyx_L3_error) __pyx_v_buf = values[1]; } goto __pyx_L4_argument_unpacking_done; __pyx_L5_argtuple_error:; - __Pyx_RaiseArgtupleInvalid("write_ex", 1, 2, 2, PyTuple_GET_SIZE(__pyx_args)); __PYX_ERR(0, 393, __pyx_L3_error) + __Pyx_RaiseArgtupleInvalid("write_ex", 1, 2, 2, PyTuple_GET_SIZE(__pyx_args)); __PYX_ERR(0, 390, __pyx_L3_error) __pyx_L3_error:; __Pyx_AddTraceback("ssh2.channel.Channel.write_ex", __pyx_clineno, __pyx_lineno, __pyx_filename); __Pyx_RefNannyFinishContext(); return NULL; __pyx_L4_argument_unpacking_done:; if (unlikely(((PyObject *)__pyx_v_buf) == Py_None)) { - PyErr_Format(PyExc_TypeError, "Argument '%.200s' must not be None", "buf"); __PYX_ERR(0, 393, __pyx_L1_error) + PyErr_Format(PyExc_TypeError, "Argument '%.200s' must not be None", "buf"); __PYX_ERR(0, 390, __pyx_L1_error) } __pyx_r = __pyx_pf_4ssh2_7channel_7Channel_54write_ex(((struct __pyx_obj_4ssh2_7channel_Channel *)__pyx_v_self), __pyx_v_stream_id, __pyx_v_buf); @@ -5795,19 +5741,19 @@ static PyObject *__pyx_pf_4ssh2_7channel_7Channel_54write_ex(struct __pyx_obj_4s PyObject *__pyx_t_8 = NULL; __Pyx_RefNannySetupContext("write_ex", 0); - /* "ssh2/channel.pyx":420 + /* "ssh2/channel.pyx":417 * :rtype: tuple(int, int) * """ * cdef bytes b_buf = to_bytes(buf) # <<<<<<<<<<<<<< * cdef const char *_buf = b_buf * cdef size_t buf_remainder = len(b_buf) */ - __pyx_t_1 = __pyx_f_4ssh2_5utils_to_bytes(__pyx_v_buf); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 420, __pyx_L1_error) + __pyx_t_1 = __pyx_f_4ssh2_5utils_to_bytes(__pyx_v_buf); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 417, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_1); __pyx_v_b_buf = ((PyObject*)__pyx_t_1); __pyx_t_1 = 0; - /* "ssh2/channel.pyx":421 + /* "ssh2/channel.pyx":418 * """ * cdef bytes b_buf = to_bytes(buf) * cdef const char *_buf = b_buf # <<<<<<<<<<<<<< @@ -5816,12 +5762,12 @@ static PyObject *__pyx_pf_4ssh2_7channel_7Channel_54write_ex(struct __pyx_obj_4s */ if (unlikely(__pyx_v_b_buf == Py_None)) { PyErr_SetString(PyExc_TypeError, "expected bytes, NoneType found"); - __PYX_ERR(0, 421, __pyx_L1_error) + __PYX_ERR(0, 418, __pyx_L1_error) } - __pyx_t_2 = __Pyx_PyBytes_AsString(__pyx_v_b_buf); if (unlikely((!__pyx_t_2) && PyErr_Occurred())) __PYX_ERR(0, 421, __pyx_L1_error) + __pyx_t_2 = __Pyx_PyBytes_AsString(__pyx_v_b_buf); if (unlikely((!__pyx_t_2) && PyErr_Occurred())) __PYX_ERR(0, 418, __pyx_L1_error) __pyx_v__buf = __pyx_t_2; - /* "ssh2/channel.pyx":422 + /* "ssh2/channel.pyx":419 * cdef bytes b_buf = to_bytes(buf) * cdef const char *_buf = b_buf * cdef size_t buf_remainder = len(b_buf) # <<<<<<<<<<<<<< @@ -5830,12 +5776,12 @@ static PyObject *__pyx_pf_4ssh2_7channel_7Channel_54write_ex(struct __pyx_obj_4s */ if (unlikely(__pyx_v_b_buf == Py_None)) { PyErr_SetString(PyExc_TypeError, "object of type 'NoneType' has no len()"); - __PYX_ERR(0, 422, __pyx_L1_error) + __PYX_ERR(0, 419, __pyx_L1_error) } - __pyx_t_3 = PyBytes_GET_SIZE(__pyx_v_b_buf); if (unlikely(__pyx_t_3 == ((Py_ssize_t)-1))) __PYX_ERR(0, 422, __pyx_L1_error) + __pyx_t_3 = PyBytes_GET_SIZE(__pyx_v_b_buf); if (unlikely(__pyx_t_3 == ((Py_ssize_t)-1))) __PYX_ERR(0, 419, __pyx_L1_error) __pyx_v_buf_remainder = __pyx_t_3; - /* "ssh2/channel.pyx":423 + /* "ssh2/channel.pyx":420 * cdef const char *_buf = b_buf * cdef size_t buf_remainder = len(b_buf) * cdef size_t buf_tot_size = buf_remainder # <<<<<<<<<<<<<< @@ -5844,7 +5790,7 @@ static PyObject *__pyx_pf_4ssh2_7channel_7Channel_54write_ex(struct __pyx_obj_4s */ __pyx_v_buf_tot_size = __pyx_v_buf_remainder; - /* "ssh2/channel.pyx":425 + /* "ssh2/channel.pyx":422 * cdef size_t buf_tot_size = buf_remainder * cdef ssize_t rc * cdef size_t bytes_written = 0 # <<<<<<<<<<<<<< @@ -5853,7 +5799,7 @@ static PyObject *__pyx_pf_4ssh2_7channel_7Channel_54write_ex(struct __pyx_obj_4s */ __pyx_v_bytes_written = 0; - /* "ssh2/channel.pyx":426 + /* "ssh2/channel.pyx":423 * cdef ssize_t rc * cdef size_t bytes_written = 0 * with nogil: # <<<<<<<<<<<<<< @@ -5868,7 +5814,7 @@ static PyObject *__pyx_pf_4ssh2_7channel_7Channel_54write_ex(struct __pyx_obj_4s #endif /*try:*/ { - /* "ssh2/channel.pyx":428 + /* "ssh2/channel.pyx":425 * with nogil: * # Write until buffer has been fully written or socket is blocked * while buf_remainder > 0: # <<<<<<<<<<<<<< @@ -5879,7 +5825,7 @@ static PyObject *__pyx_pf_4ssh2_7channel_7Channel_54write_ex(struct __pyx_obj_4s __pyx_t_4 = ((__pyx_v_buf_remainder > 0) != 0); if (!__pyx_t_4) break; - /* "ssh2/channel.pyx":429 + /* "ssh2/channel.pyx":426 * # Write until buffer has been fully written or socket is blocked * while buf_remainder > 0: * rc = c_ssh2.libssh2_channel_write_ex( # <<<<<<<<<<<<<< @@ -5888,7 +5834,7 @@ static PyObject *__pyx_pf_4ssh2_7channel_7Channel_54write_ex(struct __pyx_obj_4s */ __pyx_v_rc = libssh2_channel_write_ex(__pyx_v_self->_channel, __pyx_v_stream_id, __pyx_v__buf, __pyx_v_buf_remainder); - /* "ssh2/channel.pyx":431 + /* "ssh2/channel.pyx":428 * rc = c_ssh2.libssh2_channel_write_ex( * self._channel, stream_id, _buf, buf_remainder) * if rc < 0 and rc != c_ssh2.LIBSSH2_ERROR_EAGAIN: # <<<<<<<<<<<<<< @@ -5906,7 +5852,7 @@ static PyObject *__pyx_pf_4ssh2_7channel_7Channel_54write_ex(struct __pyx_obj_4s __pyx_L9_bool_binop_done:; if (__pyx_t_4) { - /* "ssh2/channel.pyx":433 + /* "ssh2/channel.pyx":430 * if rc < 0 and rc != c_ssh2.LIBSSH2_ERROR_EAGAIN: * # Error that will raise exception * with gil: # <<<<<<<<<<<<<< @@ -5919,7 +5865,7 @@ static PyObject *__pyx_pf_4ssh2_7channel_7Channel_54write_ex(struct __pyx_obj_4s #endif /*try:*/ { - /* "ssh2/channel.pyx":434 + /* "ssh2/channel.pyx":431 * # Error that will raise exception * with gil: * return handle_error_codes(rc) # <<<<<<<<<<<<<< @@ -5927,15 +5873,15 @@ static PyObject *__pyx_pf_4ssh2_7channel_7Channel_54write_ex(struct __pyx_obj_4s * break */ __Pyx_XDECREF(__pyx_r); - __pyx_t_6 = __pyx_f_4ssh2_5utils_handle_error_codes(__pyx_v_rc, 0); if (unlikely(__pyx_t_6 == ((int)-1))) __PYX_ERR(0, 434, __pyx_L14_error) - __pyx_t_1 = __Pyx_PyInt_From_int(__pyx_t_6); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 434, __pyx_L14_error) + __pyx_t_6 = __pyx_f_4ssh2_5utils_handle_error_codes(__pyx_v_rc, 0); if (unlikely(__pyx_t_6 == ((int)-1))) __PYX_ERR(0, 431, __pyx_L14_error) + __pyx_t_1 = __Pyx_PyInt_From_int(__pyx_t_6); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 431, __pyx_L14_error) __Pyx_GOTREF(__pyx_t_1); __pyx_r = __pyx_t_1; __pyx_t_1 = 0; goto __pyx_L13_return; } - /* "ssh2/channel.pyx":433 + /* "ssh2/channel.pyx":430 * if rc < 0 and rc != c_ssh2.LIBSSH2_ERROR_EAGAIN: * # Error that will raise exception * with gil: # <<<<<<<<<<<<<< @@ -5958,7 +5904,7 @@ static PyObject *__pyx_pf_4ssh2_7channel_7Channel_54write_ex(struct __pyx_obj_4s } } - /* "ssh2/channel.pyx":431 + /* "ssh2/channel.pyx":428 * rc = c_ssh2.libssh2_channel_write_ex( * self._channel, stream_id, _buf, buf_remainder) * if rc < 0 and rc != c_ssh2.LIBSSH2_ERROR_EAGAIN: # <<<<<<<<<<<<<< @@ -5967,7 +5913,7 @@ static PyObject *__pyx_pf_4ssh2_7channel_7Channel_54write_ex(struct __pyx_obj_4s */ } - /* "ssh2/channel.pyx":435 + /* "ssh2/channel.pyx":432 * with gil: * return handle_error_codes(rc) * elif rc == c_ssh2.LIBSSH2_ERROR_EAGAIN: # <<<<<<<<<<<<<< @@ -5977,7 +5923,7 @@ static PyObject *__pyx_pf_4ssh2_7channel_7Channel_54write_ex(struct __pyx_obj_4s __pyx_t_4 = ((__pyx_v_rc == LIBSSH2_ERROR_EAGAIN) != 0); if (__pyx_t_4) { - /* "ssh2/channel.pyx":436 + /* "ssh2/channel.pyx":433 * return handle_error_codes(rc) * elif rc == c_ssh2.LIBSSH2_ERROR_EAGAIN: * break # <<<<<<<<<<<<<< @@ -5986,7 +5932,7 @@ static PyObject *__pyx_pf_4ssh2_7channel_7Channel_54write_ex(struct __pyx_obj_4s */ goto __pyx_L7_break; - /* "ssh2/channel.pyx":435 + /* "ssh2/channel.pyx":432 * with gil: * return handle_error_codes(rc) * elif rc == c_ssh2.LIBSSH2_ERROR_EAGAIN: # <<<<<<<<<<<<<< @@ -5995,7 +5941,7 @@ static PyObject *__pyx_pf_4ssh2_7channel_7Channel_54write_ex(struct __pyx_obj_4s */ } - /* "ssh2/channel.pyx":437 + /* "ssh2/channel.pyx":434 * elif rc == c_ssh2.LIBSSH2_ERROR_EAGAIN: * break * _buf += rc # <<<<<<<<<<<<<< @@ -6004,7 +5950,7 @@ static PyObject *__pyx_pf_4ssh2_7channel_7Channel_54write_ex(struct __pyx_obj_4s */ __pyx_v__buf = (__pyx_v__buf + __pyx_v_rc); - /* "ssh2/channel.pyx":438 + /* "ssh2/channel.pyx":435 * break * _buf += rc * buf_remainder -= rc # <<<<<<<<<<<<<< @@ -6015,7 +5961,7 @@ static PyObject *__pyx_pf_4ssh2_7channel_7Channel_54write_ex(struct __pyx_obj_4s } __pyx_L7_break:; - /* "ssh2/channel.pyx":439 + /* "ssh2/channel.pyx":436 * _buf += rc * buf_remainder -= rc * bytes_written = buf_tot_size - buf_remainder # <<<<<<<<<<<<<< @@ -6025,7 +5971,7 @@ static PyObject *__pyx_pf_4ssh2_7channel_7Channel_54write_ex(struct __pyx_obj_4s __pyx_v_bytes_written = (__pyx_v_buf_tot_size - __pyx_v_buf_remainder); } - /* "ssh2/channel.pyx":426 + /* "ssh2/channel.pyx":423 * cdef ssize_t rc * cdef size_t bytes_written = 0 * with nogil: # <<<<<<<<<<<<<< @@ -6058,7 +6004,7 @@ static PyObject *__pyx_pf_4ssh2_7channel_7Channel_54write_ex(struct __pyx_obj_4s } } - /* "ssh2/channel.pyx":440 + /* "ssh2/channel.pyx":437 * buf_remainder -= rc * bytes_written = buf_tot_size - buf_remainder * return rc, bytes_written # <<<<<<<<<<<<<< @@ -6066,11 +6012,11 @@ static PyObject *__pyx_pf_4ssh2_7channel_7Channel_54write_ex(struct __pyx_obj_4s * def write_stderr(self, buf not None): */ __Pyx_XDECREF(__pyx_r); - __pyx_t_1 = PyInt_FromSsize_t(__pyx_v_rc); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 440, __pyx_L1_error) + __pyx_t_1 = PyInt_FromSsize_t(__pyx_v_rc); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 437, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_1); - __pyx_t_7 = __Pyx_PyInt_FromSize_t(__pyx_v_bytes_written); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 440, __pyx_L1_error) + __pyx_t_7 = __Pyx_PyInt_FromSize_t(__pyx_v_bytes_written); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 437, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_7); - __pyx_t_8 = PyTuple_New(2); if (unlikely(!__pyx_t_8)) __PYX_ERR(0, 440, __pyx_L1_error) + __pyx_t_8 = PyTuple_New(2); if (unlikely(!__pyx_t_8)) __PYX_ERR(0, 437, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_8); __Pyx_GIVEREF(__pyx_t_1); PyTuple_SET_ITEM(__pyx_t_8, 0, __pyx_t_1); @@ -6082,7 +6028,7 @@ static PyObject *__pyx_pf_4ssh2_7channel_7Channel_54write_ex(struct __pyx_obj_4s __pyx_t_8 = 0; goto __pyx_L0; - /* "ssh2/channel.pyx":393 + /* "ssh2/channel.pyx":390 * return rc, bytes_written * * def write_ex(self, int stream_id, buf not None): # <<<<<<<<<<<<<< @@ -6104,7 +6050,7 @@ static PyObject *__pyx_pf_4ssh2_7channel_7Channel_54write_ex(struct __pyx_obj_4s return __pyx_r; } -/* "ssh2/channel.pyx":442 +/* "ssh2/channel.pyx":439 * return rc, bytes_written * * def write_stderr(self, buf not None): # <<<<<<<<<<<<<< @@ -6120,7 +6066,7 @@ static PyObject *__pyx_pw_4ssh2_7channel_7Channel_57write_stderr(PyObject *__pyx __Pyx_RefNannyDeclarations __Pyx_RefNannySetupContext("write_stderr (wrapper)", 0); if (unlikely(((PyObject *)__pyx_v_buf) == Py_None)) { - PyErr_Format(PyExc_TypeError, "Argument '%.200s' must not be None", "buf"); __PYX_ERR(0, 442, __pyx_L1_error) + PyErr_Format(PyExc_TypeError, "Argument '%.200s' must not be None", "buf"); __PYX_ERR(0, 439, __pyx_L1_error) } __pyx_r = __pyx_pf_4ssh2_7channel_7Channel_56write_stderr(((struct __pyx_obj_4ssh2_7channel_Channel *)__pyx_v_self), ((PyObject *)__pyx_v_buf)); @@ -6152,19 +6098,19 @@ static PyObject *__pyx_pf_4ssh2_7channel_7Channel_56write_stderr(struct __pyx_ob PyObject *__pyx_t_8 = NULL; __Pyx_RefNannySetupContext("write_stderr", 0); - /* "ssh2/channel.pyx":467 + /* "ssh2/channel.pyx":464 * :rtype: tuple(int, int) * """ * cdef bytes b_buf = to_bytes(buf) # <<<<<<<<<<<<<< * cdef const char *_buf = b_buf * cdef size_t buf_remainder = len(b_buf) */ - __pyx_t_1 = __pyx_f_4ssh2_5utils_to_bytes(__pyx_v_buf); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 467, __pyx_L1_error) + __pyx_t_1 = __pyx_f_4ssh2_5utils_to_bytes(__pyx_v_buf); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 464, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_1); __pyx_v_b_buf = ((PyObject*)__pyx_t_1); __pyx_t_1 = 0; - /* "ssh2/channel.pyx":468 + /* "ssh2/channel.pyx":465 * """ * cdef bytes b_buf = to_bytes(buf) * cdef const char *_buf = b_buf # <<<<<<<<<<<<<< @@ -6173,12 +6119,12 @@ static PyObject *__pyx_pf_4ssh2_7channel_7Channel_56write_stderr(struct __pyx_ob */ if (unlikely(__pyx_v_b_buf == Py_None)) { PyErr_SetString(PyExc_TypeError, "expected bytes, NoneType found"); - __PYX_ERR(0, 468, __pyx_L1_error) + __PYX_ERR(0, 465, __pyx_L1_error) } - __pyx_t_2 = __Pyx_PyBytes_AsString(__pyx_v_b_buf); if (unlikely((!__pyx_t_2) && PyErr_Occurred())) __PYX_ERR(0, 468, __pyx_L1_error) + __pyx_t_2 = __Pyx_PyBytes_AsString(__pyx_v_b_buf); if (unlikely((!__pyx_t_2) && PyErr_Occurred())) __PYX_ERR(0, 465, __pyx_L1_error) __pyx_v__buf = __pyx_t_2; - /* "ssh2/channel.pyx":469 + /* "ssh2/channel.pyx":466 * cdef bytes b_buf = to_bytes(buf) * cdef const char *_buf = b_buf * cdef size_t buf_remainder = len(b_buf) # <<<<<<<<<<<<<< @@ -6187,12 +6133,12 @@ static PyObject *__pyx_pf_4ssh2_7channel_7Channel_56write_stderr(struct __pyx_ob */ if (unlikely(__pyx_v_b_buf == Py_None)) { PyErr_SetString(PyExc_TypeError, "object of type 'NoneType' has no len()"); - __PYX_ERR(0, 469, __pyx_L1_error) + __PYX_ERR(0, 466, __pyx_L1_error) } - __pyx_t_3 = PyBytes_GET_SIZE(__pyx_v_b_buf); if (unlikely(__pyx_t_3 == ((Py_ssize_t)-1))) __PYX_ERR(0, 469, __pyx_L1_error) + __pyx_t_3 = PyBytes_GET_SIZE(__pyx_v_b_buf); if (unlikely(__pyx_t_3 == ((Py_ssize_t)-1))) __PYX_ERR(0, 466, __pyx_L1_error) __pyx_v_buf_remainder = __pyx_t_3; - /* "ssh2/channel.pyx":470 + /* "ssh2/channel.pyx":467 * cdef const char *_buf = b_buf * cdef size_t buf_remainder = len(b_buf) * cdef size_t buf_tot_size = buf_remainder # <<<<<<<<<<<<<< @@ -6201,7 +6147,7 @@ static PyObject *__pyx_pf_4ssh2_7channel_7Channel_56write_stderr(struct __pyx_ob */ __pyx_v_buf_tot_size = __pyx_v_buf_remainder; - /* "ssh2/channel.pyx":472 + /* "ssh2/channel.pyx":469 * cdef size_t buf_tot_size = buf_remainder * cdef ssize_t rc * cdef size_t bytes_written = 0 # <<<<<<<<<<<<<< @@ -6210,7 +6156,7 @@ static PyObject *__pyx_pf_4ssh2_7channel_7Channel_56write_stderr(struct __pyx_ob */ __pyx_v_bytes_written = 0; - /* "ssh2/channel.pyx":473 + /* "ssh2/channel.pyx":470 * cdef ssize_t rc * cdef size_t bytes_written = 0 * with nogil: # <<<<<<<<<<<<<< @@ -6225,7 +6171,7 @@ static PyObject *__pyx_pf_4ssh2_7channel_7Channel_56write_stderr(struct __pyx_ob #endif /*try:*/ { - /* "ssh2/channel.pyx":474 + /* "ssh2/channel.pyx":471 * cdef size_t bytes_written = 0 * with nogil: * while buf_remainder > 0: # <<<<<<<<<<<<<< @@ -6236,7 +6182,7 @@ static PyObject *__pyx_pf_4ssh2_7channel_7Channel_56write_stderr(struct __pyx_ob __pyx_t_4 = ((__pyx_v_buf_remainder > 0) != 0); if (!__pyx_t_4) break; - /* "ssh2/channel.pyx":475 + /* "ssh2/channel.pyx":472 * with nogil: * while buf_remainder > 0: * rc = c_ssh2.libssh2_channel_write_stderr( # <<<<<<<<<<<<<< @@ -6245,7 +6191,7 @@ static PyObject *__pyx_pf_4ssh2_7channel_7Channel_56write_stderr(struct __pyx_ob */ __pyx_v_rc = libssh2_channel_write_stderr(__pyx_v_self->_channel, __pyx_v__buf, __pyx_v_buf_remainder); - /* "ssh2/channel.pyx":477 + /* "ssh2/channel.pyx":474 * rc = c_ssh2.libssh2_channel_write_stderr( * self._channel, _buf, buf_remainder) * if rc < 0 and rc != c_ssh2.LIBSSH2_ERROR_EAGAIN: # <<<<<<<<<<<<<< @@ -6263,7 +6209,7 @@ static PyObject *__pyx_pf_4ssh2_7channel_7Channel_56write_stderr(struct __pyx_ob __pyx_L9_bool_binop_done:; if (__pyx_t_4) { - /* "ssh2/channel.pyx":479 + /* "ssh2/channel.pyx":476 * if rc < 0 and rc != c_ssh2.LIBSSH2_ERROR_EAGAIN: * # Error that will raise exception * with gil: # <<<<<<<<<<<<<< @@ -6276,7 +6222,7 @@ static PyObject *__pyx_pf_4ssh2_7channel_7Channel_56write_stderr(struct __pyx_ob #endif /*try:*/ { - /* "ssh2/channel.pyx":480 + /* "ssh2/channel.pyx":477 * # Error that will raise exception * with gil: * return handle_error_codes(rc) # <<<<<<<<<<<<<< @@ -6284,15 +6230,15 @@ static PyObject *__pyx_pf_4ssh2_7channel_7Channel_56write_stderr(struct __pyx_ob * break */ __Pyx_XDECREF(__pyx_r); - __pyx_t_6 = __pyx_f_4ssh2_5utils_handle_error_codes(__pyx_v_rc, 0); if (unlikely(__pyx_t_6 == ((int)-1))) __PYX_ERR(0, 480, __pyx_L14_error) - __pyx_t_1 = __Pyx_PyInt_From_int(__pyx_t_6); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 480, __pyx_L14_error) + __pyx_t_6 = __pyx_f_4ssh2_5utils_handle_error_codes(__pyx_v_rc, 0); if (unlikely(__pyx_t_6 == ((int)-1))) __PYX_ERR(0, 477, __pyx_L14_error) + __pyx_t_1 = __Pyx_PyInt_From_int(__pyx_t_6); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 477, __pyx_L14_error) __Pyx_GOTREF(__pyx_t_1); __pyx_r = __pyx_t_1; __pyx_t_1 = 0; goto __pyx_L13_return; } - /* "ssh2/channel.pyx":479 + /* "ssh2/channel.pyx":476 * if rc < 0 and rc != c_ssh2.LIBSSH2_ERROR_EAGAIN: * # Error that will raise exception * with gil: # <<<<<<<<<<<<<< @@ -6315,7 +6261,7 @@ static PyObject *__pyx_pf_4ssh2_7channel_7Channel_56write_stderr(struct __pyx_ob } } - /* "ssh2/channel.pyx":477 + /* "ssh2/channel.pyx":474 * rc = c_ssh2.libssh2_channel_write_stderr( * self._channel, _buf, buf_remainder) * if rc < 0 and rc != c_ssh2.LIBSSH2_ERROR_EAGAIN: # <<<<<<<<<<<<<< @@ -6324,7 +6270,7 @@ static PyObject *__pyx_pf_4ssh2_7channel_7Channel_56write_stderr(struct __pyx_ob */ } - /* "ssh2/channel.pyx":481 + /* "ssh2/channel.pyx":478 * with gil: * return handle_error_codes(rc) * elif rc == c_ssh2.LIBSSH2_ERROR_EAGAIN: # <<<<<<<<<<<<<< @@ -6334,7 +6280,7 @@ static PyObject *__pyx_pf_4ssh2_7channel_7Channel_56write_stderr(struct __pyx_ob __pyx_t_4 = ((__pyx_v_rc == LIBSSH2_ERROR_EAGAIN) != 0); if (__pyx_t_4) { - /* "ssh2/channel.pyx":482 + /* "ssh2/channel.pyx":479 * return handle_error_codes(rc) * elif rc == c_ssh2.LIBSSH2_ERROR_EAGAIN: * break # <<<<<<<<<<<<<< @@ -6343,7 +6289,7 @@ static PyObject *__pyx_pf_4ssh2_7channel_7Channel_56write_stderr(struct __pyx_ob */ goto __pyx_L7_break; - /* "ssh2/channel.pyx":481 + /* "ssh2/channel.pyx":478 * with gil: * return handle_error_codes(rc) * elif rc == c_ssh2.LIBSSH2_ERROR_EAGAIN: # <<<<<<<<<<<<<< @@ -6352,7 +6298,7 @@ static PyObject *__pyx_pf_4ssh2_7channel_7Channel_56write_stderr(struct __pyx_ob */ } - /* "ssh2/channel.pyx":483 + /* "ssh2/channel.pyx":480 * elif rc == c_ssh2.LIBSSH2_ERROR_EAGAIN: * break * _buf += rc # <<<<<<<<<<<<<< @@ -6361,7 +6307,7 @@ static PyObject *__pyx_pf_4ssh2_7channel_7Channel_56write_stderr(struct __pyx_ob */ __pyx_v__buf = (__pyx_v__buf + __pyx_v_rc); - /* "ssh2/channel.pyx":484 + /* "ssh2/channel.pyx":481 * break * _buf += rc * buf_remainder -= rc # <<<<<<<<<<<<<< @@ -6372,7 +6318,7 @@ static PyObject *__pyx_pf_4ssh2_7channel_7Channel_56write_stderr(struct __pyx_ob } __pyx_L7_break:; - /* "ssh2/channel.pyx":485 + /* "ssh2/channel.pyx":482 * _buf += rc * buf_remainder -= rc * bytes_written = buf_tot_size - buf_remainder # <<<<<<<<<<<<<< @@ -6382,7 +6328,7 @@ static PyObject *__pyx_pf_4ssh2_7channel_7Channel_56write_stderr(struct __pyx_ob __pyx_v_bytes_written = (__pyx_v_buf_tot_size - __pyx_v_buf_remainder); } - /* "ssh2/channel.pyx":473 + /* "ssh2/channel.pyx":470 * cdef ssize_t rc * cdef size_t bytes_written = 0 * with nogil: # <<<<<<<<<<<<<< @@ -6415,7 +6361,7 @@ static PyObject *__pyx_pf_4ssh2_7channel_7Channel_56write_stderr(struct __pyx_ob } } - /* "ssh2/channel.pyx":486 + /* "ssh2/channel.pyx":483 * buf_remainder -= rc * bytes_written = buf_tot_size - buf_remainder * return rc, bytes_written # <<<<<<<<<<<<<< @@ -6423,11 +6369,11 @@ static PyObject *__pyx_pf_4ssh2_7channel_7Channel_56write_stderr(struct __pyx_ob * def x11_req(self, int screen_number): */ __Pyx_XDECREF(__pyx_r); - __pyx_t_1 = PyInt_FromSsize_t(__pyx_v_rc); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 486, __pyx_L1_error) + __pyx_t_1 = PyInt_FromSsize_t(__pyx_v_rc); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 483, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_1); - __pyx_t_7 = __Pyx_PyInt_FromSize_t(__pyx_v_bytes_written); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 486, __pyx_L1_error) + __pyx_t_7 = __Pyx_PyInt_FromSize_t(__pyx_v_bytes_written); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 483, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_7); - __pyx_t_8 = PyTuple_New(2); if (unlikely(!__pyx_t_8)) __PYX_ERR(0, 486, __pyx_L1_error) + __pyx_t_8 = PyTuple_New(2); if (unlikely(!__pyx_t_8)) __PYX_ERR(0, 483, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_8); __Pyx_GIVEREF(__pyx_t_1); PyTuple_SET_ITEM(__pyx_t_8, 0, __pyx_t_1); @@ -6439,7 +6385,7 @@ static PyObject *__pyx_pf_4ssh2_7channel_7Channel_56write_stderr(struct __pyx_ob __pyx_t_8 = 0; goto __pyx_L0; - /* "ssh2/channel.pyx":442 + /* "ssh2/channel.pyx":439 * return rc, bytes_written * * def write_stderr(self, buf not None): # <<<<<<<<<<<<<< @@ -6461,7 +6407,7 @@ static PyObject *__pyx_pf_4ssh2_7channel_7Channel_56write_stderr(struct __pyx_ob return __pyx_r; } -/* "ssh2/channel.pyx":488 +/* "ssh2/channel.pyx":485 * return rc, bytes_written * * def x11_req(self, int screen_number): # <<<<<<<<<<<<<< @@ -6478,7 +6424,7 @@ static PyObject *__pyx_pw_4ssh2_7channel_7Channel_59x11_req(PyObject *__pyx_v_se __Pyx_RefNannyDeclarations __Pyx_RefNannySetupContext("x11_req (wrapper)", 0); assert(__pyx_arg_screen_number); { - __pyx_v_screen_number = __Pyx_PyInt_As_int(__pyx_arg_screen_number); if (unlikely((__pyx_v_screen_number == (int)-1) && PyErr_Occurred())) __PYX_ERR(0, 488, __pyx_L3_error) + __pyx_v_screen_number = __Pyx_PyInt_As_int(__pyx_arg_screen_number); if (unlikely((__pyx_v_screen_number == (int)-1) && PyErr_Occurred())) __PYX_ERR(0, 485, __pyx_L3_error) } goto __pyx_L4_argument_unpacking_done; __pyx_L3_error:; @@ -6501,7 +6447,7 @@ static PyObject *__pyx_pf_4ssh2_7channel_7Channel_58x11_req(struct __pyx_obj_4ss PyObject *__pyx_t_2 = NULL; __Pyx_RefNannySetupContext("x11_req", 0); - /* "ssh2/channel.pyx":490 + /* "ssh2/channel.pyx":487 * def x11_req(self, int screen_number): * cdef int rc * with nogil: # <<<<<<<<<<<<<< @@ -6516,7 +6462,7 @@ static PyObject *__pyx_pf_4ssh2_7channel_7Channel_58x11_req(struct __pyx_obj_4ss #endif /*try:*/ { - /* "ssh2/channel.pyx":491 + /* "ssh2/channel.pyx":488 * cdef int rc * with nogil: * rc = c_ssh2.libssh2_channel_x11_req( # <<<<<<<<<<<<<< @@ -6526,7 +6472,7 @@ static PyObject *__pyx_pf_4ssh2_7channel_7Channel_58x11_req(struct __pyx_obj_4ss __pyx_v_rc = libssh2_channel_x11_req(__pyx_v_self->_channel, __pyx_v_screen_number); } - /* "ssh2/channel.pyx":490 + /* "ssh2/channel.pyx":487 * def x11_req(self, int screen_number): * cdef int rc * with nogil: # <<<<<<<<<<<<<< @@ -6545,7 +6491,7 @@ static PyObject *__pyx_pf_4ssh2_7channel_7Channel_58x11_req(struct __pyx_obj_4ss } } - /* "ssh2/channel.pyx":493 + /* "ssh2/channel.pyx":490 * rc = c_ssh2.libssh2_channel_x11_req( * self._channel, screen_number) * return handle_error_codes(rc) # <<<<<<<<<<<<<< @@ -6553,14 +6499,14 @@ static PyObject *__pyx_pf_4ssh2_7channel_7Channel_58x11_req(struct __pyx_obj_4ss * def x11_req_ex(self, int single_connection, */ __Pyx_XDECREF(__pyx_r); - __pyx_t_1 = __pyx_f_4ssh2_5utils_handle_error_codes(__pyx_v_rc, 0); if (unlikely(__pyx_t_1 == ((int)-1))) __PYX_ERR(0, 493, __pyx_L1_error) - __pyx_t_2 = __Pyx_PyInt_From_int(__pyx_t_1); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 493, __pyx_L1_error) + __pyx_t_1 = __pyx_f_4ssh2_5utils_handle_error_codes(__pyx_v_rc, 0); if (unlikely(__pyx_t_1 == ((int)-1))) __PYX_ERR(0, 490, __pyx_L1_error) + __pyx_t_2 = __Pyx_PyInt_From_int(__pyx_t_1); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 490, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_2); __pyx_r = __pyx_t_2; __pyx_t_2 = 0; goto __pyx_L0; - /* "ssh2/channel.pyx":488 + /* "ssh2/channel.pyx":485 * return rc, bytes_written * * def x11_req(self, int screen_number): # <<<<<<<<<<<<<< @@ -6579,7 +6525,7 @@ static PyObject *__pyx_pf_4ssh2_7channel_7Channel_58x11_req(struct __pyx_obj_4ss return __pyx_r; } -/* "ssh2/channel.pyx":495 +/* "ssh2/channel.pyx":492 * return handle_error_codes(rc) * * def x11_req_ex(self, int single_connection, # <<<<<<<<<<<<<< @@ -6625,23 +6571,23 @@ static PyObject *__pyx_pw_4ssh2_7channel_7Channel_61x11_req_ex(PyObject *__pyx_v case 1: if (likely((values[1] = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_auth_proto)) != 0)) kw_args--; else { - __Pyx_RaiseArgtupleInvalid("x11_req_ex", 1, 4, 4, 1); __PYX_ERR(0, 495, __pyx_L3_error) + __Pyx_RaiseArgtupleInvalid("x11_req_ex", 1, 4, 4, 1); __PYX_ERR(0, 492, __pyx_L3_error) } CYTHON_FALLTHROUGH; case 2: if (likely((values[2] = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_auth_cookie)) != 0)) kw_args--; else { - __Pyx_RaiseArgtupleInvalid("x11_req_ex", 1, 4, 4, 2); __PYX_ERR(0, 495, __pyx_L3_error) + __Pyx_RaiseArgtupleInvalid("x11_req_ex", 1, 4, 4, 2); __PYX_ERR(0, 492, __pyx_L3_error) } CYTHON_FALLTHROUGH; case 3: if (likely((values[3] = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_screen_number)) != 0)) kw_args--; else { - __Pyx_RaiseArgtupleInvalid("x11_req_ex", 1, 4, 4, 3); __PYX_ERR(0, 495, __pyx_L3_error) + __Pyx_RaiseArgtupleInvalid("x11_req_ex", 1, 4, 4, 3); __PYX_ERR(0, 492, __pyx_L3_error) } } if (unlikely(kw_args > 0)) { - if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_pyargnames, 0, values, pos_args, "x11_req_ex") < 0)) __PYX_ERR(0, 495, __pyx_L3_error) + if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_pyargnames, 0, values, pos_args, "x11_req_ex") < 0)) __PYX_ERR(0, 492, __pyx_L3_error) } } else if (PyTuple_GET_SIZE(__pyx_args) != 4) { goto __pyx_L5_argtuple_error; @@ -6651,14 +6597,14 @@ static PyObject *__pyx_pw_4ssh2_7channel_7Channel_61x11_req_ex(PyObject *__pyx_v values[2] = PyTuple_GET_ITEM(__pyx_args, 2); values[3] = PyTuple_GET_ITEM(__pyx_args, 3); } - __pyx_v_single_connection = __Pyx_PyInt_As_int(values[0]); if (unlikely((__pyx_v_single_connection == (int)-1) && PyErr_Occurred())) __PYX_ERR(0, 495, __pyx_L3_error) - __pyx_v_auth_proto = __Pyx_PyObject_AsString(values[1]); if (unlikely((!__pyx_v_auth_proto) && PyErr_Occurred())) __PYX_ERR(0, 496, __pyx_L3_error) - __pyx_v_auth_cookie = __Pyx_PyObject_AsString(values[2]); if (unlikely((!__pyx_v_auth_cookie) && PyErr_Occurred())) __PYX_ERR(0, 497, __pyx_L3_error) - __pyx_v_screen_number = __Pyx_PyInt_As_int(values[3]); if (unlikely((__pyx_v_screen_number == (int)-1) && PyErr_Occurred())) __PYX_ERR(0, 498, __pyx_L3_error) + __pyx_v_single_connection = __Pyx_PyInt_As_int(values[0]); if (unlikely((__pyx_v_single_connection == (int)-1) && PyErr_Occurred())) __PYX_ERR(0, 492, __pyx_L3_error) + __pyx_v_auth_proto = __Pyx_PyObject_AsString(values[1]); if (unlikely((!__pyx_v_auth_proto) && PyErr_Occurred())) __PYX_ERR(0, 493, __pyx_L3_error) + __pyx_v_auth_cookie = __Pyx_PyObject_AsString(values[2]); if (unlikely((!__pyx_v_auth_cookie) && PyErr_Occurred())) __PYX_ERR(0, 494, __pyx_L3_error) + __pyx_v_screen_number = __Pyx_PyInt_As_int(values[3]); if (unlikely((__pyx_v_screen_number == (int)-1) && PyErr_Occurred())) __PYX_ERR(0, 495, __pyx_L3_error) } goto __pyx_L4_argument_unpacking_done; __pyx_L5_argtuple_error:; - __Pyx_RaiseArgtupleInvalid("x11_req_ex", 1, 4, 4, PyTuple_GET_SIZE(__pyx_args)); __PYX_ERR(0, 495, __pyx_L3_error) + __Pyx_RaiseArgtupleInvalid("x11_req_ex", 1, 4, 4, PyTuple_GET_SIZE(__pyx_args)); __PYX_ERR(0, 492, __pyx_L3_error) __pyx_L3_error:; __Pyx_AddTraceback("ssh2.channel.Channel.x11_req_ex", __pyx_clineno, __pyx_lineno, __pyx_filename); __Pyx_RefNannyFinishContext(); @@ -6679,7 +6625,7 @@ static PyObject *__pyx_pf_4ssh2_7channel_7Channel_60x11_req_ex(struct __pyx_obj_ PyObject *__pyx_t_2 = NULL; __Pyx_RefNannySetupContext("x11_req_ex", 0); - /* "ssh2/channel.pyx":500 + /* "ssh2/channel.pyx":497 * int screen_number): * cdef int rc * with nogil: # <<<<<<<<<<<<<< @@ -6694,7 +6640,7 @@ static PyObject *__pyx_pf_4ssh2_7channel_7Channel_60x11_req_ex(struct __pyx_obj_ #endif /*try:*/ { - /* "ssh2/channel.pyx":501 + /* "ssh2/channel.pyx":498 * cdef int rc * with nogil: * rc = c_ssh2.libssh2_channel_x11_req_ex( # <<<<<<<<<<<<<< @@ -6704,7 +6650,7 @@ static PyObject *__pyx_pf_4ssh2_7channel_7Channel_60x11_req_ex(struct __pyx_obj_ __pyx_v_rc = libssh2_channel_x11_req_ex(__pyx_v_self->_channel, __pyx_v_single_connection, __pyx_v_auth_proto, __pyx_v_auth_cookie, __pyx_v_screen_number); } - /* "ssh2/channel.pyx":500 + /* "ssh2/channel.pyx":497 * int screen_number): * cdef int rc * with nogil: # <<<<<<<<<<<<<< @@ -6723,7 +6669,7 @@ static PyObject *__pyx_pf_4ssh2_7channel_7Channel_60x11_req_ex(struct __pyx_obj_ } } - /* "ssh2/channel.pyx":504 + /* "ssh2/channel.pyx":501 * self._channel, single_connection, * auth_proto, auth_cookie, screen_number) * return handle_error_codes(rc) # <<<<<<<<<<<<<< @@ -6731,14 +6677,14 @@ static PyObject *__pyx_pf_4ssh2_7channel_7Channel_60x11_req_ex(struct __pyx_obj_ * def process_startup(self, request, message=None): */ __Pyx_XDECREF(__pyx_r); - __pyx_t_1 = __pyx_f_4ssh2_5utils_handle_error_codes(__pyx_v_rc, 0); if (unlikely(__pyx_t_1 == ((int)-1))) __PYX_ERR(0, 504, __pyx_L1_error) - __pyx_t_2 = __Pyx_PyInt_From_int(__pyx_t_1); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 504, __pyx_L1_error) + __pyx_t_1 = __pyx_f_4ssh2_5utils_handle_error_codes(__pyx_v_rc, 0); if (unlikely(__pyx_t_1 == ((int)-1))) __PYX_ERR(0, 501, __pyx_L1_error) + __pyx_t_2 = __Pyx_PyInt_From_int(__pyx_t_1); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 501, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_2); __pyx_r = __pyx_t_2; __pyx_t_2 = 0; goto __pyx_L0; - /* "ssh2/channel.pyx":495 + /* "ssh2/channel.pyx":492 * return handle_error_codes(rc) * * def x11_req_ex(self, int single_connection, # <<<<<<<<<<<<<< @@ -6757,7 +6703,7 @@ static PyObject *__pyx_pf_4ssh2_7channel_7Channel_60x11_req_ex(struct __pyx_obj_ return __pyx_r; } -/* "ssh2/channel.pyx":506 +/* "ssh2/channel.pyx":503 * return handle_error_codes(rc) * * def process_startup(self, request, message=None): # <<<<<<<<<<<<<< @@ -6802,7 +6748,7 @@ static PyObject *__pyx_pw_4ssh2_7channel_7Channel_63process_startup(PyObject *__ } } if (unlikely(kw_args > 0)) { - if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_pyargnames, 0, values, pos_args, "process_startup") < 0)) __PYX_ERR(0, 506, __pyx_L3_error) + if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_pyargnames, 0, values, pos_args, "process_startup") < 0)) __PYX_ERR(0, 503, __pyx_L3_error) } } else { switch (PyTuple_GET_SIZE(__pyx_args)) { @@ -6818,7 +6764,7 @@ static PyObject *__pyx_pw_4ssh2_7channel_7Channel_63process_startup(PyObject *__ } goto __pyx_L4_argument_unpacking_done; __pyx_L5_argtuple_error:; - __Pyx_RaiseArgtupleInvalid("process_startup", 0, 1, 2, PyTuple_GET_SIZE(__pyx_args)); __PYX_ERR(0, 506, __pyx_L3_error) + __Pyx_RaiseArgtupleInvalid("process_startup", 0, 1, 2, PyTuple_GET_SIZE(__pyx_args)); __PYX_ERR(0, 503, __pyx_L3_error) __pyx_L3_error:; __Pyx_AddTraceback("ssh2.channel.Channel.process_startup", __pyx_clineno, __pyx_lineno, __pyx_filename); __Pyx_RefNannyFinishContext(); @@ -6849,19 +6795,19 @@ static PyObject *__pyx_pf_4ssh2_7channel_7Channel_62process_startup(struct __pyx int __pyx_t_6; __Pyx_RefNannySetupContext("process_startup", 0); - /* "ssh2/channel.pyx":518 + /* "ssh2/channel.pyx":515 * :type message: str or ``None`` * """ * cdef bytes b_request = to_bytes(request) # <<<<<<<<<<<<<< * cdef bytes b_message = None * cdef char *_request = b_request */ - __pyx_t_1 = __pyx_f_4ssh2_5utils_to_bytes(__pyx_v_request); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 518, __pyx_L1_error) + __pyx_t_1 = __pyx_f_4ssh2_5utils_to_bytes(__pyx_v_request); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 515, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_1); __pyx_v_b_request = ((PyObject*)__pyx_t_1); __pyx_t_1 = 0; - /* "ssh2/channel.pyx":519 + /* "ssh2/channel.pyx":516 * """ * cdef bytes b_request = to_bytes(request) * cdef bytes b_message = None # <<<<<<<<<<<<<< @@ -6871,7 +6817,7 @@ static PyObject *__pyx_pf_4ssh2_7channel_7Channel_62process_startup(struct __pyx __Pyx_INCREF(Py_None); __pyx_v_b_message = ((PyObject*)Py_None); - /* "ssh2/channel.pyx":520 + /* "ssh2/channel.pyx":517 * cdef bytes b_request = to_bytes(request) * cdef bytes b_message = None * cdef char *_request = b_request # <<<<<<<<<<<<<< @@ -6880,12 +6826,12 @@ static PyObject *__pyx_pf_4ssh2_7channel_7Channel_62process_startup(struct __pyx */ if (unlikely(__pyx_v_b_request == Py_None)) { PyErr_SetString(PyExc_TypeError, "expected bytes, NoneType found"); - __PYX_ERR(0, 520, __pyx_L1_error) + __PYX_ERR(0, 517, __pyx_L1_error) } - __pyx_t_2 = __Pyx_PyBytes_AsWritableString(__pyx_v_b_request); if (unlikely((!__pyx_t_2) && PyErr_Occurred())) __PYX_ERR(0, 520, __pyx_L1_error) + __pyx_t_2 = __Pyx_PyBytes_AsWritableString(__pyx_v_b_request); if (unlikely((!__pyx_t_2) && PyErr_Occurred())) __PYX_ERR(0, 517, __pyx_L1_error) __pyx_v__request = __pyx_t_2; - /* "ssh2/channel.pyx":521 + /* "ssh2/channel.pyx":518 * cdef bytes b_message = None * cdef char *_request = b_request * cdef char *_message = NULL # <<<<<<<<<<<<<< @@ -6894,7 +6840,7 @@ static PyObject *__pyx_pf_4ssh2_7channel_7Channel_62process_startup(struct __pyx */ __pyx_v__message = NULL; - /* "ssh2/channel.pyx":522 + /* "ssh2/channel.pyx":519 * cdef char *_request = b_request * cdef char *_message = NULL * cdef size_t r_len = len(b_request) # <<<<<<<<<<<<<< @@ -6903,12 +6849,12 @@ static PyObject *__pyx_pf_4ssh2_7channel_7Channel_62process_startup(struct __pyx */ if (unlikely(__pyx_v_b_request == Py_None)) { PyErr_SetString(PyExc_TypeError, "object of type 'NoneType' has no len()"); - __PYX_ERR(0, 522, __pyx_L1_error) + __PYX_ERR(0, 519, __pyx_L1_error) } - __pyx_t_3 = PyBytes_GET_SIZE(__pyx_v_b_request); if (unlikely(__pyx_t_3 == ((Py_ssize_t)-1))) __PYX_ERR(0, 522, __pyx_L1_error) + __pyx_t_3 = PyBytes_GET_SIZE(__pyx_v_b_request); if (unlikely(__pyx_t_3 == ((Py_ssize_t)-1))) __PYX_ERR(0, 519, __pyx_L1_error) __pyx_v_r_len = __pyx_t_3; - /* "ssh2/channel.pyx":523 + /* "ssh2/channel.pyx":520 * cdef char *_message = NULL * cdef size_t r_len = len(b_request) * cdef size_t m_len = 0 # <<<<<<<<<<<<<< @@ -6917,7 +6863,7 @@ static PyObject *__pyx_pf_4ssh2_7channel_7Channel_62process_startup(struct __pyx */ __pyx_v_m_len = 0; - /* "ssh2/channel.pyx":524 + /* "ssh2/channel.pyx":521 * cdef size_t r_len = len(b_request) * cdef size_t m_len = 0 * if message is not None: # <<<<<<<<<<<<<< @@ -6928,19 +6874,19 @@ static PyObject *__pyx_pf_4ssh2_7channel_7Channel_62process_startup(struct __pyx __pyx_t_5 = (__pyx_t_4 != 0); if (__pyx_t_5) { - /* "ssh2/channel.pyx":525 + /* "ssh2/channel.pyx":522 * cdef size_t m_len = 0 * if message is not None: * b_message = to_bytes(message) # <<<<<<<<<<<<<< * _message = b_message * m_len = len(b_message) */ - __pyx_t_1 = __pyx_f_4ssh2_5utils_to_bytes(__pyx_v_message); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 525, __pyx_L1_error) + __pyx_t_1 = __pyx_f_4ssh2_5utils_to_bytes(__pyx_v_message); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 522, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_1); __Pyx_DECREF_SET(__pyx_v_b_message, ((PyObject*)__pyx_t_1)); __pyx_t_1 = 0; - /* "ssh2/channel.pyx":526 + /* "ssh2/channel.pyx":523 * if message is not None: * b_message = to_bytes(message) * _message = b_message # <<<<<<<<<<<<<< @@ -6949,12 +6895,12 @@ static PyObject *__pyx_pf_4ssh2_7channel_7Channel_62process_startup(struct __pyx */ if (unlikely(__pyx_v_b_message == Py_None)) { PyErr_SetString(PyExc_TypeError, "expected bytes, NoneType found"); - __PYX_ERR(0, 526, __pyx_L1_error) + __PYX_ERR(0, 523, __pyx_L1_error) } - __pyx_t_2 = __Pyx_PyBytes_AsWritableString(__pyx_v_b_message); if (unlikely((!__pyx_t_2) && PyErr_Occurred())) __PYX_ERR(0, 526, __pyx_L1_error) + __pyx_t_2 = __Pyx_PyBytes_AsWritableString(__pyx_v_b_message); if (unlikely((!__pyx_t_2) && PyErr_Occurred())) __PYX_ERR(0, 523, __pyx_L1_error) __pyx_v__message = __pyx_t_2; - /* "ssh2/channel.pyx":527 + /* "ssh2/channel.pyx":524 * b_message = to_bytes(message) * _message = b_message * m_len = len(b_message) # <<<<<<<<<<<<<< @@ -6963,12 +6909,12 @@ static PyObject *__pyx_pf_4ssh2_7channel_7Channel_62process_startup(struct __pyx */ if (unlikely(__pyx_v_b_message == Py_None)) { PyErr_SetString(PyExc_TypeError, "object of type 'NoneType' has no len()"); - __PYX_ERR(0, 527, __pyx_L1_error) + __PYX_ERR(0, 524, __pyx_L1_error) } - __pyx_t_3 = PyBytes_GET_SIZE(__pyx_v_b_message); if (unlikely(__pyx_t_3 == ((Py_ssize_t)-1))) __PYX_ERR(0, 527, __pyx_L1_error) + __pyx_t_3 = PyBytes_GET_SIZE(__pyx_v_b_message); if (unlikely(__pyx_t_3 == ((Py_ssize_t)-1))) __PYX_ERR(0, 524, __pyx_L1_error) __pyx_v_m_len = __pyx_t_3; - /* "ssh2/channel.pyx":524 + /* "ssh2/channel.pyx":521 * cdef size_t r_len = len(b_request) * cdef size_t m_len = 0 * if message is not None: # <<<<<<<<<<<<<< @@ -6977,7 +6923,7 @@ static PyObject *__pyx_pf_4ssh2_7channel_7Channel_62process_startup(struct __pyx */ } - /* "ssh2/channel.pyx":529 + /* "ssh2/channel.pyx":526 * m_len = len(b_message) * cdef int rc * with nogil: # <<<<<<<<<<<<<< @@ -6992,7 +6938,7 @@ static PyObject *__pyx_pf_4ssh2_7channel_7Channel_62process_startup(struct __pyx #endif /*try:*/ { - /* "ssh2/channel.pyx":530 + /* "ssh2/channel.pyx":527 * cdef int rc * with nogil: * rc = c_ssh2.libssh2_channel_process_startup( # <<<<<<<<<<<<<< @@ -7002,7 +6948,7 @@ static PyObject *__pyx_pf_4ssh2_7channel_7Channel_62process_startup(struct __pyx __pyx_v_rc = libssh2_channel_process_startup(__pyx_v_self->_channel, __pyx_v__request, __pyx_v_r_len, __pyx_v__message, __pyx_v_m_len); } - /* "ssh2/channel.pyx":529 + /* "ssh2/channel.pyx":526 * m_len = len(b_message) * cdef int rc * with nogil: # <<<<<<<<<<<<<< @@ -7021,7 +6967,7 @@ static PyObject *__pyx_pf_4ssh2_7channel_7Channel_62process_startup(struct __pyx } } - /* "ssh2/channel.pyx":532 + /* "ssh2/channel.pyx":529 * rc = c_ssh2.libssh2_channel_process_startup( * self._channel, _request, r_len, _message, m_len) * return handle_error_codes(rc) # <<<<<<<<<<<<<< @@ -7029,14 +6975,14 @@ static PyObject *__pyx_pf_4ssh2_7channel_7Channel_62process_startup(struct __pyx * def poll_channel_read(self, int extended): */ __Pyx_XDECREF(__pyx_r); - __pyx_t_6 = __pyx_f_4ssh2_5utils_handle_error_codes(__pyx_v_rc, 0); if (unlikely(__pyx_t_6 == ((int)-1))) __PYX_ERR(0, 532, __pyx_L1_error) - __pyx_t_1 = __Pyx_PyInt_From_int(__pyx_t_6); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 532, __pyx_L1_error) + __pyx_t_6 = __pyx_f_4ssh2_5utils_handle_error_codes(__pyx_v_rc, 0); if (unlikely(__pyx_t_6 == ((int)-1))) __PYX_ERR(0, 529, __pyx_L1_error) + __pyx_t_1 = __Pyx_PyInt_From_int(__pyx_t_6); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 529, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_1); __pyx_r = __pyx_t_1; __pyx_t_1 = 0; goto __pyx_L0; - /* "ssh2/channel.pyx":506 + /* "ssh2/channel.pyx":503 * return handle_error_codes(rc) * * def process_startup(self, request, message=None): # <<<<<<<<<<<<<< @@ -7057,7 +7003,7 @@ static PyObject *__pyx_pf_4ssh2_7channel_7Channel_62process_startup(struct __pyx return __pyx_r; } -/* "ssh2/channel.pyx":534 +/* "ssh2/channel.pyx":531 * return handle_error_codes(rc) * * def poll_channel_read(self, int extended): # <<<<<<<<<<<<<< @@ -7074,7 +7020,7 @@ static PyObject *__pyx_pw_4ssh2_7channel_7Channel_65poll_channel_read(PyObject * __Pyx_RefNannyDeclarations __Pyx_RefNannySetupContext("poll_channel_read (wrapper)", 0); assert(__pyx_arg_extended); { - __pyx_v_extended = __Pyx_PyInt_As_int(__pyx_arg_extended); if (unlikely((__pyx_v_extended == (int)-1) && PyErr_Occurred())) __PYX_ERR(0, 534, __pyx_L3_error) + __pyx_v_extended = __Pyx_PyInt_As_int(__pyx_arg_extended); if (unlikely((__pyx_v_extended == (int)-1) && PyErr_Occurred())) __PYX_ERR(0, 531, __pyx_L3_error) } goto __pyx_L4_argument_unpacking_done; __pyx_L3_error:; @@ -7097,7 +7043,7 @@ static PyObject *__pyx_pf_4ssh2_7channel_7Channel_64poll_channel_read(struct __p PyObject *__pyx_t_2 = NULL; __Pyx_RefNannySetupContext("poll_channel_read", 0); - /* "ssh2/channel.pyx":538 + /* "ssh2/channel.pyx":535 * instead""" * cdef int rc * with nogil: # <<<<<<<<<<<<<< @@ -7112,7 +7058,7 @@ static PyObject *__pyx_pf_4ssh2_7channel_7Channel_64poll_channel_read(struct __p #endif /*try:*/ { - /* "ssh2/channel.pyx":539 + /* "ssh2/channel.pyx":536 * cdef int rc * with nogil: * rc = c_ssh2.libssh2_poll_channel_read(self._channel, extended) # <<<<<<<<<<<<<< @@ -7122,7 +7068,7 @@ static PyObject *__pyx_pf_4ssh2_7channel_7Channel_64poll_channel_read(struct __p __pyx_v_rc = libssh2_poll_channel_read(__pyx_v_self->_channel, __pyx_v_extended); } - /* "ssh2/channel.pyx":538 + /* "ssh2/channel.pyx":535 * instead""" * cdef int rc * with nogil: # <<<<<<<<<<<<<< @@ -7141,7 +7087,7 @@ static PyObject *__pyx_pf_4ssh2_7channel_7Channel_64poll_channel_read(struct __p } } - /* "ssh2/channel.pyx":540 + /* "ssh2/channel.pyx":537 * with nogil: * rc = c_ssh2.libssh2_poll_channel_read(self._channel, extended) * return handle_error_codes(rc) # <<<<<<<<<<<<<< @@ -7149,14 +7095,14 @@ static PyObject *__pyx_pf_4ssh2_7channel_7Channel_64poll_channel_read(struct __p * def handle_extended_data(self, int ignore_mode): */ __Pyx_XDECREF(__pyx_r); - __pyx_t_1 = __pyx_f_4ssh2_5utils_handle_error_codes(__pyx_v_rc, 0); if (unlikely(__pyx_t_1 == ((int)-1))) __PYX_ERR(0, 540, __pyx_L1_error) - __pyx_t_2 = __Pyx_PyInt_From_int(__pyx_t_1); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 540, __pyx_L1_error) + __pyx_t_1 = __pyx_f_4ssh2_5utils_handle_error_codes(__pyx_v_rc, 0); if (unlikely(__pyx_t_1 == ((int)-1))) __PYX_ERR(0, 537, __pyx_L1_error) + __pyx_t_2 = __Pyx_PyInt_From_int(__pyx_t_1); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 537, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_2); __pyx_r = __pyx_t_2; __pyx_t_2 = 0; goto __pyx_L0; - /* "ssh2/channel.pyx":534 + /* "ssh2/channel.pyx":531 * return handle_error_codes(rc) * * def poll_channel_read(self, int extended): # <<<<<<<<<<<<<< @@ -7175,7 +7121,7 @@ static PyObject *__pyx_pf_4ssh2_7channel_7Channel_64poll_channel_read(struct __p return __pyx_r; } -/* "ssh2/channel.pyx":542 +/* "ssh2/channel.pyx":539 * return handle_error_codes(rc) * * def handle_extended_data(self, int ignore_mode): # <<<<<<<<<<<<<< @@ -7192,7 +7138,7 @@ static PyObject *__pyx_pw_4ssh2_7channel_7Channel_67handle_extended_data(PyObjec __Pyx_RefNannyDeclarations __Pyx_RefNannySetupContext("handle_extended_data (wrapper)", 0); assert(__pyx_arg_ignore_mode); { - __pyx_v_ignore_mode = __Pyx_PyInt_As_int(__pyx_arg_ignore_mode); if (unlikely((__pyx_v_ignore_mode == (int)-1) && PyErr_Occurred())) __PYX_ERR(0, 542, __pyx_L3_error) + __pyx_v_ignore_mode = __Pyx_PyInt_As_int(__pyx_arg_ignore_mode); if (unlikely((__pyx_v_ignore_mode == (int)-1) && PyErr_Occurred())) __PYX_ERR(0, 539, __pyx_L3_error) } goto __pyx_L4_argument_unpacking_done; __pyx_L3_error:; @@ -7212,7 +7158,7 @@ static PyObject *__pyx_pf_4ssh2_7channel_7Channel_66handle_extended_data(struct __Pyx_RefNannyDeclarations __Pyx_RefNannySetupContext("handle_extended_data", 0); - /* "ssh2/channel.pyx":544 + /* "ssh2/channel.pyx":541 * def handle_extended_data(self, int ignore_mode): * """Deprecated, use handle_extended_data2""" * with nogil: # <<<<<<<<<<<<<< @@ -7227,7 +7173,7 @@ static PyObject *__pyx_pf_4ssh2_7channel_7Channel_66handle_extended_data(struct #endif /*try:*/ { - /* "ssh2/channel.pyx":545 + /* "ssh2/channel.pyx":542 * """Deprecated, use handle_extended_data2""" * with nogil: * c_ssh2.libssh2_channel_handle_extended_data( # <<<<<<<<<<<<<< @@ -7237,7 +7183,7 @@ static PyObject *__pyx_pf_4ssh2_7channel_7Channel_66handle_extended_data(struct libssh2_channel_handle_extended_data(__pyx_v_self->_channel, __pyx_v_ignore_mode); } - /* "ssh2/channel.pyx":544 + /* "ssh2/channel.pyx":541 * def handle_extended_data(self, int ignore_mode): * """Deprecated, use handle_extended_data2""" * with nogil: # <<<<<<<<<<<<<< @@ -7256,7 +7202,7 @@ static PyObject *__pyx_pf_4ssh2_7channel_7Channel_66handle_extended_data(struct } } - /* "ssh2/channel.pyx":542 + /* "ssh2/channel.pyx":539 * return handle_error_codes(rc) * * def handle_extended_data(self, int ignore_mode): # <<<<<<<<<<<<<< @@ -7271,7 +7217,7 @@ static PyObject *__pyx_pf_4ssh2_7channel_7Channel_66handle_extended_data(struct return __pyx_r; } -/* "ssh2/channel.pyx":548 +/* "ssh2/channel.pyx":545 * self._channel, ignore_mode) * * def handle_extended_data2(self, int ignore_mode): # <<<<<<<<<<<<<< @@ -7288,7 +7234,7 @@ static PyObject *__pyx_pw_4ssh2_7channel_7Channel_69handle_extended_data2(PyObje __Pyx_RefNannyDeclarations __Pyx_RefNannySetupContext("handle_extended_data2 (wrapper)", 0); assert(__pyx_arg_ignore_mode); { - __pyx_v_ignore_mode = __Pyx_PyInt_As_int(__pyx_arg_ignore_mode); if (unlikely((__pyx_v_ignore_mode == (int)-1) && PyErr_Occurred())) __PYX_ERR(0, 548, __pyx_L3_error) + __pyx_v_ignore_mode = __Pyx_PyInt_As_int(__pyx_arg_ignore_mode); if (unlikely((__pyx_v_ignore_mode == (int)-1) && PyErr_Occurred())) __PYX_ERR(0, 545, __pyx_L3_error) } goto __pyx_L4_argument_unpacking_done; __pyx_L3_error:; @@ -7311,7 +7257,7 @@ static PyObject *__pyx_pf_4ssh2_7channel_7Channel_68handle_extended_data2(struct PyObject *__pyx_t_2 = NULL; __Pyx_RefNannySetupContext("handle_extended_data2", 0); - /* "ssh2/channel.pyx":550 + /* "ssh2/channel.pyx":547 * def handle_extended_data2(self, int ignore_mode): * cdef int rc * with nogil: # <<<<<<<<<<<<<< @@ -7326,7 +7272,7 @@ static PyObject *__pyx_pf_4ssh2_7channel_7Channel_68handle_extended_data2(struct #endif /*try:*/ { - /* "ssh2/channel.pyx":551 + /* "ssh2/channel.pyx":548 * cdef int rc * with nogil: * rc = c_ssh2.libssh2_channel_handle_extended_data2( # <<<<<<<<<<<<<< @@ -7336,7 +7282,7 @@ static PyObject *__pyx_pf_4ssh2_7channel_7Channel_68handle_extended_data2(struct __pyx_v_rc = libssh2_channel_handle_extended_data2(__pyx_v_self->_channel, __pyx_v_ignore_mode); } - /* "ssh2/channel.pyx":550 + /* "ssh2/channel.pyx":547 * def handle_extended_data2(self, int ignore_mode): * cdef int rc * with nogil: # <<<<<<<<<<<<<< @@ -7355,7 +7301,7 @@ static PyObject *__pyx_pf_4ssh2_7channel_7Channel_68handle_extended_data2(struct } } - /* "ssh2/channel.pyx":553 + /* "ssh2/channel.pyx":550 * rc = c_ssh2.libssh2_channel_handle_extended_data2( * self._channel, ignore_mode) * return handle_error_codes(rc) # <<<<<<<<<<<<<< @@ -7363,14 +7309,14 @@ static PyObject *__pyx_pf_4ssh2_7channel_7Channel_68handle_extended_data2(struct * def ignore_extended_data(self, int ignore_mode): */ __Pyx_XDECREF(__pyx_r); - __pyx_t_1 = __pyx_f_4ssh2_5utils_handle_error_codes(__pyx_v_rc, 0); if (unlikely(__pyx_t_1 == ((int)-1))) __PYX_ERR(0, 553, __pyx_L1_error) - __pyx_t_2 = __Pyx_PyInt_From_int(__pyx_t_1); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 553, __pyx_L1_error) + __pyx_t_1 = __pyx_f_4ssh2_5utils_handle_error_codes(__pyx_v_rc, 0); if (unlikely(__pyx_t_1 == ((int)-1))) __PYX_ERR(0, 550, __pyx_L1_error) + __pyx_t_2 = __Pyx_PyInt_From_int(__pyx_t_1); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 550, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_2); __pyx_r = __pyx_t_2; __pyx_t_2 = 0; goto __pyx_L0; - /* "ssh2/channel.pyx":548 + /* "ssh2/channel.pyx":545 * self._channel, ignore_mode) * * def handle_extended_data2(self, int ignore_mode): # <<<<<<<<<<<<<< @@ -7389,7 +7335,7 @@ static PyObject *__pyx_pf_4ssh2_7channel_7Channel_68handle_extended_data2(struct return __pyx_r; } -/* "ssh2/channel.pyx":555 +/* "ssh2/channel.pyx":552 * return handle_error_codes(rc) * * def ignore_extended_data(self, int ignore_mode): # <<<<<<<<<<<<<< @@ -7406,7 +7352,7 @@ static PyObject *__pyx_pw_4ssh2_7channel_7Channel_71ignore_extended_data(PyObjec __Pyx_RefNannyDeclarations __Pyx_RefNannySetupContext("ignore_extended_data (wrapper)", 0); assert(__pyx_arg_ignore_mode); { - __pyx_v_ignore_mode = __Pyx_PyInt_As_int(__pyx_arg_ignore_mode); if (unlikely((__pyx_v_ignore_mode == (int)-1) && PyErr_Occurred())) __PYX_ERR(0, 555, __pyx_L3_error) + __pyx_v_ignore_mode = __Pyx_PyInt_As_int(__pyx_arg_ignore_mode); if (unlikely((__pyx_v_ignore_mode == (int)-1) && PyErr_Occurred())) __PYX_ERR(0, 552, __pyx_L3_error) } goto __pyx_L4_argument_unpacking_done; __pyx_L3_error:; @@ -7426,7 +7372,7 @@ static PyObject *__pyx_pf_4ssh2_7channel_7Channel_70ignore_extended_data(struct __Pyx_RefNannyDeclarations __Pyx_RefNannySetupContext("ignore_extended_data", 0); - /* "ssh2/channel.pyx":557 + /* "ssh2/channel.pyx":554 * def ignore_extended_data(self, int ignore_mode): * """Deprecated, use handle_extended_data2""" * with nogil: # <<<<<<<<<<<<<< @@ -7441,7 +7387,7 @@ static PyObject *__pyx_pf_4ssh2_7channel_7Channel_70ignore_extended_data(struct #endif /*try:*/ { - /* "ssh2/channel.pyx":558 + /* "ssh2/channel.pyx":555 * """Deprecated, use handle_extended_data2""" * with nogil: * c_ssh2.libssh2_channel_handle_extended_data( # <<<<<<<<<<<<<< @@ -7451,7 +7397,7 @@ static PyObject *__pyx_pf_4ssh2_7channel_7Channel_70ignore_extended_data(struct libssh2_channel_handle_extended_data(__pyx_v_self->_channel, __pyx_v_ignore_mode); } - /* "ssh2/channel.pyx":557 + /* "ssh2/channel.pyx":554 * def ignore_extended_data(self, int ignore_mode): * """Deprecated, use handle_extended_data2""" * with nogil: # <<<<<<<<<<<<<< @@ -7470,7 +7416,7 @@ static PyObject *__pyx_pf_4ssh2_7channel_7Channel_70ignore_extended_data(struct } } - /* "ssh2/channel.pyx":555 + /* "ssh2/channel.pyx":552 * return handle_error_codes(rc) * * def ignore_extended_data(self, int ignore_mode): # <<<<<<<<<<<<<< @@ -7843,7 +7789,7 @@ static __Pyx_StringTabEntry __pyx_string_tab[] = { {0, 0, 0, 0, 0, 0, 0} }; static CYTHON_SMALL_CODE int __Pyx_InitCachedBuiltins(void) { - __pyx_builtin_MemoryError = __Pyx_GetBuiltinName(__pyx_n_s_MemoryError); if (!__pyx_builtin_MemoryError) __PYX_ERR(0, 139, __pyx_L1_error) + __pyx_builtin_MemoryError = __Pyx_GetBuiltinName(__pyx_n_s_MemoryError); if (!__pyx_builtin_MemoryError) __PYX_ERR(0, 136, __pyx_L1_error) __pyx_builtin_TypeError = __Pyx_GetBuiltinName(__pyx_n_s_TypeError); if (!__pyx_builtin_TypeError) __PYX_ERR(1, 2, __pyx_L1_error) return 0; __pyx_L1_error:; @@ -8039,11 +7985,13 @@ static CYTHON_SMALL_CODE int __Pyx_check_single_interpreter(void) { } return 0; } -static CYTHON_SMALL_CODE int __Pyx_copy_spec_to_module(PyObject *spec, PyObject *moddict, const char* from_name, const char* to_name) { +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) { PyObject *value = PyObject_GetAttrString(spec, from_name); int result = 0; if (likely(value)) { - result = PyDict_SetItemString(moddict, to_name, value); + if (allow_none || value != Py_None) { + result = PyDict_SetItemString(moddict, to_name, value); + } Py_DECREF(value); } else if (PyErr_ExceptionMatches(PyExc_AttributeError)) { PyErr_Clear(); @@ -8065,10 +8013,10 @@ static CYTHON_SMALL_CODE PyObject* __pyx_pymod_create(PyObject *spec, CYTHON_UNU if (unlikely(!module)) goto bad; moddict = PyModule_GetDict(module); if (unlikely(!moddict)) goto bad; - if (unlikely(__Pyx_copy_spec_to_module(spec, moddict, "loader", "__loader__") < 0)) goto bad; - if (unlikely(__Pyx_copy_spec_to_module(spec, moddict, "origin", "__file__") < 0)) goto bad; - if (unlikely(__Pyx_copy_spec_to_module(spec, moddict, "parent", "__package__") < 0)) goto bad; - if (unlikely(__Pyx_copy_spec_to_module(spec, moddict, "submodule_search_locations", "__path__") < 0)) goto bad; + 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); @@ -9086,6 +9034,32 @@ static PyObject* __Pyx_ImportFrom(PyObject* module, PyObject* name) { return value; } +/* PyDictVersioning */ +#if CYTHON_USE_DICT_VERSIONS && CYTHON_USE_TYPE_SLOTS +static CYTHON_INLINE PY_UINT64_T __Pyx_get_tp_dict_version(PyObject *obj) { + PyObject *dict = Py_TYPE(obj)->tp_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 + /* CLineInTraceback */ #ifndef CYTHON_CLINE_IN_TRACEBACK static int __Pyx_CLineForTraceback(PyThreadState *tstate, int c_line) { diff --git a/ssh2/channel.pyx b/ssh2/channel.pyx index 66bfb56f..ca33bfef 100644 --- a/ssh2/channel.pyx +++ b/ssh2/channel.pyx @@ -33,14 +33,11 @@ cdef object PyChannel(c_ssh2.LIBSSH2_CHANNEL *channel, Session session): cdef class Channel: def __cinit__(self, Session session): - self._channel = NULL self._session = session def __dealloc__(self): - if self._channel is not NULL and self._session is not None: - with nogil: - c_ssh2.libssh2_channel_close(self._channel) - c_ssh2.libssh2_channel_free(self._channel) + if self._channel is not NULL: + c_ssh2.libssh2_channel_free(self._channel) self._channel = NULL @property diff --git a/ssh2/error_codes.c b/ssh2/error_codes.c index 0570d72c..aa03236b 100644 --- a/ssh2/error_codes.c +++ b/ssh2/error_codes.c @@ -1,4 +1,4 @@ -/* Generated by Cython 0.29 */ +/* Generated by Cython 0.29.6 */ #define PY_SSIZE_T_CLEAN #include "Python.h" @@ -7,8 +7,8 @@ #elif PY_VERSION_HEX < 0x02060000 || (0x03000000 <= PY_VERSION_HEX && PY_VERSION_HEX < 0x03030000) #error Cython requires Python 2.6+ or Python 3.3+. #else -#define CYTHON_ABI "0_29" -#define CYTHON_HEX_VERSION 0x001D00F0 +#define CYTHON_ABI "0_29_6" +#define CYTHON_HEX_VERSION 0x001D06F0 #define CYTHON_FUTURE_DIVISION 0 #include #ifndef offsetof @@ -197,6 +197,9 @@ #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 @@ -343,26 +346,6 @@ #else #define __Pyx_PyFastCFunction_Check(func) 0 #endif -#if CYTHON_USE_DICT_VERSIONS -#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);\ - }\ - } -#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 #if CYTHON_COMPILING_IN_PYPY && !defined(PyObject_Malloc) #define PyObject_Malloc(s) PyMem_Malloc(s) #define PyObject_Free(p) PyMem_Free(p) @@ -395,7 +378,7 @@ typedef int Py_tss_t; static CYTHON_INLINE int PyThread_tss_create(Py_tss_t *key) { *key = PyThread_create_key(); - return 0; // PyThread_create_key reports success always + 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)); @@ -418,7 +401,7 @@ static CYTHON_INLINE int PyThread_tss_set(Py_tss_t *key, void *value) { static CYTHON_INLINE void * PyThread_tss_get(Py_tss_t *key) { return PyThread_get_key_value(*key); } -#endif // TSS (Thread Specific Storage) API +#endif #if CYTHON_COMPILING_IN_CPYTHON || defined(_PyDict_NewPresized) #define __Pyx_PyDict_NewPresized(n) ((n <= 8) ? PyDict_New() : _PyDict_NewPresized(n)) #else @@ -622,7 +605,8 @@ typedef struct {PyObject **p; const char *s; const Py_ssize_t n; const char* enc 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_DEFAULT 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 @@ -886,6 +870,32 @@ static const char *__pyx_f[] = { #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) +/* 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 + /* PyObjectGetAttrStr.proto */ #if CYTHON_USE_TYPE_SLOTS static CYTHON_INLINE PyObject* __Pyx_PyObject_GetAttrStr(PyObject* obj, PyObject* attr_name); @@ -1334,11 +1344,13 @@ static CYTHON_SMALL_CODE int __Pyx_check_single_interpreter(void) { } return 0; } -static CYTHON_SMALL_CODE int __Pyx_copy_spec_to_module(PyObject *spec, PyObject *moddict, const char* from_name, const char* to_name) { +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) { PyObject *value = PyObject_GetAttrString(spec, from_name); int result = 0; if (likely(value)) { - result = PyDict_SetItemString(moddict, to_name, value); + if (allow_none || value != Py_None) { + result = PyDict_SetItemString(moddict, to_name, value); + } Py_DECREF(value); } else if (PyErr_ExceptionMatches(PyExc_AttributeError)) { PyErr_Clear(); @@ -1360,10 +1372,10 @@ static CYTHON_SMALL_CODE PyObject* __pyx_pymod_create(PyObject *spec, CYTHON_UNU if (unlikely(!module)) goto bad; moddict = PyModule_GetDict(module); if (unlikely(!moddict)) goto bad; - if (unlikely(__Pyx_copy_spec_to_module(spec, moddict, "loader", "__loader__") < 0)) goto bad; - if (unlikely(__Pyx_copy_spec_to_module(spec, moddict, "origin", "__file__") < 0)) goto bad; - if (unlikely(__Pyx_copy_spec_to_module(spec, moddict, "parent", "__package__") < 0)) goto bad; - if (unlikely(__Pyx_copy_spec_to_module(spec, moddict, "submodule_search_locations", "__path__") < 0)) goto bad; + 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); @@ -2083,6 +2095,32 @@ static __Pyx_RefNannyAPIStruct *__Pyx_RefNannyImportAPI(const char *modname) { } #endif +/* PyDictVersioning */ +#if CYTHON_USE_DICT_VERSIONS && CYTHON_USE_TYPE_SLOTS +static CYTHON_INLINE PY_UINT64_T __Pyx_get_tp_dict_version(PyObject *obj) { + PyObject *dict = Py_TYPE(obj)->tp_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 + /* PyObjectGetAttrStr */ #if CYTHON_USE_TYPE_SLOTS static CYTHON_INLINE PyObject* __Pyx_PyObject_GetAttrStr(PyObject* obj, PyObject* attr_name) { diff --git a/ssh2/exceptions.c b/ssh2/exceptions.c index 04469312..2108dfcc 100644 --- a/ssh2/exceptions.c +++ b/ssh2/exceptions.c @@ -1,4 +1,4 @@ -/* Generated by Cython 0.29 */ +/* Generated by Cython 0.29.6 */ #define PY_SSIZE_T_CLEAN #include "Python.h" @@ -7,8 +7,8 @@ #elif PY_VERSION_HEX < 0x02060000 || (0x03000000 <= PY_VERSION_HEX && PY_VERSION_HEX < 0x03030000) #error Cython requires Python 2.6+ or Python 3.3+. #else -#define CYTHON_ABI "0_29" -#define CYTHON_HEX_VERSION 0x001D00F0 +#define CYTHON_ABI "0_29_6" +#define CYTHON_HEX_VERSION 0x001D06F0 #define CYTHON_FUTURE_DIVISION 0 #include #ifndef offsetof @@ -197,6 +197,9 @@ #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 @@ -343,26 +346,6 @@ #else #define __Pyx_PyFastCFunction_Check(func) 0 #endif -#if CYTHON_USE_DICT_VERSIONS -#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);\ - }\ - } -#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 #if CYTHON_COMPILING_IN_PYPY && !defined(PyObject_Malloc) #define PyObject_Malloc(s) PyMem_Malloc(s) #define PyObject_Free(p) PyMem_Free(p) @@ -395,7 +378,7 @@ typedef int Py_tss_t; static CYTHON_INLINE int PyThread_tss_create(Py_tss_t *key) { *key = PyThread_create_key(); - return 0; // PyThread_create_key reports success always + 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)); @@ -418,7 +401,7 @@ static CYTHON_INLINE int PyThread_tss_set(Py_tss_t *key, void *value) { static CYTHON_INLINE void * PyThread_tss_get(Py_tss_t *key) { return PyThread_get_key_value(*key); } -#endif // TSS (Thread Specific Storage) API +#endif #if CYTHON_COMPILING_IN_CPYTHON || defined(_PyDict_NewPresized) #define __Pyx_PyDict_NewPresized(n) ((n <= 8) ? PyDict_New() : _PyDict_NewPresized(n)) #else @@ -617,7 +600,8 @@ typedef struct {PyObject **p; const char *s; const Py_ssize_t n; const char* enc 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_DEFAULT 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 @@ -900,6 +884,32 @@ static PyObject *__Pyx_Py3ClassCreate(PyObject *metaclass, PyObject *name, PyObj /* GetBuiltinName.proto */ static PyObject *__Pyx_GetBuiltinName(PyObject *name); +/* 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) {\ @@ -1637,11 +1647,13 @@ static CYTHON_SMALL_CODE int __Pyx_check_single_interpreter(void) { } return 0; } -static CYTHON_SMALL_CODE int __Pyx_copy_spec_to_module(PyObject *spec, PyObject *moddict, const char* from_name, const char* to_name) { +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) { PyObject *value = PyObject_GetAttrString(spec, from_name); int result = 0; if (likely(value)) { - result = PyDict_SetItemString(moddict, to_name, value); + if (allow_none || value != Py_None) { + result = PyDict_SetItemString(moddict, to_name, value); + } Py_DECREF(value); } else if (PyErr_ExceptionMatches(PyExc_AttributeError)) { PyErr_Clear(); @@ -1663,10 +1675,10 @@ static CYTHON_SMALL_CODE PyObject* __pyx_pymod_create(PyObject *spec, CYTHON_UNU if (unlikely(!module)) goto bad; moddict = PyModule_GetDict(module); if (unlikely(!moddict)) goto bad; - if (unlikely(__Pyx_copy_spec_to_module(spec, moddict, "loader", "__loader__") < 0)) goto bad; - if (unlikely(__Pyx_copy_spec_to_module(spec, moddict, "origin", "__file__") < 0)) goto bad; - if (unlikely(__Pyx_copy_spec_to_module(spec, moddict, "parent", "__package__") < 0)) goto bad; - if (unlikely(__Pyx_copy_spec_to_module(spec, moddict, "submodule_search_locations", "__path__") < 0)) goto bad; + 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); @@ -3741,6 +3753,32 @@ static PyObject *__Pyx_GetBuiltinName(PyObject *name) { return result; } +/* PyDictVersioning */ +#if CYTHON_USE_DICT_VERSIONS && CYTHON_USE_TYPE_SLOTS +static CYTHON_INLINE PY_UINT64_T __Pyx_get_tp_dict_version(PyObject *obj) { + PyObject *dict = Py_TYPE(obj)->tp_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) diff --git a/ssh2/fileinfo.c b/ssh2/fileinfo.c index 0e9308ba..483a8310 100644 --- a/ssh2/fileinfo.c +++ b/ssh2/fileinfo.c @@ -1,4 +1,4 @@ -/* Generated by Cython 0.29 */ +/* Generated by Cython 0.29.6 */ #define PY_SSIZE_T_CLEAN #include "Python.h" @@ -7,8 +7,8 @@ #elif PY_VERSION_HEX < 0x02060000 || (0x03000000 <= PY_VERSION_HEX && PY_VERSION_HEX < 0x03030000) #error Cython requires Python 2.6+ or Python 3.3+. #else -#define CYTHON_ABI "0_29" -#define CYTHON_HEX_VERSION 0x001D00F0 +#define CYTHON_ABI "0_29_6" +#define CYTHON_HEX_VERSION 0x001D06F0 #define CYTHON_FUTURE_DIVISION 0 #include #ifndef offsetof @@ -197,6 +197,9 @@ #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 @@ -343,26 +346,6 @@ #else #define __Pyx_PyFastCFunction_Check(func) 0 #endif -#if CYTHON_USE_DICT_VERSIONS -#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);\ - }\ - } -#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 #if CYTHON_COMPILING_IN_PYPY && !defined(PyObject_Malloc) #define PyObject_Malloc(s) PyMem_Malloc(s) #define PyObject_Free(p) PyMem_Free(p) @@ -395,7 +378,7 @@ typedef int Py_tss_t; static CYTHON_INLINE int PyThread_tss_create(Py_tss_t *key) { *key = PyThread_create_key(); - return 0; // PyThread_create_key reports success always + 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)); @@ -418,7 +401,7 @@ static CYTHON_INLINE int PyThread_tss_set(Py_tss_t *key, void *value) { static CYTHON_INLINE void * PyThread_tss_get(Py_tss_t *key) { return PyThread_get_key_value(*key); } -#endif // TSS (Thread Specific Storage) API +#endif #if CYTHON_COMPILING_IN_CPYTHON || defined(_PyDict_NewPresized) #define __Pyx_PyDict_NewPresized(n) ((n <= 8) ? PyDict_New() : _PyDict_NewPresized(n)) #else @@ -624,7 +607,8 @@ typedef struct {PyObject **p; const char *s; const Py_ssize_t n; const char* enc 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_DEFAULT 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 @@ -995,6 +979,32 @@ static PyObject* __Pyx_PyObject_GenericGetAttr(PyObject* obj, PyObject* attr_nam /* SetupReduce.proto */ static int __Pyx_setup_reduce(PyObject* type_obj); +/* 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 + /* CLineInTraceback.proto */ #ifdef CYTHON_CLINE_IN_TRACEBACK #define __Pyx_CLineForTraceback(tstate, c_line) (((CYTHON_CLINE_IN_TRACEBACK)) ? c_line : 0) @@ -2571,11 +2581,13 @@ static CYTHON_SMALL_CODE int __Pyx_check_single_interpreter(void) { } return 0; } -static CYTHON_SMALL_CODE int __Pyx_copy_spec_to_module(PyObject *spec, PyObject *moddict, const char* from_name, const char* to_name) { +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) { PyObject *value = PyObject_GetAttrString(spec, from_name); int result = 0; if (likely(value)) { - result = PyDict_SetItemString(moddict, to_name, value); + if (allow_none || value != Py_None) { + result = PyDict_SetItemString(moddict, to_name, value); + } Py_DECREF(value); } else if (PyErr_ExceptionMatches(PyExc_AttributeError)) { PyErr_Clear(); @@ -2597,10 +2609,10 @@ static CYTHON_SMALL_CODE PyObject* __pyx_pymod_create(PyObject *spec, CYTHON_UNU if (unlikely(!module)) goto bad; moddict = PyModule_GetDict(module); if (unlikely(!moddict)) goto bad; - if (unlikely(__Pyx_copy_spec_to_module(spec, moddict, "loader", "__loader__") < 0)) goto bad; - if (unlikely(__Pyx_copy_spec_to_module(spec, moddict, "origin", "__file__") < 0)) goto bad; - if (unlikely(__Pyx_copy_spec_to_module(spec, moddict, "parent", "__package__") < 0)) goto bad; - if (unlikely(__Pyx_copy_spec_to_module(spec, moddict, "submodule_search_locations", "__path__") < 0)) goto bad; + 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); @@ -3193,6 +3205,32 @@ static int __Pyx_setup_reduce(PyObject* type_obj) { return ret; } +/* PyDictVersioning */ +#if CYTHON_USE_DICT_VERSIONS && CYTHON_USE_TYPE_SLOTS +static CYTHON_INLINE PY_UINT64_T __Pyx_get_tp_dict_version(PyObject *obj) { + PyObject *dict = Py_TYPE(obj)->tp_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 + /* CLineInTraceback */ #ifndef CYTHON_CLINE_IN_TRACEBACK static int __Pyx_CLineForTraceback(PyThreadState *tstate, int c_line) { diff --git a/ssh2/knownhost.c b/ssh2/knownhost.c index c2729254..a2ff3560 100644 --- a/ssh2/knownhost.c +++ b/ssh2/knownhost.c @@ -1,4 +1,4 @@ -/* Generated by Cython 0.29 */ +/* Generated by Cython 0.29.6 */ #define PY_SSIZE_T_CLEAN #include "Python.h" @@ -7,8 +7,8 @@ #elif PY_VERSION_HEX < 0x02060000 || (0x03000000 <= PY_VERSION_HEX && PY_VERSION_HEX < 0x03030000) #error Cython requires Python 2.6+ or Python 3.3+. #else -#define CYTHON_ABI "0_29" -#define CYTHON_HEX_VERSION 0x001D00F0 +#define CYTHON_ABI "0_29_6" +#define CYTHON_HEX_VERSION 0x001D06F0 #define CYTHON_FUTURE_DIVISION 0 #include #ifndef offsetof @@ -197,6 +197,9 @@ #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 @@ -343,26 +346,6 @@ #else #define __Pyx_PyFastCFunction_Check(func) 0 #endif -#if CYTHON_USE_DICT_VERSIONS -#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);\ - }\ - } -#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 #if CYTHON_COMPILING_IN_PYPY && !defined(PyObject_Malloc) #define PyObject_Malloc(s) PyMem_Malloc(s) #define PyObject_Free(p) PyMem_Free(p) @@ -395,7 +378,7 @@ typedef int Py_tss_t; static CYTHON_INLINE int PyThread_tss_create(Py_tss_t *key) { *key = PyThread_create_key(); - return 0; // PyThread_create_key reports success always + 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)); @@ -418,7 +401,7 @@ static CYTHON_INLINE int PyThread_tss_set(Py_tss_t *key, void *value) { static CYTHON_INLINE void * PyThread_tss_get(Py_tss_t *key) { return PyThread_get_key_value(*key); } -#endif // TSS (Thread Specific Storage) API +#endif #if CYTHON_COMPILING_IN_CPYTHON || defined(_PyDict_NewPresized) #define __Pyx_PyDict_NewPresized(n) ((n <= 8) ? PyDict_New() : _PyDict_NewPresized(n)) #else @@ -624,7 +607,8 @@ typedef struct {PyObject **p; const char *s; const Py_ssize_t n; const char* enc 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_DEFAULT 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 @@ -975,7 +959,7 @@ static PyObject *__Pyx_PyFunction_FastCallDict(PyObject *func, PyObject **args, #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 = PyFrame_Type.tp_basicsize - 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 @@ -1009,6 +993,32 @@ static CYTHON_INLINE PyObject *__Pyx_PyCFunction_FastCall(PyObject *func, PyObje /* PyObjectCallOneArg.proto */ static CYTHON_INLINE PyObject* __Pyx_PyObject_CallOneArg(PyObject *func, PyObject *arg); +/* 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) {\ @@ -5207,9 +5217,9 @@ static PyObject *__pyx_pf_4ssh2_9knownhost_9KnownHost_18writeline(struct __pyx_o __pyx_t_10 = 0; __pyx_t_11 = 0; __pyx_t_12 = 0; __pyx_t_13 = 0; __pyx_t_14 = 0; __pyx_t_15 = 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_4); __pyx_t_4 = 0; __Pyx_XDECREF(__pyx_t_5); __pyx_t_5 = 0; + __Pyx_XDECREF(__pyx_t_7); __pyx_t_7 = 0; if (PY_MAJOR_VERSION >= 3) __Pyx_ExceptionSwap(&__pyx_t_13, &__pyx_t_14, &__pyx_t_15); 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); @@ -6643,11 +6653,13 @@ static CYTHON_SMALL_CODE int __Pyx_check_single_interpreter(void) { } return 0; } -static CYTHON_SMALL_CODE int __Pyx_copy_spec_to_module(PyObject *spec, PyObject *moddict, const char* from_name, const char* to_name) { +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) { PyObject *value = PyObject_GetAttrString(spec, from_name); int result = 0; if (likely(value)) { - result = PyDict_SetItemString(moddict, to_name, value); + if (allow_none || value != Py_None) { + result = PyDict_SetItemString(moddict, to_name, value); + } Py_DECREF(value); } else if (PyErr_ExceptionMatches(PyExc_AttributeError)) { PyErr_Clear(); @@ -6669,10 +6681,10 @@ static CYTHON_SMALL_CODE PyObject* __pyx_pymod_create(PyObject *spec, CYTHON_UNU if (unlikely(!module)) goto bad; moddict = PyModule_GetDict(module); if (unlikely(!moddict)) goto bad; - if (unlikely(__Pyx_copy_spec_to_module(spec, moddict, "loader", "__loader__") < 0)) goto bad; - if (unlikely(__Pyx_copy_spec_to_module(spec, moddict, "origin", "__file__") < 0)) goto bad; - if (unlikely(__Pyx_copy_spec_to_module(spec, moddict, "parent", "__package__") < 0)) goto bad; - if (unlikely(__Pyx_copy_spec_to_module(spec, moddict, "submodule_search_locations", "__path__") < 0)) goto bad; + 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); @@ -7427,6 +7439,32 @@ static CYTHON_INLINE PyObject* __Pyx_PyObject_CallOneArg(PyObject *func, PyObjec } #endif +/* PyDictVersioning */ +#if CYTHON_USE_DICT_VERSIONS && CYTHON_USE_TYPE_SLOTS +static CYTHON_INLINE PY_UINT64_T __Pyx_get_tp_dict_version(PyObject *obj) { + PyObject *dict = Py_TYPE(obj)->tp_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) diff --git a/ssh2/listener.c b/ssh2/listener.c index fc0a0598..5375c0f2 100644 --- a/ssh2/listener.c +++ b/ssh2/listener.c @@ -1,4 +1,4 @@ -/* Generated by Cython 0.29 */ +/* Generated by Cython 0.29.6 */ #define PY_SSIZE_T_CLEAN #include "Python.h" @@ -7,8 +7,8 @@ #elif PY_VERSION_HEX < 0x02060000 || (0x03000000 <= PY_VERSION_HEX && PY_VERSION_HEX < 0x03030000) #error Cython requires Python 2.6+ or Python 3.3+. #else -#define CYTHON_ABI "0_29" -#define CYTHON_HEX_VERSION 0x001D00F0 +#define CYTHON_ABI "0_29_6" +#define CYTHON_HEX_VERSION 0x001D06F0 #define CYTHON_FUTURE_DIVISION 0 #include #ifndef offsetof @@ -197,6 +197,9 @@ #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 @@ -343,26 +346,6 @@ #else #define __Pyx_PyFastCFunction_Check(func) 0 #endif -#if CYTHON_USE_DICT_VERSIONS -#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);\ - }\ - } -#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 #if CYTHON_COMPILING_IN_PYPY && !defined(PyObject_Malloc) #define PyObject_Malloc(s) PyMem_Malloc(s) #define PyObject_Free(p) PyMem_Free(p) @@ -395,7 +378,7 @@ typedef int Py_tss_t; static CYTHON_INLINE int PyThread_tss_create(Py_tss_t *key) { *key = PyThread_create_key(); - return 0; // PyThread_create_key reports success always + 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)); @@ -418,7 +401,7 @@ static CYTHON_INLINE int PyThread_tss_set(Py_tss_t *key, void *value) { static CYTHON_INLINE void * PyThread_tss_get(Py_tss_t *key) { return PyThread_get_key_value(*key); } -#endif // TSS (Thread Specific Storage) API +#endif #if CYTHON_COMPILING_IN_CPYTHON || defined(_PyDict_NewPresized) #define __Pyx_PyDict_NewPresized(n) ((n <= 8) ? PyDict_New() : _PyDict_NewPresized(n)) #else @@ -622,7 +605,8 @@ typedef struct {PyObject **p; const char *s; const Py_ssize_t n; const char* enc 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_DEFAULT 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 @@ -1046,6 +1030,32 @@ enum __Pyx_ImportType_CheckSize { static PyTypeObject *__Pyx_ImportType(PyObject* module, const char *module_name, const char *class_name, size_t size, enum __Pyx_ImportType_CheckSize check_size); #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 + /* CLineInTraceback.proto */ #ifdef CYTHON_CLINE_IN_TRACEBACK #define __Pyx_CLineForTraceback(tstate, c_line) (((CYTHON_CLINE_IN_TRACEBACK)) ? c_line : 0) @@ -2114,11 +2124,13 @@ static CYTHON_SMALL_CODE int __Pyx_check_single_interpreter(void) { } return 0; } -static CYTHON_SMALL_CODE int __Pyx_copy_spec_to_module(PyObject *spec, PyObject *moddict, const char* from_name, const char* to_name) { +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) { PyObject *value = PyObject_GetAttrString(spec, from_name); int result = 0; if (likely(value)) { - result = PyDict_SetItemString(moddict, to_name, value); + if (allow_none || value != Py_None) { + result = PyDict_SetItemString(moddict, to_name, value); + } Py_DECREF(value); } else if (PyErr_ExceptionMatches(PyExc_AttributeError)) { PyErr_Clear(); @@ -2140,10 +2152,10 @@ static CYTHON_SMALL_CODE PyObject* __pyx_pymod_create(PyObject *spec, CYTHON_UNU if (unlikely(!module)) goto bad; moddict = PyModule_GetDict(module); if (unlikely(!moddict)) goto bad; - if (unlikely(__Pyx_copy_spec_to_module(spec, moddict, "loader", "__loader__") < 0)) goto bad; - if (unlikely(__Pyx_copy_spec_to_module(spec, moddict, "origin", "__file__") < 0)) goto bad; - if (unlikely(__Pyx_copy_spec_to_module(spec, moddict, "parent", "__package__") < 0)) goto bad; - if (unlikely(__Pyx_copy_spec_to_module(spec, moddict, "submodule_search_locations", "__path__") < 0)) goto bad; + 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); @@ -2886,6 +2898,32 @@ static PyTypeObject *__Pyx_ImportType(PyObject *module, const char *module_name, } #endif +/* PyDictVersioning */ +#if CYTHON_USE_DICT_VERSIONS && CYTHON_USE_TYPE_SLOTS +static CYTHON_INLINE PY_UINT64_T __Pyx_get_tp_dict_version(PyObject *obj) { + PyObject *dict = Py_TYPE(obj)->tp_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 + /* CLineInTraceback */ #ifndef CYTHON_CLINE_IN_TRACEBACK static int __Pyx_CLineForTraceback(PyThreadState *tstate, int c_line) { diff --git a/ssh2/pkey.c b/ssh2/pkey.c index 02e0eee2..e695b2b6 100644 --- a/ssh2/pkey.c +++ b/ssh2/pkey.c @@ -1,4 +1,4 @@ -/* Generated by Cython 0.29 */ +/* Generated by Cython 0.29.6 */ #define PY_SSIZE_T_CLEAN #include "Python.h" @@ -7,8 +7,8 @@ #elif PY_VERSION_HEX < 0x02060000 || (0x03000000 <= PY_VERSION_HEX && PY_VERSION_HEX < 0x03030000) #error Cython requires Python 2.6+ or Python 3.3+. #else -#define CYTHON_ABI "0_29" -#define CYTHON_HEX_VERSION 0x001D00F0 +#define CYTHON_ABI "0_29_6" +#define CYTHON_HEX_VERSION 0x001D06F0 #define CYTHON_FUTURE_DIVISION 0 #include #ifndef offsetof @@ -197,6 +197,9 @@ #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 @@ -343,26 +346,6 @@ #else #define __Pyx_PyFastCFunction_Check(func) 0 #endif -#if CYTHON_USE_DICT_VERSIONS -#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);\ - }\ - } -#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 #if CYTHON_COMPILING_IN_PYPY && !defined(PyObject_Malloc) #define PyObject_Malloc(s) PyMem_Malloc(s) #define PyObject_Free(p) PyMem_Free(p) @@ -395,7 +378,7 @@ typedef int Py_tss_t; static CYTHON_INLINE int PyThread_tss_create(Py_tss_t *key) { *key = PyThread_create_key(); - return 0; // PyThread_create_key reports success always + 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)); @@ -418,7 +401,7 @@ static CYTHON_INLINE int PyThread_tss_set(Py_tss_t *key, void *value) { static CYTHON_INLINE void * PyThread_tss_get(Py_tss_t *key) { return PyThread_get_key_value(*key); } -#endif // TSS (Thread Specific Storage) API +#endif #if CYTHON_COMPILING_IN_CPYTHON || defined(_PyDict_NewPresized) #define __Pyx_PyDict_NewPresized(n) ((n <= 8) ? PyDict_New() : _PyDict_NewPresized(n)) #else @@ -622,7 +605,8 @@ typedef struct {PyObject **p; const char *s; const Py_ssize_t n; const char* enc 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_DEFAULT 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 @@ -980,6 +964,32 @@ static PyObject* __Pyx_PyObject_GenericGetAttr(PyObject* obj, PyObject* attr_nam /* SetupReduce.proto */ static int __Pyx_setup_reduce(PyObject* type_obj); +/* 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 + /* CLineInTraceback.proto */ #ifdef CYTHON_CLINE_IN_TRACEBACK #define __Pyx_CLineForTraceback(tstate, c_line) (((CYTHON_CLINE_IN_TRACEBACK)) ? c_line : 0) @@ -2031,11 +2041,13 @@ static CYTHON_SMALL_CODE int __Pyx_check_single_interpreter(void) { } return 0; } -static CYTHON_SMALL_CODE int __Pyx_copy_spec_to_module(PyObject *spec, PyObject *moddict, const char* from_name, const char* to_name) { +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) { PyObject *value = PyObject_GetAttrString(spec, from_name); int result = 0; if (likely(value)) { - result = PyDict_SetItemString(moddict, to_name, value); + if (allow_none || value != Py_None) { + result = PyDict_SetItemString(moddict, to_name, value); + } Py_DECREF(value); } else if (PyErr_ExceptionMatches(PyExc_AttributeError)) { PyErr_Clear(); @@ -2057,10 +2069,10 @@ static CYTHON_SMALL_CODE PyObject* __pyx_pymod_create(PyObject *spec, CYTHON_UNU if (unlikely(!module)) goto bad; moddict = PyModule_GetDict(module); if (unlikely(!moddict)) goto bad; - if (unlikely(__Pyx_copy_spec_to_module(spec, moddict, "loader", "__loader__") < 0)) goto bad; - if (unlikely(__Pyx_copy_spec_to_module(spec, moddict, "origin", "__file__") < 0)) goto bad; - if (unlikely(__Pyx_copy_spec_to_module(spec, moddict, "parent", "__package__") < 0)) goto bad; - if (unlikely(__Pyx_copy_spec_to_module(spec, moddict, "submodule_search_locations", "__path__") < 0)) goto bad; + 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); @@ -2653,6 +2665,32 @@ static int __Pyx_setup_reduce(PyObject* type_obj) { return ret; } +/* PyDictVersioning */ +#if CYTHON_USE_DICT_VERSIONS && CYTHON_USE_TYPE_SLOTS +static CYTHON_INLINE PY_UINT64_T __Pyx_get_tp_dict_version(PyObject *obj) { + PyObject *dict = Py_TYPE(obj)->tp_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 + /* CLineInTraceback */ #ifndef CYTHON_CLINE_IN_TRACEBACK static int __Pyx_CLineForTraceback(PyThreadState *tstate, int c_line) { diff --git a/ssh2/publickey.c b/ssh2/publickey.c index 6aa241a4..6f5e6b41 100644 --- a/ssh2/publickey.c +++ b/ssh2/publickey.c @@ -1,4 +1,4 @@ -/* Generated by Cython 0.29 */ +/* Generated by Cython 0.29.6 */ #define PY_SSIZE_T_CLEAN #include "Python.h" @@ -7,8 +7,8 @@ #elif PY_VERSION_HEX < 0x02060000 || (0x03000000 <= PY_VERSION_HEX && PY_VERSION_HEX < 0x03030000) #error Cython requires Python 2.6+ or Python 3.3+. #else -#define CYTHON_ABI "0_29" -#define CYTHON_HEX_VERSION 0x001D00F0 +#define CYTHON_ABI "0_29_6" +#define CYTHON_HEX_VERSION 0x001D06F0 #define CYTHON_FUTURE_DIVISION 0 #include #ifndef offsetof @@ -197,6 +197,9 @@ #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 @@ -343,26 +346,6 @@ #else #define __Pyx_PyFastCFunction_Check(func) 0 #endif -#if CYTHON_USE_DICT_VERSIONS -#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);\ - }\ - } -#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 #if CYTHON_COMPILING_IN_PYPY && !defined(PyObject_Malloc) #define PyObject_Malloc(s) PyMem_Malloc(s) #define PyObject_Free(p) PyMem_Free(p) @@ -395,7 +378,7 @@ typedef int Py_tss_t; static CYTHON_INLINE int PyThread_tss_create(Py_tss_t *key) { *key = PyThread_create_key(); - return 0; // PyThread_create_key reports success always + 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)); @@ -418,7 +401,7 @@ static CYTHON_INLINE int PyThread_tss_set(Py_tss_t *key, void *value) { static CYTHON_INLINE void * PyThread_tss_get(Py_tss_t *key) { return PyThread_get_key_value(*key); } -#endif // TSS (Thread Specific Storage) API +#endif #if CYTHON_COMPILING_IN_CPYTHON || defined(_PyDict_NewPresized) #define __Pyx_PyDict_NewPresized(n) ((n <= 8) ? PyDict_New() : _PyDict_NewPresized(n)) #else @@ -625,7 +608,8 @@ typedef struct {PyObject **p; const char *s; const Py_ssize_t n; const char* enc 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_DEFAULT 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 @@ -1130,6 +1114,32 @@ enum __Pyx_ImportType_CheckSize { static PyTypeObject *__Pyx_ImportType(PyObject* module, const char *module_name, const char *class_name, size_t size, enum __Pyx_ImportType_CheckSize check_size); #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 + /* CLineInTraceback.proto */ #ifdef CYTHON_CLINE_IN_TRACEBACK #define __Pyx_CLineForTraceback(tstate, c_line) (((CYTHON_CLINE_IN_TRACEBACK)) ? c_line : 0) @@ -4386,10 +4396,10 @@ static libssh2_publickey_attribute __pyx_convert__from_py_libssh2_publickey_attr __Pyx_XDECREF(__pyx_t_3); __pyx_t_3 = 0; goto __pyx_L17_try_end; __pyx_L12_error:; - __Pyx_XDECREF(__pyx_t_9); __pyx_t_9 = 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; /* "FromPyStructUtility":23 * try: @@ -4488,10 +4498,10 @@ static libssh2_publickey_attribute __pyx_convert__from_py_libssh2_publickey_attr __Pyx_XDECREF(__pyx_t_5); __pyx_t_5 = 0; goto __pyx_L25_try_end; __pyx_L20_error:; - __Pyx_XDECREF(__pyx_t_9); __pyx_t_9 = 0; - __Pyx_XDECREF(__pyx_t_8); __pyx_t_8 = 0; - __Pyx_XDECREF(__pyx_t_7); __pyx_t_7 = 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; /* "FromPyStructUtility":28 * try: @@ -4590,10 +4600,10 @@ static libssh2_publickey_attribute __pyx_convert__from_py_libssh2_publickey_attr __Pyx_XDECREF(__pyx_t_3); __pyx_t_3 = 0; goto __pyx_L33_try_end; __pyx_L28_error:; - __Pyx_XDECREF(__pyx_t_9); __pyx_t_9 = 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; /* "FromPyStructUtility":33 * try: @@ -4692,10 +4702,10 @@ static libssh2_publickey_attribute __pyx_convert__from_py_libssh2_publickey_attr __Pyx_XDECREF(__pyx_t_5); __pyx_t_5 = 0; goto __pyx_L41_try_end; __pyx_L36_error:; - __Pyx_XDECREF(__pyx_t_9); __pyx_t_9 = 0; - __Pyx_XDECREF(__pyx_t_8); __pyx_t_8 = 0; - __Pyx_XDECREF(__pyx_t_7); __pyx_t_7 = 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; /* "FromPyStructUtility":38 * try: @@ -5565,11 +5575,13 @@ static CYTHON_SMALL_CODE int __Pyx_check_single_interpreter(void) { } return 0; } -static CYTHON_SMALL_CODE int __Pyx_copy_spec_to_module(PyObject *spec, PyObject *moddict, const char* from_name, const char* to_name) { +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) { PyObject *value = PyObject_GetAttrString(spec, from_name); int result = 0; if (likely(value)) { - result = PyDict_SetItemString(moddict, to_name, value); + if (allow_none || value != Py_None) { + result = PyDict_SetItemString(moddict, to_name, value); + } Py_DECREF(value); } else if (PyErr_ExceptionMatches(PyExc_AttributeError)) { PyErr_Clear(); @@ -5591,10 +5603,10 @@ static CYTHON_SMALL_CODE PyObject* __pyx_pymod_create(PyObject *spec, CYTHON_UNU if (unlikely(!module)) goto bad; moddict = PyModule_GetDict(module); if (unlikely(!moddict)) goto bad; - if (unlikely(__Pyx_copy_spec_to_module(spec, moddict, "loader", "__loader__") < 0)) goto bad; - if (unlikely(__Pyx_copy_spec_to_module(spec, moddict, "origin", "__file__") < 0)) goto bad; - if (unlikely(__Pyx_copy_spec_to_module(spec, moddict, "parent", "__package__") < 0)) goto bad; - if (unlikely(__Pyx_copy_spec_to_module(spec, moddict, "submodule_search_locations", "__path__") < 0)) goto bad; + 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); @@ -6574,6 +6586,32 @@ static PyTypeObject *__Pyx_ImportType(PyObject *module, const char *module_name, } #endif +/* PyDictVersioning */ +#if CYTHON_USE_DICT_VERSIONS && CYTHON_USE_TYPE_SLOTS +static CYTHON_INLINE PY_UINT64_T __Pyx_get_tp_dict_version(PyObject *obj) { + PyObject *dict = Py_TYPE(obj)->tp_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 + /* CLineInTraceback */ #ifndef CYTHON_CLINE_IN_TRACEBACK static int __Pyx_CLineForTraceback(PyThreadState *tstate, int c_line) { diff --git a/ssh2/session.c b/ssh2/session.c index 1104f79b..e168dcad 100644 --- a/ssh2/session.c +++ b/ssh2/session.c @@ -1,4 +1,4 @@ -/* Generated by Cython 0.29 */ +/* Generated by Cython 0.29.6 */ #define PY_SSIZE_T_CLEAN #include "Python.h" @@ -7,8 +7,8 @@ #elif PY_VERSION_HEX < 0x02060000 || (0x03000000 <= PY_VERSION_HEX && PY_VERSION_HEX < 0x03030000) #error Cython requires Python 2.6+ or Python 3.3+. #else -#define CYTHON_ABI "0_29" -#define CYTHON_HEX_VERSION 0x001D00F0 +#define CYTHON_ABI "0_29_6" +#define CYTHON_HEX_VERSION 0x001D06F0 #define CYTHON_FUTURE_DIVISION 0 #include #ifndef offsetof @@ -197,6 +197,9 @@ #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 @@ -343,26 +346,6 @@ #else #define __Pyx_PyFastCFunction_Check(func) 0 #endif -#if CYTHON_USE_DICT_VERSIONS -#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);\ - }\ - } -#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 #if CYTHON_COMPILING_IN_PYPY && !defined(PyObject_Malloc) #define PyObject_Malloc(s) PyMem_Malloc(s) #define PyObject_Free(p) PyMem_Free(p) @@ -395,7 +378,7 @@ typedef int Py_tss_t; static CYTHON_INLINE int PyThread_tss_create(Py_tss_t *key) { *key = PyThread_create_key(); - return 0; // PyThread_create_key reports success always + 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)); @@ -418,7 +401,7 @@ static CYTHON_INLINE int PyThread_tss_set(Py_tss_t *key, void *value) { static CYTHON_INLINE void * PyThread_tss_get(Py_tss_t *key) { return PyThread_get_key_value(*key); } -#endif // TSS (Thread Specific Storage) API +#endif #if CYTHON_COMPILING_IN_CPYTHON || defined(_PyDict_NewPresized) #define __Pyx_PyDict_NewPresized(n) ((n <= 8) ? PyDict_New() : _PyDict_NewPresized(n)) #else @@ -628,7 +611,8 @@ typedef struct {PyObject **p; const char *s; const Py_ssize_t n; const char* enc 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_DEFAULT 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 @@ -1189,7 +1173,7 @@ static PyObject *__Pyx_PyFunction_FastCallDict(PyObject *func, PyObject **args, #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 = PyFrame_Type.tp_basicsize - 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 @@ -1206,6 +1190,32 @@ static CYTHON_INLINE PyObject* __Pyx_PyObject_CallNoArg(PyObject *func); #define __Pyx_PyObject_CallNoArg(func) __Pyx_PyObject_Call(func, __pyx_empty_tuple, NULL) #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) {\ @@ -1769,7 +1779,7 @@ static int __pyx_pf_4ssh2_7session_7Session___cinit__(struct __pyx_obj_4ssh2_7se * * def __dealloc__(self): # <<<<<<<<<<<<<< * if self._session is not NULL: - * with nogil: + * c_ssh2.libssh2_session_free(self._session) */ /* Python wrapper */ @@ -1792,8 +1802,8 @@ static void __pyx_pf_4ssh2_7session_7Session_2__dealloc__(struct __pyx_obj_4ssh2 * * def __dealloc__(self): * if self._session is not NULL: # <<<<<<<<<<<<<< - * with nogil: - * c_ssh2.libssh2_session_disconnect( + * c_ssh2.libssh2_session_free(self._session) + * self._session = NULL */ __pyx_t_1 = ((__pyx_v_self->_session != NULL) != 0); if (__pyx_t_1) { @@ -1801,68 +1811,24 @@ static void __pyx_pf_4ssh2_7session_7Session_2__dealloc__(struct __pyx_obj_4ssh2 /* "ssh2/session.pyx":62 * def __dealloc__(self): * if self._session is not NULL: - * with nogil: # <<<<<<<<<<<<<< - * c_ssh2.libssh2_session_disconnect( - * self._session, b"end") - */ - { - #ifdef WITH_THREAD - PyThreadState *_save; - Py_UNBLOCK_THREADS - __Pyx_FastGIL_Remember(); - #endif - /*try:*/ { - - /* "ssh2/session.pyx":63 - * if self._session is not NULL: - * with nogil: - * c_ssh2.libssh2_session_disconnect( # <<<<<<<<<<<<<< - * self._session, b"end") - * c_ssh2.libssh2_session_free(self._session) - */ - (void)(libssh2_session_disconnect(__pyx_v_self->_session, ((char const *)"end"))); - - /* "ssh2/session.pyx":65 - * c_ssh2.libssh2_session_disconnect( - * self._session, b"end") - * c_ssh2.libssh2_session_free(self._session) # <<<<<<<<<<<<<< + * c_ssh2.libssh2_session_free(self._session) # <<<<<<<<<<<<<< * self._session = NULL * */ - (void)(libssh2_session_free(__pyx_v_self->_session)); - } - - /* "ssh2/session.pyx":62 - * def __dealloc__(self): - * if self._session is not NULL: - * with nogil: # <<<<<<<<<<<<<< - * c_ssh2.libssh2_session_disconnect( - * self._session, b"end") - */ - /*finally:*/ { - /*normal exit:*/{ - #ifdef WITH_THREAD - __Pyx_FastGIL_Forget(); - Py_BLOCK_THREADS - #endif - goto __pyx_L6; - } - __pyx_L6:; - } - } + (void)(libssh2_session_free(__pyx_v_self->_session)); /* "ssh2/session.pyx":61 * * def __dealloc__(self): * if self._session is not NULL: # <<<<<<<<<<<<<< - * with nogil: - * c_ssh2.libssh2_session_disconnect( + * c_ssh2.libssh2_session_free(self._session) + * self._session = NULL */ } - /* "ssh2/session.pyx":66 - * self._session, b"end") - * c_ssh2.libssh2_session_free(self._session) + /* "ssh2/session.pyx":63 + * if self._session is not NULL: + * c_ssh2.libssh2_session_free(self._session) * self._session = NULL # <<<<<<<<<<<<<< * * def disconnect(self): @@ -1874,14 +1840,14 @@ static void __pyx_pf_4ssh2_7session_7Session_2__dealloc__(struct __pyx_obj_4ssh2 * * def __dealloc__(self): # <<<<<<<<<<<<<< * if self._session is not NULL: - * with nogil: + * c_ssh2.libssh2_session_free(self._session) */ /* function exit code */ __Pyx_RefNannyFinishContext(); } -/* "ssh2/session.pyx":68 +/* "ssh2/session.pyx":65 * self._session = NULL * * def disconnect(self): # <<<<<<<<<<<<<< @@ -1911,7 +1877,7 @@ static PyObject *__pyx_pf_4ssh2_7session_7Session_4disconnect(struct __pyx_obj_4 PyObject *__pyx_t_2 = NULL; __Pyx_RefNannySetupContext("disconnect", 0); - /* "ssh2/session.pyx":70 + /* "ssh2/session.pyx":67 * def disconnect(self): * cdef int rc * with nogil: # <<<<<<<<<<<<<< @@ -1926,7 +1892,7 @@ static PyObject *__pyx_pf_4ssh2_7session_7Session_4disconnect(struct __pyx_obj_4 #endif /*try:*/ { - /* "ssh2/session.pyx":71 + /* "ssh2/session.pyx":68 * cdef int rc * with nogil: * rc = c_ssh2.libssh2_session_disconnect(self._session, b"end") # <<<<<<<<<<<<<< @@ -1936,7 +1902,7 @@ static PyObject *__pyx_pf_4ssh2_7session_7Session_4disconnect(struct __pyx_obj_4 __pyx_v_rc = libssh2_session_disconnect(__pyx_v_self->_session, ((char const *)"end")); } - /* "ssh2/session.pyx":70 + /* "ssh2/session.pyx":67 * def disconnect(self): * cdef int rc * with nogil: # <<<<<<<<<<<<<< @@ -1955,7 +1921,7 @@ static PyObject *__pyx_pf_4ssh2_7session_7Session_4disconnect(struct __pyx_obj_4 } } - /* "ssh2/session.pyx":72 + /* "ssh2/session.pyx":69 * with nogil: * rc = c_ssh2.libssh2_session_disconnect(self._session, b"end") * return handle_error_codes(rc) # <<<<<<<<<<<<<< @@ -1963,14 +1929,14 @@ static PyObject *__pyx_pf_4ssh2_7session_7Session_4disconnect(struct __pyx_obj_4 * def handshake(self, sock not None): */ __Pyx_XDECREF(__pyx_r); - __pyx_t_1 = __pyx_f_4ssh2_5utils_handle_error_codes(__pyx_v_rc, 0); if (unlikely(__pyx_t_1 == ((int)-1))) __PYX_ERR(0, 72, __pyx_L1_error) - __pyx_t_2 = __Pyx_PyInt_From_int(__pyx_t_1); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 72, __pyx_L1_error) + __pyx_t_1 = __pyx_f_4ssh2_5utils_handle_error_codes(__pyx_v_rc, 0); if (unlikely(__pyx_t_1 == ((int)-1))) __PYX_ERR(0, 69, __pyx_L1_error) + __pyx_t_2 = __Pyx_PyInt_From_int(__pyx_t_1); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 69, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_2); __pyx_r = __pyx_t_2; __pyx_t_2 = 0; goto __pyx_L0; - /* "ssh2/session.pyx":68 + /* "ssh2/session.pyx":65 * self._session = NULL * * def disconnect(self): # <<<<<<<<<<<<<< @@ -1989,7 +1955,7 @@ static PyObject *__pyx_pf_4ssh2_7session_7Session_4disconnect(struct __pyx_obj_4 return __pyx_r; } -/* "ssh2/session.pyx":74 +/* "ssh2/session.pyx":71 * return handle_error_codes(rc) * * def handshake(self, sock not None): # <<<<<<<<<<<<<< @@ -2005,7 +1971,7 @@ static PyObject *__pyx_pw_4ssh2_7session_7Session_7handshake(PyObject *__pyx_v_s __Pyx_RefNannyDeclarations __Pyx_RefNannySetupContext("handshake (wrapper)", 0); if (unlikely(((PyObject *)__pyx_v_sock) == Py_None)) { - PyErr_Format(PyExc_TypeError, "Argument '%.200s' must not be None", "sock"); __PYX_ERR(0, 74, __pyx_L1_error) + PyErr_Format(PyExc_TypeError, "Argument '%.200s' must not be None", "sock"); __PYX_ERR(0, 71, __pyx_L1_error) } __pyx_r = __pyx_pf_4ssh2_7session_7Session_6handshake(((struct __pyx_obj_4ssh2_7session_Session *)__pyx_v_self), ((PyObject *)__pyx_v_sock)); @@ -2027,17 +1993,17 @@ static PyObject *__pyx_pf_4ssh2_7session_7Session_6handshake(struct __pyx_obj_4s PyObject *__pyx_t_2 = NULL; __Pyx_RefNannySetupContext("handshake", 0); - /* "ssh2/session.pyx":78 + /* "ssh2/session.pyx":75 * * Must be called after Session initialisation.""" * cdef int _sock = PyObject_AsFileDescriptor(sock) # <<<<<<<<<<<<<< * cdef int rc * with nogil: */ - __pyx_t_1 = PyObject_AsFileDescriptor(__pyx_v_sock); if (unlikely(__pyx_t_1 == ((int)-1))) __PYX_ERR(0, 78, __pyx_L1_error) + __pyx_t_1 = PyObject_AsFileDescriptor(__pyx_v_sock); if (unlikely(__pyx_t_1 == ((int)-1))) __PYX_ERR(0, 75, __pyx_L1_error) __pyx_v__sock = __pyx_t_1; - /* "ssh2/session.pyx":80 + /* "ssh2/session.pyx":77 * cdef int _sock = PyObject_AsFileDescriptor(sock) * cdef int rc * with nogil: # <<<<<<<<<<<<<< @@ -2052,7 +2018,7 @@ static PyObject *__pyx_pf_4ssh2_7session_7Session_6handshake(struct __pyx_obj_4s #endif /*try:*/ { - /* "ssh2/session.pyx":81 + /* "ssh2/session.pyx":78 * cdef int rc * with nogil: * rc = c_ssh2.libssh2_session_handshake(self._session, _sock) # <<<<<<<<<<<<<< @@ -2061,7 +2027,7 @@ static PyObject *__pyx_pf_4ssh2_7session_7Session_6handshake(struct __pyx_obj_4s */ __pyx_v_rc = libssh2_session_handshake(__pyx_v_self->_session, __pyx_v__sock); - /* "ssh2/session.pyx":82 + /* "ssh2/session.pyx":79 * with nogil: * rc = c_ssh2.libssh2_session_handshake(self._session, _sock) * self._sock = _sock # <<<<<<<<<<<<<< @@ -2071,7 +2037,7 @@ static PyObject *__pyx_pf_4ssh2_7session_7Session_6handshake(struct __pyx_obj_4s __pyx_v_self->_sock = __pyx_v__sock; } - /* "ssh2/session.pyx":80 + /* "ssh2/session.pyx":77 * cdef int _sock = PyObject_AsFileDescriptor(sock) * cdef int rc * with nogil: # <<<<<<<<<<<<<< @@ -2090,7 +2056,7 @@ static PyObject *__pyx_pf_4ssh2_7session_7Session_6handshake(struct __pyx_obj_4s } } - /* "ssh2/session.pyx":83 + /* "ssh2/session.pyx":80 * rc = c_ssh2.libssh2_session_handshake(self._session, _sock) * self._sock = _sock * self.sock = sock # <<<<<<<<<<<<<< @@ -2103,7 +2069,7 @@ static PyObject *__pyx_pf_4ssh2_7session_7Session_6handshake(struct __pyx_obj_4s __Pyx_DECREF(__pyx_v_self->sock); __pyx_v_self->sock = __pyx_v_sock; - /* "ssh2/session.pyx":84 + /* "ssh2/session.pyx":81 * self._sock = _sock * self.sock = sock * return handle_error_codes(rc) # <<<<<<<<<<<<<< @@ -2111,14 +2077,14 @@ static PyObject *__pyx_pf_4ssh2_7session_7Session_6handshake(struct __pyx_obj_4s * def startup(self, sock): */ __Pyx_XDECREF(__pyx_r); - __pyx_t_1 = __pyx_f_4ssh2_5utils_handle_error_codes(__pyx_v_rc, 0); if (unlikely(__pyx_t_1 == ((int)-1))) __PYX_ERR(0, 84, __pyx_L1_error) - __pyx_t_2 = __Pyx_PyInt_From_int(__pyx_t_1); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 84, __pyx_L1_error) + __pyx_t_1 = __pyx_f_4ssh2_5utils_handle_error_codes(__pyx_v_rc, 0); if (unlikely(__pyx_t_1 == ((int)-1))) __PYX_ERR(0, 81, __pyx_L1_error) + __pyx_t_2 = __Pyx_PyInt_From_int(__pyx_t_1); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 81, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_2); __pyx_r = __pyx_t_2; __pyx_t_2 = 0; goto __pyx_L0; - /* "ssh2/session.pyx":74 + /* "ssh2/session.pyx":71 * return handle_error_codes(rc) * * def handshake(self, sock not None): # <<<<<<<<<<<<<< @@ -2137,7 +2103,7 @@ static PyObject *__pyx_pf_4ssh2_7session_7Session_6handshake(struct __pyx_obj_4s return __pyx_r; } -/* "ssh2/session.pyx":86 +/* "ssh2/session.pyx":83 * return handle_error_codes(rc) * * def startup(self, sock): # <<<<<<<<<<<<<< @@ -2168,17 +2134,17 @@ static PyObject *__pyx_pf_4ssh2_7session_7Session_8startup(struct __pyx_obj_4ssh PyObject *__pyx_t_2 = NULL; __Pyx_RefNannySetupContext("startup", 0); - /* "ssh2/session.pyx":88 + /* "ssh2/session.pyx":85 * def startup(self, sock): * """Deprecated - use self.handshake""" * cdef int _sock = PyObject_AsFileDescriptor(sock) # <<<<<<<<<<<<<< * cdef int rc * rc = c_ssh2.libssh2_session_startup(self._session, _sock) */ - __pyx_t_1 = PyObject_AsFileDescriptor(__pyx_v_sock); if (unlikely(__pyx_t_1 == ((int)-1))) __PYX_ERR(0, 88, __pyx_L1_error) + __pyx_t_1 = PyObject_AsFileDescriptor(__pyx_v_sock); if (unlikely(__pyx_t_1 == ((int)-1))) __PYX_ERR(0, 85, __pyx_L1_error) __pyx_v__sock = __pyx_t_1; - /* "ssh2/session.pyx":90 + /* "ssh2/session.pyx":87 * cdef int _sock = PyObject_AsFileDescriptor(sock) * cdef int rc * rc = c_ssh2.libssh2_session_startup(self._session, _sock) # <<<<<<<<<<<<<< @@ -2187,7 +2153,7 @@ static PyObject *__pyx_pf_4ssh2_7session_7Session_8startup(struct __pyx_obj_4ssh */ __pyx_v_rc = libssh2_session_startup(__pyx_v_self->_session, __pyx_v__sock); - /* "ssh2/session.pyx":91 + /* "ssh2/session.pyx":88 * cdef int rc * rc = c_ssh2.libssh2_session_startup(self._session, _sock) * return handle_error_codes(rc) # <<<<<<<<<<<<<< @@ -2195,14 +2161,14 @@ static PyObject *__pyx_pf_4ssh2_7session_7Session_8startup(struct __pyx_obj_4ssh * def set_blocking(self, bint blocking): */ __Pyx_XDECREF(__pyx_r); - __pyx_t_1 = __pyx_f_4ssh2_5utils_handle_error_codes(__pyx_v_rc, 0); if (unlikely(__pyx_t_1 == ((int)-1))) __PYX_ERR(0, 91, __pyx_L1_error) - __pyx_t_2 = __Pyx_PyInt_From_int(__pyx_t_1); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 91, __pyx_L1_error) + __pyx_t_1 = __pyx_f_4ssh2_5utils_handle_error_codes(__pyx_v_rc, 0); if (unlikely(__pyx_t_1 == ((int)-1))) __PYX_ERR(0, 88, __pyx_L1_error) + __pyx_t_2 = __Pyx_PyInt_From_int(__pyx_t_1); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 88, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_2); __pyx_r = __pyx_t_2; __pyx_t_2 = 0; goto __pyx_L0; - /* "ssh2/session.pyx":86 + /* "ssh2/session.pyx":83 * return handle_error_codes(rc) * * def startup(self, sock): # <<<<<<<<<<<<<< @@ -2221,7 +2187,7 @@ static PyObject *__pyx_pf_4ssh2_7session_7Session_8startup(struct __pyx_obj_4ssh return __pyx_r; } -/* "ssh2/session.pyx":93 +/* "ssh2/session.pyx":90 * return handle_error_codes(rc) * * def set_blocking(self, bint blocking): # <<<<<<<<<<<<<< @@ -2238,7 +2204,7 @@ static PyObject *__pyx_pw_4ssh2_7session_7Session_11set_blocking(PyObject *__pyx __Pyx_RefNannyDeclarations __Pyx_RefNannySetupContext("set_blocking (wrapper)", 0); assert(__pyx_arg_blocking); { - __pyx_v_blocking = __Pyx_PyObject_IsTrue(__pyx_arg_blocking); if (unlikely((__pyx_v_blocking == (int)-1) && PyErr_Occurred())) __PYX_ERR(0, 93, __pyx_L3_error) + __pyx_v_blocking = __Pyx_PyObject_IsTrue(__pyx_arg_blocking); if (unlikely((__pyx_v_blocking == (int)-1) && PyErr_Occurred())) __PYX_ERR(0, 90, __pyx_L3_error) } goto __pyx_L4_argument_unpacking_done; __pyx_L3_error:; @@ -2258,7 +2224,7 @@ static PyObject *__pyx_pf_4ssh2_7session_7Session_10set_blocking(struct __pyx_ob __Pyx_RefNannyDeclarations __Pyx_RefNannySetupContext("set_blocking", 0); - /* "ssh2/session.pyx":99 + /* "ssh2/session.pyx":96 * Session default is blocking unless set otherwise. * :type blocking: bool""" * with nogil: # <<<<<<<<<<<<<< @@ -2273,7 +2239,7 @@ static PyObject *__pyx_pf_4ssh2_7session_7Session_10set_blocking(struct __pyx_ob #endif /*try:*/ { - /* "ssh2/session.pyx":100 + /* "ssh2/session.pyx":97 * :type blocking: bool""" * with nogil: * c_ssh2.libssh2_session_set_blocking( # <<<<<<<<<<<<<< @@ -2283,7 +2249,7 @@ static PyObject *__pyx_pf_4ssh2_7session_7Session_10set_blocking(struct __pyx_ob libssh2_session_set_blocking(__pyx_v_self->_session, __pyx_v_blocking); } - /* "ssh2/session.pyx":99 + /* "ssh2/session.pyx":96 * Session default is blocking unless set otherwise. * :type blocking: bool""" * with nogil: # <<<<<<<<<<<<<< @@ -2302,7 +2268,7 @@ static PyObject *__pyx_pf_4ssh2_7session_7Session_10set_blocking(struct __pyx_ob } } - /* "ssh2/session.pyx":93 + /* "ssh2/session.pyx":90 * return handle_error_codes(rc) * * def set_blocking(self, bint blocking): # <<<<<<<<<<<<<< @@ -2317,7 +2283,7 @@ static PyObject *__pyx_pf_4ssh2_7session_7Session_10set_blocking(struct __pyx_ob return __pyx_r; } -/* "ssh2/session.pyx":103 +/* "ssh2/session.pyx":100 * self._session, blocking) * * def get_blocking(self): # <<<<<<<<<<<<<< @@ -2347,7 +2313,7 @@ static PyObject *__pyx_pf_4ssh2_7session_7Session_12get_blocking(struct __pyx_ob int __pyx_t_2; __Pyx_RefNannySetupContext("get_blocking", 0); - /* "ssh2/session.pyx":108 + /* "ssh2/session.pyx":105 * :rtype: bool""" * cdef int rc * with nogil: # <<<<<<<<<<<<<< @@ -2362,7 +2328,7 @@ static PyObject *__pyx_pf_4ssh2_7session_7Session_12get_blocking(struct __pyx_ob #endif /*try:*/ { - /* "ssh2/session.pyx":109 + /* "ssh2/session.pyx":106 * cdef int rc * with nogil: * rc = c_ssh2.libssh2_session_get_blocking(self._session) # <<<<<<<<<<<<<< @@ -2372,7 +2338,7 @@ static PyObject *__pyx_pf_4ssh2_7session_7Session_12get_blocking(struct __pyx_ob __pyx_v_rc = libssh2_session_get_blocking(__pyx_v_self->_session); } - /* "ssh2/session.pyx":108 + /* "ssh2/session.pyx":105 * :rtype: bool""" * cdef int rc * with nogil: # <<<<<<<<<<<<<< @@ -2391,7 +2357,7 @@ static PyObject *__pyx_pf_4ssh2_7session_7Session_12get_blocking(struct __pyx_ob } } - /* "ssh2/session.pyx":110 + /* "ssh2/session.pyx":107 * with nogil: * rc = c_ssh2.libssh2_session_get_blocking(self._session) * return bool(rc) # <<<<<<<<<<<<<< @@ -2399,17 +2365,17 @@ static PyObject *__pyx_pf_4ssh2_7session_7Session_12get_blocking(struct __pyx_ob * def set_timeout(self, long timeout): */ __Pyx_XDECREF(__pyx_r); - __pyx_t_1 = __Pyx_PyInt_From_int(__pyx_v_rc); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 110, __pyx_L1_error) + __pyx_t_1 = __Pyx_PyInt_From_int(__pyx_v_rc); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 107, __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, 110, __pyx_L1_error) + __pyx_t_2 = __Pyx_PyObject_IsTrue(__pyx_t_1); if (unlikely(__pyx_t_2 < 0)) __PYX_ERR(0, 107, __pyx_L1_error) __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; - __pyx_t_1 = __Pyx_PyBool_FromLong((!(!__pyx_t_2))); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 110, __pyx_L1_error) + __pyx_t_1 = __Pyx_PyBool_FromLong((!(!__pyx_t_2))); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 107, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_1); __pyx_r = __pyx_t_1; __pyx_t_1 = 0; goto __pyx_L0; - /* "ssh2/session.pyx":103 + /* "ssh2/session.pyx":100 * self._session, blocking) * * def get_blocking(self): # <<<<<<<<<<<<<< @@ -2428,7 +2394,7 @@ static PyObject *__pyx_pf_4ssh2_7session_7Session_12get_blocking(struct __pyx_ob return __pyx_r; } -/* "ssh2/session.pyx":112 +/* "ssh2/session.pyx":109 * return bool(rc) * * def set_timeout(self, long timeout): # <<<<<<<<<<<<<< @@ -2445,7 +2411,7 @@ static PyObject *__pyx_pw_4ssh2_7session_7Session_15set_timeout(PyObject *__pyx_ __Pyx_RefNannyDeclarations __Pyx_RefNannySetupContext("set_timeout (wrapper)", 0); assert(__pyx_arg_timeout); { - __pyx_v_timeout = __Pyx_PyInt_As_long(__pyx_arg_timeout); if (unlikely((__pyx_v_timeout == (long)-1) && PyErr_Occurred())) __PYX_ERR(0, 112, __pyx_L3_error) + __pyx_v_timeout = __Pyx_PyInt_As_long(__pyx_arg_timeout); if (unlikely((__pyx_v_timeout == (long)-1) && PyErr_Occurred())) __PYX_ERR(0, 109, __pyx_L3_error) } goto __pyx_L4_argument_unpacking_done; __pyx_L3_error:; @@ -2465,7 +2431,7 @@ static PyObject *__pyx_pf_4ssh2_7session_7Session_14set_timeout(struct __pyx_obj __Pyx_RefNannyDeclarations __Pyx_RefNannySetupContext("set_timeout", 0); - /* "ssh2/session.pyx":120 + /* "ssh2/session.pyx":117 * time out. * :param timeout: Milliseconds to wait before timeout.""" * with nogil: # <<<<<<<<<<<<<< @@ -2480,7 +2446,7 @@ static PyObject *__pyx_pf_4ssh2_7session_7Session_14set_timeout(struct __pyx_obj #endif /*try:*/ { - /* "ssh2/session.pyx":121 + /* "ssh2/session.pyx":118 * :param timeout: Milliseconds to wait before timeout.""" * with nogil: * c_ssh2.libssh2_session_set_timeout(self._session, timeout) # <<<<<<<<<<<<<< @@ -2490,7 +2456,7 @@ static PyObject *__pyx_pf_4ssh2_7session_7Session_14set_timeout(struct __pyx_obj libssh2_session_set_timeout(__pyx_v_self->_session, __pyx_v_timeout); } - /* "ssh2/session.pyx":120 + /* "ssh2/session.pyx":117 * time out. * :param timeout: Milliseconds to wait before timeout.""" * with nogil: # <<<<<<<<<<<<<< @@ -2509,7 +2475,7 @@ static PyObject *__pyx_pf_4ssh2_7session_7Session_14set_timeout(struct __pyx_obj } } - /* "ssh2/session.pyx":112 + /* "ssh2/session.pyx":109 * return bool(rc) * * def set_timeout(self, long timeout): # <<<<<<<<<<<<<< @@ -2524,7 +2490,7 @@ static PyObject *__pyx_pf_4ssh2_7session_7Session_14set_timeout(struct __pyx_obj return __pyx_r; } -/* "ssh2/session.pyx":123 +/* "ssh2/session.pyx":120 * c_ssh2.libssh2_session_set_timeout(self._session, timeout) * * def get_timeout(self): # <<<<<<<<<<<<<< @@ -2553,7 +2519,7 @@ static PyObject *__pyx_pf_4ssh2_7session_7Session_16get_timeout(struct __pyx_obj PyObject *__pyx_t_1 = NULL; __Pyx_RefNannySetupContext("get_timeout", 0); - /* "ssh2/session.pyx":126 + /* "ssh2/session.pyx":123 * """Get current session timeout setting""" * cdef long timeout * with nogil: # <<<<<<<<<<<<<< @@ -2568,7 +2534,7 @@ static PyObject *__pyx_pf_4ssh2_7session_7Session_16get_timeout(struct __pyx_obj #endif /*try:*/ { - /* "ssh2/session.pyx":127 + /* "ssh2/session.pyx":124 * cdef long timeout * with nogil: * timeout = c_ssh2.libssh2_session_get_timeout(self._session) # <<<<<<<<<<<<<< @@ -2578,7 +2544,7 @@ static PyObject *__pyx_pf_4ssh2_7session_7Session_16get_timeout(struct __pyx_obj __pyx_v_timeout = libssh2_session_get_timeout(__pyx_v_self->_session); } - /* "ssh2/session.pyx":126 + /* "ssh2/session.pyx":123 * """Get current session timeout setting""" * cdef long timeout * with nogil: # <<<<<<<<<<<<<< @@ -2597,7 +2563,7 @@ static PyObject *__pyx_pf_4ssh2_7session_7Session_16get_timeout(struct __pyx_obj } } - /* "ssh2/session.pyx":128 + /* "ssh2/session.pyx":125 * with nogil: * timeout = c_ssh2.libssh2_session_get_timeout(self._session) * return timeout # <<<<<<<<<<<<<< @@ -2605,13 +2571,13 @@ static PyObject *__pyx_pf_4ssh2_7session_7Session_16get_timeout(struct __pyx_obj * def userauth_authenticated(self): */ __Pyx_XDECREF(__pyx_r); - __pyx_t_1 = __Pyx_PyInt_From_long(__pyx_v_timeout); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 128, __pyx_L1_error) + __pyx_t_1 = __Pyx_PyInt_From_long(__pyx_v_timeout); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 125, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_1); __pyx_r = __pyx_t_1; __pyx_t_1 = 0; goto __pyx_L0; - /* "ssh2/session.pyx":123 + /* "ssh2/session.pyx":120 * c_ssh2.libssh2_session_set_timeout(self._session, timeout) * * def get_timeout(self): # <<<<<<<<<<<<<< @@ -2630,7 +2596,7 @@ static PyObject *__pyx_pf_4ssh2_7session_7Session_16get_timeout(struct __pyx_obj return __pyx_r; } -/* "ssh2/session.pyx":130 +/* "ssh2/session.pyx":127 * return timeout * * def userauth_authenticated(self): # <<<<<<<<<<<<<< @@ -2660,7 +2626,7 @@ static PyObject *__pyx_pf_4ssh2_7session_7Session_18userauth_authenticated(struc PyObject *__pyx_t_2 = NULL; __Pyx_RefNannySetupContext("userauth_authenticated", 0); - /* "ssh2/session.pyx":135 + /* "ssh2/session.pyx":132 * :rtype: bool""" * cdef bint rc * with nogil: # <<<<<<<<<<<<<< @@ -2675,7 +2641,7 @@ static PyObject *__pyx_pf_4ssh2_7session_7Session_18userauth_authenticated(struc #endif /*try:*/ { - /* "ssh2/session.pyx":136 + /* "ssh2/session.pyx":133 * cdef bint rc * with nogil: * rc = c_ssh2.libssh2_userauth_authenticated(self._session) # <<<<<<<<<<<<<< @@ -2685,7 +2651,7 @@ static PyObject *__pyx_pf_4ssh2_7session_7Session_18userauth_authenticated(struc __pyx_v_rc = libssh2_userauth_authenticated(__pyx_v_self->_session); } - /* "ssh2/session.pyx":135 + /* "ssh2/session.pyx":132 * :rtype: bool""" * cdef bint rc * with nogil: # <<<<<<<<<<<<<< @@ -2704,7 +2670,7 @@ static PyObject *__pyx_pf_4ssh2_7session_7Session_18userauth_authenticated(struc } } - /* "ssh2/session.pyx":137 + /* "ssh2/session.pyx":134 * with nogil: * rc = c_ssh2.libssh2_userauth_authenticated(self._session) * return bool(rc) # <<<<<<<<<<<<<< @@ -2713,13 +2679,13 @@ static PyObject *__pyx_pf_4ssh2_7session_7Session_18userauth_authenticated(struc */ __Pyx_XDECREF(__pyx_r); __pyx_t_1 = __pyx_v_rc; - __pyx_t_2 = __Pyx_PyBool_FromLong((!(!__pyx_t_1))); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 137, __pyx_L1_error) + __pyx_t_2 = __Pyx_PyBool_FromLong((!(!__pyx_t_1))); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 134, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_2); __pyx_r = __pyx_t_2; __pyx_t_2 = 0; goto __pyx_L0; - /* "ssh2/session.pyx":130 + /* "ssh2/session.pyx":127 * return timeout * * def userauth_authenticated(self): # <<<<<<<<<<<<<< @@ -2738,7 +2704,7 @@ static PyObject *__pyx_pf_4ssh2_7session_7Session_18userauth_authenticated(struc return __pyx_r; } -/* "ssh2/session.pyx":139 +/* "ssh2/session.pyx":136 * return bool(rc) * * def userauth_list(self, username not None): # <<<<<<<<<<<<<< @@ -2754,7 +2720,7 @@ static PyObject *__pyx_pw_4ssh2_7session_7Session_21userauth_list(PyObject *__py __Pyx_RefNannyDeclarations __Pyx_RefNannySetupContext("userauth_list (wrapper)", 0); if (unlikely(((PyObject *)__pyx_v_username) == Py_None)) { - PyErr_Format(PyExc_TypeError, "Argument '%.200s' must not be None", "username"); __PYX_ERR(0, 139, __pyx_L1_error) + PyErr_Format(PyExc_TypeError, "Argument '%.200s' must not be None", "username"); __PYX_ERR(0, 136, __pyx_L1_error) } __pyx_r = __pyx_pf_4ssh2_7session_7Session_20userauth_list(((struct __pyx_obj_4ssh2_7session_Session *)__pyx_v_self), ((PyObject *)__pyx_v_username)); @@ -2781,19 +2747,19 @@ static PyObject *__pyx_pf_4ssh2_7session_7Session_20userauth_list(struct __pyx_o int __pyx_t_4; __Pyx_RefNannySetupContext("userauth_list", 0); - /* "ssh2/session.pyx":143 + /* "ssh2/session.pyx":140 * * :rtype: list""" * cdef bytes b_username = to_bytes(username) # <<<<<<<<<<<<<< * cdef char *_username = b_username * cdef size_t username_len = len(b_username) */ - __pyx_t_1 = __pyx_f_4ssh2_5utils_to_bytes(__pyx_v_username); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 143, __pyx_L1_error) + __pyx_t_1 = __pyx_f_4ssh2_5utils_to_bytes(__pyx_v_username); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 140, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_1); __pyx_v_b_username = ((PyObject*)__pyx_t_1); __pyx_t_1 = 0; - /* "ssh2/session.pyx":144 + /* "ssh2/session.pyx":141 * :rtype: list""" * cdef bytes b_username = to_bytes(username) * cdef char *_username = b_username # <<<<<<<<<<<<<< @@ -2802,12 +2768,12 @@ static PyObject *__pyx_pf_4ssh2_7session_7Session_20userauth_list(struct __pyx_o */ if (unlikely(__pyx_v_b_username == Py_None)) { PyErr_SetString(PyExc_TypeError, "expected bytes, NoneType found"); - __PYX_ERR(0, 144, __pyx_L1_error) + __PYX_ERR(0, 141, __pyx_L1_error) } - __pyx_t_2 = __Pyx_PyBytes_AsWritableString(__pyx_v_b_username); if (unlikely((!__pyx_t_2) && PyErr_Occurred())) __PYX_ERR(0, 144, __pyx_L1_error) + __pyx_t_2 = __Pyx_PyBytes_AsWritableString(__pyx_v_b_username); if (unlikely((!__pyx_t_2) && PyErr_Occurred())) __PYX_ERR(0, 141, __pyx_L1_error) __pyx_v__username = __pyx_t_2; - /* "ssh2/session.pyx":145 + /* "ssh2/session.pyx":142 * cdef bytes b_username = to_bytes(username) * cdef char *_username = b_username * cdef size_t username_len = len(b_username) # <<<<<<<<<<<<<< @@ -2816,12 +2782,12 @@ static PyObject *__pyx_pf_4ssh2_7session_7Session_20userauth_list(struct __pyx_o */ if (unlikely(__pyx_v_b_username == Py_None)) { PyErr_SetString(PyExc_TypeError, "object of type 'NoneType' has no len()"); - __PYX_ERR(0, 145, __pyx_L1_error) + __PYX_ERR(0, 142, __pyx_L1_error) } - __pyx_t_3 = PyBytes_GET_SIZE(__pyx_v_b_username); if (unlikely(__pyx_t_3 == ((Py_ssize_t)-1))) __PYX_ERR(0, 145, __pyx_L1_error) + __pyx_t_3 = PyBytes_GET_SIZE(__pyx_v_b_username); if (unlikely(__pyx_t_3 == ((Py_ssize_t)-1))) __PYX_ERR(0, 142, __pyx_L1_error) __pyx_v_username_len = __pyx_t_3; - /* "ssh2/session.pyx":148 + /* "ssh2/session.pyx":145 * cdef char *_auth * cdef str auth * with nogil: # <<<<<<<<<<<<<< @@ -2836,7 +2802,7 @@ static PyObject *__pyx_pf_4ssh2_7session_7Session_20userauth_list(struct __pyx_o #endif /*try:*/ { - /* "ssh2/session.pyx":149 + /* "ssh2/session.pyx":146 * cdef str auth * with nogil: * _auth = c_ssh2.libssh2_userauth_list( # <<<<<<<<<<<<<< @@ -2846,7 +2812,7 @@ static PyObject *__pyx_pf_4ssh2_7session_7Session_20userauth_list(struct __pyx_o __pyx_v__auth = libssh2_userauth_list(__pyx_v_self->_session, __pyx_v__username, __pyx_v_username_len); } - /* "ssh2/session.pyx":148 + /* "ssh2/session.pyx":145 * cdef char *_auth * cdef str auth * with nogil: # <<<<<<<<<<<<<< @@ -2865,7 +2831,7 @@ static PyObject *__pyx_pf_4ssh2_7session_7Session_20userauth_list(struct __pyx_o } } - /* "ssh2/session.pyx":151 + /* "ssh2/session.pyx":148 * _auth = c_ssh2.libssh2_userauth_list( * self._session, _username, username_len) * if _auth is NULL: # <<<<<<<<<<<<<< @@ -2875,7 +2841,7 @@ static PyObject *__pyx_pf_4ssh2_7session_7Session_20userauth_list(struct __pyx_o __pyx_t_4 = ((__pyx_v__auth == NULL) != 0); if (__pyx_t_4) { - /* "ssh2/session.pyx":152 + /* "ssh2/session.pyx":149 * self._session, _username, username_len) * if _auth is NULL: * return # <<<<<<<<<<<<<< @@ -2886,7 +2852,7 @@ static PyObject *__pyx_pf_4ssh2_7session_7Session_20userauth_list(struct __pyx_o __pyx_r = Py_None; __Pyx_INCREF(Py_None); goto __pyx_L0; - /* "ssh2/session.pyx":151 + /* "ssh2/session.pyx":148 * _auth = c_ssh2.libssh2_userauth_list( * self._session, _username, username_len) * if _auth is NULL: # <<<<<<<<<<<<<< @@ -2895,20 +2861,20 @@ static PyObject *__pyx_pf_4ssh2_7session_7Session_20userauth_list(struct __pyx_o */ } - /* "ssh2/session.pyx":153 + /* "ssh2/session.pyx":150 * if _auth is NULL: * return * auth = to_str(_auth) # <<<<<<<<<<<<<< * return auth.split(',') * */ - __pyx_t_1 = __pyx_f_4ssh2_5utils_to_str(__pyx_v__auth); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 153, __pyx_L1_error) + __pyx_t_1 = __pyx_f_4ssh2_5utils_to_str(__pyx_v__auth); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 150, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_1); - if (!(likely(PyString_CheckExact(__pyx_t_1))||((__pyx_t_1) == Py_None)||(PyErr_Format(PyExc_TypeError, "Expected %.16s, got %.200s", "str", Py_TYPE(__pyx_t_1)->tp_name), 0))) __PYX_ERR(0, 153, __pyx_L1_error) + if (!(likely(PyString_CheckExact(__pyx_t_1))||((__pyx_t_1) == Py_None)||(PyErr_Format(PyExc_TypeError, "Expected %.16s, got %.200s", "str", Py_TYPE(__pyx_t_1)->tp_name), 0))) __PYX_ERR(0, 150, __pyx_L1_error) __pyx_v_auth = ((PyObject*)__pyx_t_1); __pyx_t_1 = 0; - /* "ssh2/session.pyx":154 + /* "ssh2/session.pyx":151 * return * auth = to_str(_auth) * return auth.split(',') # <<<<<<<<<<<<<< @@ -2916,13 +2882,13 @@ static PyObject *__pyx_pf_4ssh2_7session_7Session_20userauth_list(struct __pyx_o * def userauth_publickey_fromfile(self, username not None, */ __Pyx_XDECREF(__pyx_r); - __pyx_t_1 = __Pyx_CallUnboundCMethod1(&__pyx_umethod_PyString_Type_split, __pyx_v_auth, __pyx_kp_s_); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 154, __pyx_L1_error) + __pyx_t_1 = __Pyx_CallUnboundCMethod1(&__pyx_umethod_PyString_Type_split, __pyx_v_auth, __pyx_kp_s_); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 151, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_1); __pyx_r = __pyx_t_1; __pyx_t_1 = 0; goto __pyx_L0; - /* "ssh2/session.pyx":139 + /* "ssh2/session.pyx":136 * return bool(rc) * * def userauth_list(self, username not None): # <<<<<<<<<<<<<< @@ -2943,7 +2909,7 @@ static PyObject *__pyx_pf_4ssh2_7session_7Session_20userauth_list(struct __pyx_o return __pyx_r; } -/* "ssh2/session.pyx":156 +/* "ssh2/session.pyx":153 * return auth.split(',') * * def userauth_publickey_fromfile(self, username not None, # <<<<<<<<<<<<<< @@ -2967,7 +2933,7 @@ static PyObject *__pyx_pw_4ssh2_7session_7Session_23userauth_publickey_fromfile( PyObject* values[4] = {0,0,0,0}; values[2] = ((PyObject *)__pyx_kp_s__2); - /* "ssh2/session.pyx":159 + /* "ssh2/session.pyx":156 * privatekey not None, * passphrase='', * publickey=None): # <<<<<<<<<<<<<< @@ -2999,7 +2965,7 @@ static PyObject *__pyx_pw_4ssh2_7session_7Session_23userauth_publickey_fromfile( case 1: if (likely((values[1] = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_privatekey)) != 0)) kw_args--; else { - __Pyx_RaiseArgtupleInvalid("userauth_publickey_fromfile", 0, 2, 4, 1); __PYX_ERR(0, 156, __pyx_L3_error) + __Pyx_RaiseArgtupleInvalid("userauth_publickey_fromfile", 0, 2, 4, 1); __PYX_ERR(0, 153, __pyx_L3_error) } CYTHON_FALLTHROUGH; case 2: @@ -3015,7 +2981,7 @@ static PyObject *__pyx_pw_4ssh2_7session_7Session_23userauth_publickey_fromfile( } } if (unlikely(kw_args > 0)) { - if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_pyargnames, 0, values, pos_args, "userauth_publickey_fromfile") < 0)) __PYX_ERR(0, 156, __pyx_L3_error) + if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_pyargnames, 0, values, pos_args, "userauth_publickey_fromfile") < 0)) __PYX_ERR(0, 153, __pyx_L3_error) } } else { switch (PyTuple_GET_SIZE(__pyx_args)) { @@ -3036,21 +3002,21 @@ static PyObject *__pyx_pw_4ssh2_7session_7Session_23userauth_publickey_fromfile( } goto __pyx_L4_argument_unpacking_done; __pyx_L5_argtuple_error:; - __Pyx_RaiseArgtupleInvalid("userauth_publickey_fromfile", 0, 2, 4, PyTuple_GET_SIZE(__pyx_args)); __PYX_ERR(0, 156, __pyx_L3_error) + __Pyx_RaiseArgtupleInvalid("userauth_publickey_fromfile", 0, 2, 4, PyTuple_GET_SIZE(__pyx_args)); __PYX_ERR(0, 153, __pyx_L3_error) __pyx_L3_error:; __Pyx_AddTraceback("ssh2.session.Session.userauth_publickey_fromfile", __pyx_clineno, __pyx_lineno, __pyx_filename); __Pyx_RefNannyFinishContext(); return NULL; __pyx_L4_argument_unpacking_done:; if (unlikely(((PyObject *)__pyx_v_username) == Py_None)) { - PyErr_Format(PyExc_TypeError, "Argument '%.200s' must not be None", "username"); __PYX_ERR(0, 156, __pyx_L1_error) + PyErr_Format(PyExc_TypeError, "Argument '%.200s' must not be None", "username"); __PYX_ERR(0, 153, __pyx_L1_error) } if (unlikely(((PyObject *)__pyx_v_privatekey) == Py_None)) { - PyErr_Format(PyExc_TypeError, "Argument '%.200s' must not be None", "privatekey"); __PYX_ERR(0, 157, __pyx_L1_error) + PyErr_Format(PyExc_TypeError, "Argument '%.200s' must not be None", "privatekey"); __PYX_ERR(0, 154, __pyx_L1_error) } __pyx_r = __pyx_pf_4ssh2_7session_7Session_22userauth_publickey_fromfile(((struct __pyx_obj_4ssh2_7session_Session *)__pyx_v_self), __pyx_v_username, __pyx_v_privatekey, __pyx_v_passphrase, __pyx_v_publickey); - /* "ssh2/session.pyx":156 + /* "ssh2/session.pyx":153 * return auth.split(',') * * def userauth_publickey_fromfile(self, username not None, # <<<<<<<<<<<<<< @@ -3087,19 +3053,19 @@ static PyObject *__pyx_pf_4ssh2_7session_7Session_22userauth_publickey_fromfile( int __pyx_t_6; __Pyx_RefNannySetupContext("userauth_publickey_fromfile", 0); - /* "ssh2/session.pyx":164 + /* "ssh2/session.pyx":161 * :rtype: int""" * cdef int rc * cdef bytes b_username = to_bytes(username) # <<<<<<<<<<<<<< * cdef bytes b_publickey = to_bytes(publickey) \ * if publickey is not None else None */ - __pyx_t_1 = __pyx_f_4ssh2_5utils_to_bytes(__pyx_v_username); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 164, __pyx_L1_error) + __pyx_t_1 = __pyx_f_4ssh2_5utils_to_bytes(__pyx_v_username); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 161, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_1); __pyx_v_b_username = ((PyObject*)__pyx_t_1); __pyx_t_1 = 0; - /* "ssh2/session.pyx":166 + /* "ssh2/session.pyx":163 * cdef bytes b_username = to_bytes(username) * cdef bytes b_publickey = to_bytes(publickey) \ * if publickey is not None else None # <<<<<<<<<<<<<< @@ -3109,20 +3075,20 @@ static PyObject *__pyx_pf_4ssh2_7session_7Session_22userauth_publickey_fromfile( __pyx_t_2 = (__pyx_v_publickey != Py_None); if ((__pyx_t_2 != 0)) { - /* "ssh2/session.pyx":165 + /* "ssh2/session.pyx":162 * cdef int rc * cdef bytes b_username = to_bytes(username) * cdef bytes b_publickey = to_bytes(publickey) \ # <<<<<<<<<<<<<< * if publickey is not None else None * cdef bytes b_privatekey = to_bytes(privatekey) */ - __pyx_t_3 = __pyx_f_4ssh2_5utils_to_bytes(__pyx_v_publickey); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 165, __pyx_L1_error) + __pyx_t_3 = __pyx_f_4ssh2_5utils_to_bytes(__pyx_v_publickey); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 162, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_3); __pyx_t_1 = __pyx_t_3; __pyx_t_3 = 0; } else { - /* "ssh2/session.pyx":166 + /* "ssh2/session.pyx":163 * cdef bytes b_username = to_bytes(username) * cdef bytes b_publickey = to_bytes(publickey) \ * if publickey is not None else None # <<<<<<<<<<<<<< @@ -3135,31 +3101,31 @@ static PyObject *__pyx_pf_4ssh2_7session_7Session_22userauth_publickey_fromfile( __pyx_v_b_publickey = ((PyObject*)__pyx_t_1); __pyx_t_1 = 0; - /* "ssh2/session.pyx":167 + /* "ssh2/session.pyx":164 * cdef bytes b_publickey = to_bytes(publickey) \ * if publickey is not None else None * cdef bytes b_privatekey = to_bytes(privatekey) # <<<<<<<<<<<<<< * cdef bytes b_passphrase = to_bytes(passphrase) * cdef char *_username = b_username */ - __pyx_t_1 = __pyx_f_4ssh2_5utils_to_bytes(__pyx_v_privatekey); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 167, __pyx_L1_error) + __pyx_t_1 = __pyx_f_4ssh2_5utils_to_bytes(__pyx_v_privatekey); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 164, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_1); __pyx_v_b_privatekey = ((PyObject*)__pyx_t_1); __pyx_t_1 = 0; - /* "ssh2/session.pyx":168 + /* "ssh2/session.pyx":165 * if publickey is not None else None * cdef bytes b_privatekey = to_bytes(privatekey) * cdef bytes b_passphrase = to_bytes(passphrase) # <<<<<<<<<<<<<< * cdef char *_username = b_username * cdef char *_publickey = NULL */ - __pyx_t_1 = __pyx_f_4ssh2_5utils_to_bytes(__pyx_v_passphrase); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 168, __pyx_L1_error) + __pyx_t_1 = __pyx_f_4ssh2_5utils_to_bytes(__pyx_v_passphrase); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 165, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_1); __pyx_v_b_passphrase = ((PyObject*)__pyx_t_1); __pyx_t_1 = 0; - /* "ssh2/session.pyx":169 + /* "ssh2/session.pyx":166 * cdef bytes b_privatekey = to_bytes(privatekey) * cdef bytes b_passphrase = to_bytes(passphrase) * cdef char *_username = b_username # <<<<<<<<<<<<<< @@ -3168,12 +3134,12 @@ static PyObject *__pyx_pf_4ssh2_7session_7Session_22userauth_publickey_fromfile( */ if (unlikely(__pyx_v_b_username == Py_None)) { PyErr_SetString(PyExc_TypeError, "expected bytes, NoneType found"); - __PYX_ERR(0, 169, __pyx_L1_error) + __PYX_ERR(0, 166, __pyx_L1_error) } - __pyx_t_4 = __Pyx_PyBytes_AsWritableString(__pyx_v_b_username); if (unlikely((!__pyx_t_4) && PyErr_Occurred())) __PYX_ERR(0, 169, __pyx_L1_error) + __pyx_t_4 = __Pyx_PyBytes_AsWritableString(__pyx_v_b_username); if (unlikely((!__pyx_t_4) && PyErr_Occurred())) __PYX_ERR(0, 166, __pyx_L1_error) __pyx_v__username = __pyx_t_4; - /* "ssh2/session.pyx":170 + /* "ssh2/session.pyx":167 * cdef bytes b_passphrase = to_bytes(passphrase) * cdef char *_username = b_username * cdef char *_publickey = NULL # <<<<<<<<<<<<<< @@ -3182,7 +3148,7 @@ static PyObject *__pyx_pf_4ssh2_7session_7Session_22userauth_publickey_fromfile( */ __pyx_v__publickey = NULL; - /* "ssh2/session.pyx":171 + /* "ssh2/session.pyx":168 * cdef char *_username = b_username * cdef char *_publickey = NULL * cdef char *_privatekey = b_privatekey # <<<<<<<<<<<<<< @@ -3191,12 +3157,12 @@ static PyObject *__pyx_pf_4ssh2_7session_7Session_22userauth_publickey_fromfile( */ if (unlikely(__pyx_v_b_privatekey == Py_None)) { PyErr_SetString(PyExc_TypeError, "expected bytes, NoneType found"); - __PYX_ERR(0, 171, __pyx_L1_error) + __PYX_ERR(0, 168, __pyx_L1_error) } - __pyx_t_4 = __Pyx_PyBytes_AsWritableString(__pyx_v_b_privatekey); if (unlikely((!__pyx_t_4) && PyErr_Occurred())) __PYX_ERR(0, 171, __pyx_L1_error) + __pyx_t_4 = __Pyx_PyBytes_AsWritableString(__pyx_v_b_privatekey); if (unlikely((!__pyx_t_4) && PyErr_Occurred())) __PYX_ERR(0, 168, __pyx_L1_error) __pyx_v__privatekey = __pyx_t_4; - /* "ssh2/session.pyx":172 + /* "ssh2/session.pyx":169 * cdef char *_publickey = NULL * cdef char *_privatekey = b_privatekey * cdef char *_passphrase = b_passphrase # <<<<<<<<<<<<<< @@ -3205,12 +3171,12 @@ static PyObject *__pyx_pf_4ssh2_7session_7Session_22userauth_publickey_fromfile( */ if (unlikely(__pyx_v_b_passphrase == Py_None)) { PyErr_SetString(PyExc_TypeError, "expected bytes, NoneType found"); - __PYX_ERR(0, 172, __pyx_L1_error) + __PYX_ERR(0, 169, __pyx_L1_error) } - __pyx_t_4 = __Pyx_PyBytes_AsWritableString(__pyx_v_b_passphrase); if (unlikely((!__pyx_t_4) && PyErr_Occurred())) __PYX_ERR(0, 172, __pyx_L1_error) + __pyx_t_4 = __Pyx_PyBytes_AsWritableString(__pyx_v_b_passphrase); if (unlikely((!__pyx_t_4) && PyErr_Occurred())) __PYX_ERR(0, 169, __pyx_L1_error) __pyx_v__passphrase = __pyx_t_4; - /* "ssh2/session.pyx":173 + /* "ssh2/session.pyx":170 * cdef char *_privatekey = b_privatekey * cdef char *_passphrase = b_passphrase * if b_publickey is not None: # <<<<<<<<<<<<<< @@ -3221,7 +3187,7 @@ static PyObject *__pyx_pf_4ssh2_7session_7Session_22userauth_publickey_fromfile( __pyx_t_5 = (__pyx_t_2 != 0); if (__pyx_t_5) { - /* "ssh2/session.pyx":174 + /* "ssh2/session.pyx":171 * cdef char *_passphrase = b_passphrase * if b_publickey is not None: * _publickey = b_publickey # <<<<<<<<<<<<<< @@ -3230,12 +3196,12 @@ static PyObject *__pyx_pf_4ssh2_7session_7Session_22userauth_publickey_fromfile( */ if (unlikely(__pyx_v_b_publickey == Py_None)) { PyErr_SetString(PyExc_TypeError, "expected bytes, NoneType found"); - __PYX_ERR(0, 174, __pyx_L1_error) + __PYX_ERR(0, 171, __pyx_L1_error) } - __pyx_t_4 = __Pyx_PyBytes_AsWritableString(__pyx_v_b_publickey); if (unlikely((!__pyx_t_4) && PyErr_Occurred())) __PYX_ERR(0, 174, __pyx_L1_error) + __pyx_t_4 = __Pyx_PyBytes_AsWritableString(__pyx_v_b_publickey); if (unlikely((!__pyx_t_4) && PyErr_Occurred())) __PYX_ERR(0, 171, __pyx_L1_error) __pyx_v__publickey = __pyx_t_4; - /* "ssh2/session.pyx":173 + /* "ssh2/session.pyx":170 * cdef char *_privatekey = b_privatekey * cdef char *_passphrase = b_passphrase * if b_publickey is not None: # <<<<<<<<<<<<<< @@ -3244,7 +3210,7 @@ static PyObject *__pyx_pf_4ssh2_7session_7Session_22userauth_publickey_fromfile( */ } - /* "ssh2/session.pyx":175 + /* "ssh2/session.pyx":172 * if b_publickey is not None: * _publickey = b_publickey * with nogil: # <<<<<<<<<<<<<< @@ -3259,7 +3225,7 @@ static PyObject *__pyx_pf_4ssh2_7session_7Session_22userauth_publickey_fromfile( #endif /*try:*/ { - /* "ssh2/session.pyx":176 + /* "ssh2/session.pyx":173 * _publickey = b_publickey * with nogil: * rc = c_ssh2.libssh2_userauth_publickey_fromfile( # <<<<<<<<<<<<<< @@ -3269,7 +3235,7 @@ static PyObject *__pyx_pf_4ssh2_7session_7Session_22userauth_publickey_fromfile( __pyx_v_rc = libssh2_userauth_publickey_fromfile(__pyx_v_self->_session, __pyx_v__username, __pyx_v__publickey, __pyx_v__privatekey, __pyx_v__passphrase); } - /* "ssh2/session.pyx":175 + /* "ssh2/session.pyx":172 * if b_publickey is not None: * _publickey = b_publickey * with nogil: # <<<<<<<<<<<<<< @@ -3288,7 +3254,7 @@ static PyObject *__pyx_pf_4ssh2_7session_7Session_22userauth_publickey_fromfile( } } - /* "ssh2/session.pyx":178 + /* "ssh2/session.pyx":175 * rc = c_ssh2.libssh2_userauth_publickey_fromfile( * self._session, _username, _publickey, _privatekey, _passphrase) * return handle_error_codes(rc) # <<<<<<<<<<<<<< @@ -3296,14 +3262,14 @@ static PyObject *__pyx_pf_4ssh2_7session_7Session_22userauth_publickey_fromfile( * def userauth_publickey(self, username not None, */ __Pyx_XDECREF(__pyx_r); - __pyx_t_6 = __pyx_f_4ssh2_5utils_handle_error_codes(__pyx_v_rc, 0); if (unlikely(__pyx_t_6 == ((int)-1))) __PYX_ERR(0, 178, __pyx_L1_error) - __pyx_t_1 = __Pyx_PyInt_From_int(__pyx_t_6); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 178, __pyx_L1_error) + __pyx_t_6 = __pyx_f_4ssh2_5utils_handle_error_codes(__pyx_v_rc, 0); if (unlikely(__pyx_t_6 == ((int)-1))) __PYX_ERR(0, 175, __pyx_L1_error) + __pyx_t_1 = __Pyx_PyInt_From_int(__pyx_t_6); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 175, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_1); __pyx_r = __pyx_t_1; __pyx_t_1 = 0; goto __pyx_L0; - /* "ssh2/session.pyx":156 + /* "ssh2/session.pyx":153 * return auth.split(',') * * def userauth_publickey_fromfile(self, username not None, # <<<<<<<<<<<<<< @@ -3327,7 +3293,7 @@ static PyObject *__pyx_pf_4ssh2_7session_7Session_22userauth_publickey_fromfile( return __pyx_r; } -/* "ssh2/session.pyx":180 +/* "ssh2/session.pyx":177 * return handle_error_codes(rc) * * def userauth_publickey(self, username not None, # <<<<<<<<<<<<<< @@ -3367,11 +3333,11 @@ static PyObject *__pyx_pw_4ssh2_7session_7Session_25userauth_publickey(PyObject case 1: if (likely((values[1] = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_pubkeydata)) != 0)) kw_args--; else { - __Pyx_RaiseArgtupleInvalid("userauth_publickey", 1, 2, 2, 1); __PYX_ERR(0, 180, __pyx_L3_error) + __Pyx_RaiseArgtupleInvalid("userauth_publickey", 1, 2, 2, 1); __PYX_ERR(0, 177, __pyx_L3_error) } } if (unlikely(kw_args > 0)) { - if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_pyargnames, 0, values, pos_args, "userauth_publickey") < 0)) __PYX_ERR(0, 180, __pyx_L3_error) + if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_pyargnames, 0, values, pos_args, "userauth_publickey") < 0)) __PYX_ERR(0, 177, __pyx_L3_error) } } else if (PyTuple_GET_SIZE(__pyx_args) != 2) { goto __pyx_L5_argtuple_error; @@ -3384,16 +3350,16 @@ static PyObject *__pyx_pw_4ssh2_7session_7Session_25userauth_publickey(PyObject } goto __pyx_L4_argument_unpacking_done; __pyx_L5_argtuple_error:; - __Pyx_RaiseArgtupleInvalid("userauth_publickey", 1, 2, 2, PyTuple_GET_SIZE(__pyx_args)); __PYX_ERR(0, 180, __pyx_L3_error) + __Pyx_RaiseArgtupleInvalid("userauth_publickey", 1, 2, 2, PyTuple_GET_SIZE(__pyx_args)); __PYX_ERR(0, 177, __pyx_L3_error) __pyx_L3_error:; __Pyx_AddTraceback("ssh2.session.Session.userauth_publickey", __pyx_clineno, __pyx_lineno, __pyx_filename); __Pyx_RefNannyFinishContext(); return NULL; __pyx_L4_argument_unpacking_done:; if (unlikely(((PyObject *)__pyx_v_username) == Py_None)) { - PyErr_Format(PyExc_TypeError, "Argument '%.200s' must not be None", "username"); __PYX_ERR(0, 180, __pyx_L1_error) + PyErr_Format(PyExc_TypeError, "Argument '%.200s' must not be None", "username"); __PYX_ERR(0, 177, __pyx_L1_error) } - if (unlikely(!__Pyx_ArgTypeTest(((PyObject *)__pyx_v_pubkeydata), (&PyBytes_Type), 0, "pubkeydata", 1))) __PYX_ERR(0, 181, __pyx_L1_error) + if (unlikely(!__Pyx_ArgTypeTest(((PyObject *)__pyx_v_pubkeydata), (&PyBytes_Type), 0, "pubkeydata", 1))) __PYX_ERR(0, 178, __pyx_L1_error) __pyx_r = __pyx_pf_4ssh2_7session_7Session_24userauth_publickey(((struct __pyx_obj_4ssh2_7session_Session *)__pyx_v_self), __pyx_v_username, __pyx_v_pubkeydata); /* function exit code */ @@ -3420,19 +3386,19 @@ static PyObject *__pyx_pf_4ssh2_7session_7Session_24userauth_publickey(struct __ int __pyx_t_5; __Pyx_RefNannySetupContext("userauth_publickey", 0); - /* "ssh2/session.pyx":191 + /* "ssh2/session.pyx":188 * :rtype: int""" * cdef int rc * cdef bytes b_username = to_bytes(username) # <<<<<<<<<<<<<< * cdef char *_username = b_username * cdef unsigned char *_pubkeydata = pubkeydata */ - __pyx_t_1 = __pyx_f_4ssh2_5utils_to_bytes(__pyx_v_username); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 191, __pyx_L1_error) + __pyx_t_1 = __pyx_f_4ssh2_5utils_to_bytes(__pyx_v_username); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 188, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_1); __pyx_v_b_username = ((PyObject*)__pyx_t_1); __pyx_t_1 = 0; - /* "ssh2/session.pyx":192 + /* "ssh2/session.pyx":189 * cdef int rc * cdef bytes b_username = to_bytes(username) * cdef char *_username = b_username # <<<<<<<<<<<<<< @@ -3441,32 +3407,32 @@ static PyObject *__pyx_pf_4ssh2_7session_7Session_24userauth_publickey(struct __ */ if (unlikely(__pyx_v_b_username == Py_None)) { PyErr_SetString(PyExc_TypeError, "expected bytes, NoneType found"); - __PYX_ERR(0, 192, __pyx_L1_error) + __PYX_ERR(0, 189, __pyx_L1_error) } - __pyx_t_2 = __Pyx_PyBytes_AsWritableString(__pyx_v_b_username); if (unlikely((!__pyx_t_2) && PyErr_Occurred())) __PYX_ERR(0, 192, __pyx_L1_error) + __pyx_t_2 = __Pyx_PyBytes_AsWritableString(__pyx_v_b_username); if (unlikely((!__pyx_t_2) && PyErr_Occurred())) __PYX_ERR(0, 189, __pyx_L1_error) __pyx_v__username = __pyx_t_2; - /* "ssh2/session.pyx":193 + /* "ssh2/session.pyx":190 * cdef bytes b_username = to_bytes(username) * cdef char *_username = b_username * cdef unsigned char *_pubkeydata = pubkeydata # <<<<<<<<<<<<<< * cdef size_t pubkeydata_len = len(pubkeydata) * with nogil: */ - __pyx_t_3 = __Pyx_PyBytes_AsWritableUString(__pyx_v_pubkeydata); if (unlikely((!__pyx_t_3) && PyErr_Occurred())) __PYX_ERR(0, 193, __pyx_L1_error) + __pyx_t_3 = __Pyx_PyBytes_AsWritableUString(__pyx_v_pubkeydata); if (unlikely((!__pyx_t_3) && PyErr_Occurred())) __PYX_ERR(0, 190, __pyx_L1_error) __pyx_v__pubkeydata = __pyx_t_3; - /* "ssh2/session.pyx":194 + /* "ssh2/session.pyx":191 * cdef char *_username = b_username * cdef unsigned char *_pubkeydata = pubkeydata * cdef size_t pubkeydata_len = len(pubkeydata) # <<<<<<<<<<<<<< * with nogil: * rc = c_ssh2.libssh2_userauth_publickey( */ - __pyx_t_4 = PyBytes_GET_SIZE(__pyx_v_pubkeydata); if (unlikely(__pyx_t_4 == ((Py_ssize_t)-1))) __PYX_ERR(0, 194, __pyx_L1_error) + __pyx_t_4 = PyBytes_GET_SIZE(__pyx_v_pubkeydata); if (unlikely(__pyx_t_4 == ((Py_ssize_t)-1))) __PYX_ERR(0, 191, __pyx_L1_error) __pyx_v_pubkeydata_len = __pyx_t_4; - /* "ssh2/session.pyx":195 + /* "ssh2/session.pyx":192 * cdef unsigned char *_pubkeydata = pubkeydata * cdef size_t pubkeydata_len = len(pubkeydata) * with nogil: # <<<<<<<<<<<<<< @@ -3481,7 +3447,7 @@ static PyObject *__pyx_pf_4ssh2_7session_7Session_24userauth_publickey(struct __ #endif /*try:*/ { - /* "ssh2/session.pyx":196 + /* "ssh2/session.pyx":193 * cdef size_t pubkeydata_len = len(pubkeydata) * with nogil: * rc = c_ssh2.libssh2_userauth_publickey( # <<<<<<<<<<<<<< @@ -3491,7 +3457,7 @@ static PyObject *__pyx_pf_4ssh2_7session_7Session_24userauth_publickey(struct __ __pyx_v_rc = libssh2_userauth_publickey(__pyx_v_self->_session, __pyx_v__username, __pyx_v__pubkeydata, __pyx_v_pubkeydata_len, NULL, NULL); } - /* "ssh2/session.pyx":195 + /* "ssh2/session.pyx":192 * cdef unsigned char *_pubkeydata = pubkeydata * cdef size_t pubkeydata_len = len(pubkeydata) * with nogil: # <<<<<<<<<<<<<< @@ -3510,7 +3476,7 @@ static PyObject *__pyx_pf_4ssh2_7session_7Session_24userauth_publickey(struct __ } } - /* "ssh2/session.pyx":199 + /* "ssh2/session.pyx":196 * self._session, _username, _pubkeydata, * pubkeydata_len, NULL, NULL) * return handle_error_codes(rc) # <<<<<<<<<<<<<< @@ -3518,14 +3484,14 @@ static PyObject *__pyx_pf_4ssh2_7session_7Session_24userauth_publickey(struct __ * def userauth_hostbased_fromfile(self, */ __Pyx_XDECREF(__pyx_r); - __pyx_t_5 = __pyx_f_4ssh2_5utils_handle_error_codes(__pyx_v_rc, 0); if (unlikely(__pyx_t_5 == ((int)-1))) __PYX_ERR(0, 199, __pyx_L1_error) - __pyx_t_1 = __Pyx_PyInt_From_int(__pyx_t_5); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 199, __pyx_L1_error) + __pyx_t_5 = __pyx_f_4ssh2_5utils_handle_error_codes(__pyx_v_rc, 0); if (unlikely(__pyx_t_5 == ((int)-1))) __PYX_ERR(0, 196, __pyx_L1_error) + __pyx_t_1 = __Pyx_PyInt_From_int(__pyx_t_5); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 196, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_1); __pyx_r = __pyx_t_1; __pyx_t_1 = 0; goto __pyx_L0; - /* "ssh2/session.pyx":180 + /* "ssh2/session.pyx":177 * return handle_error_codes(rc) * * def userauth_publickey(self, username not None, # <<<<<<<<<<<<<< @@ -3545,7 +3511,7 @@ static PyObject *__pyx_pf_4ssh2_7session_7Session_24userauth_publickey(struct __ return __pyx_r; } -/* "ssh2/session.pyx":201 +/* "ssh2/session.pyx":198 * return handle_error_codes(rc) * * def userauth_hostbased_fromfile(self, # <<<<<<<<<<<<<< @@ -3569,7 +3535,7 @@ static PyObject *__pyx_pw_4ssh2_7session_7Session_27userauth_hostbased_fromfile( static PyObject **__pyx_pyargnames[] = {&__pyx_n_s_username,&__pyx_n_s_privatekey,&__pyx_n_s_hostname,&__pyx_n_s_publickey,&__pyx_n_s_passphrase,0}; PyObject* values[5] = {0,0,0,0,0}; - /* "ssh2/session.pyx":205 + /* "ssh2/session.pyx":202 * privatekey not None, * hostname not None, * publickey=None, # <<<<<<<<<<<<<< @@ -3604,13 +3570,13 @@ static PyObject *__pyx_pw_4ssh2_7session_7Session_27userauth_hostbased_fromfile( case 1: if (likely((values[1] = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_privatekey)) != 0)) kw_args--; else { - __Pyx_RaiseArgtupleInvalid("userauth_hostbased_fromfile", 0, 3, 5, 1); __PYX_ERR(0, 201, __pyx_L3_error) + __Pyx_RaiseArgtupleInvalid("userauth_hostbased_fromfile", 0, 3, 5, 1); __PYX_ERR(0, 198, __pyx_L3_error) } CYTHON_FALLTHROUGH; case 2: if (likely((values[2] = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_hostname)) != 0)) kw_args--; else { - __Pyx_RaiseArgtupleInvalid("userauth_hostbased_fromfile", 0, 3, 5, 2); __PYX_ERR(0, 201, __pyx_L3_error) + __Pyx_RaiseArgtupleInvalid("userauth_hostbased_fromfile", 0, 3, 5, 2); __PYX_ERR(0, 198, __pyx_L3_error) } CYTHON_FALLTHROUGH; case 3: @@ -3626,7 +3592,7 @@ static PyObject *__pyx_pw_4ssh2_7session_7Session_27userauth_hostbased_fromfile( } } if (unlikely(kw_args > 0)) { - if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_pyargnames, 0, values, pos_args, "userauth_hostbased_fromfile") < 0)) __PYX_ERR(0, 201, __pyx_L3_error) + if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_pyargnames, 0, values, pos_args, "userauth_hostbased_fromfile") < 0)) __PYX_ERR(0, 198, __pyx_L3_error) } } else { switch (PyTuple_GET_SIZE(__pyx_args)) { @@ -3649,24 +3615,24 @@ static PyObject *__pyx_pw_4ssh2_7session_7Session_27userauth_hostbased_fromfile( } goto __pyx_L4_argument_unpacking_done; __pyx_L5_argtuple_error:; - __Pyx_RaiseArgtupleInvalid("userauth_hostbased_fromfile", 0, 3, 5, PyTuple_GET_SIZE(__pyx_args)); __PYX_ERR(0, 201, __pyx_L3_error) + __Pyx_RaiseArgtupleInvalid("userauth_hostbased_fromfile", 0, 3, 5, PyTuple_GET_SIZE(__pyx_args)); __PYX_ERR(0, 198, __pyx_L3_error) __pyx_L3_error:; __Pyx_AddTraceback("ssh2.session.Session.userauth_hostbased_fromfile", __pyx_clineno, __pyx_lineno, __pyx_filename); __Pyx_RefNannyFinishContext(); return NULL; __pyx_L4_argument_unpacking_done:; if (unlikely(((PyObject *)__pyx_v_username) == Py_None)) { - PyErr_Format(PyExc_TypeError, "Argument '%.200s' must not be None", "username"); __PYX_ERR(0, 202, __pyx_L1_error) + PyErr_Format(PyExc_TypeError, "Argument '%.200s' must not be None", "username"); __PYX_ERR(0, 199, __pyx_L1_error) } if (unlikely(((PyObject *)__pyx_v_privatekey) == Py_None)) { - PyErr_Format(PyExc_TypeError, "Argument '%.200s' must not be None", "privatekey"); __PYX_ERR(0, 203, __pyx_L1_error) + PyErr_Format(PyExc_TypeError, "Argument '%.200s' must not be None", "privatekey"); __PYX_ERR(0, 200, __pyx_L1_error) } if (unlikely(((PyObject *)__pyx_v_hostname) == Py_None)) { - PyErr_Format(PyExc_TypeError, "Argument '%.200s' must not be None", "hostname"); __PYX_ERR(0, 204, __pyx_L1_error) + PyErr_Format(PyExc_TypeError, "Argument '%.200s' must not be None", "hostname"); __PYX_ERR(0, 201, __pyx_L1_error) } __pyx_r = __pyx_pf_4ssh2_7session_7Session_26userauth_hostbased_fromfile(((struct __pyx_obj_4ssh2_7session_Session *)__pyx_v_self), __pyx_v_username, __pyx_v_privatekey, __pyx_v_hostname, __pyx_v_publickey, __pyx_v_passphrase); - /* "ssh2/session.pyx":201 + /* "ssh2/session.pyx":198 * return handle_error_codes(rc) * * def userauth_hostbased_fromfile(self, # <<<<<<<<<<<<<< @@ -3705,19 +3671,19 @@ static PyObject *__pyx_pf_4ssh2_7session_7Session_26userauth_hostbased_fromfile( int __pyx_t_6; __Pyx_RefNannySetupContext("userauth_hostbased_fromfile", 0); - /* "ssh2/session.pyx":208 + /* "ssh2/session.pyx":205 * passphrase=''): * cdef int rc * cdef bytes b_username = to_bytes(username) # <<<<<<<<<<<<<< * cdef bytes b_publickey = to_bytes(publickey) \ * if publickey is not None else None */ - __pyx_t_1 = __pyx_f_4ssh2_5utils_to_bytes(__pyx_v_username); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 208, __pyx_L1_error) + __pyx_t_1 = __pyx_f_4ssh2_5utils_to_bytes(__pyx_v_username); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 205, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_1); __pyx_v_b_username = ((PyObject*)__pyx_t_1); __pyx_t_1 = 0; - /* "ssh2/session.pyx":210 + /* "ssh2/session.pyx":207 * cdef bytes b_username = to_bytes(username) * cdef bytes b_publickey = to_bytes(publickey) \ * if publickey is not None else None # <<<<<<<<<<<<<< @@ -3727,20 +3693,20 @@ static PyObject *__pyx_pf_4ssh2_7session_7Session_26userauth_hostbased_fromfile( __pyx_t_2 = (__pyx_v_publickey != Py_None); if ((__pyx_t_2 != 0)) { - /* "ssh2/session.pyx":209 + /* "ssh2/session.pyx":206 * cdef int rc * cdef bytes b_username = to_bytes(username) * cdef bytes b_publickey = to_bytes(publickey) \ # <<<<<<<<<<<<<< * if publickey is not None else None * cdef bytes b_privatekey = to_bytes(privatekey) */ - __pyx_t_3 = __pyx_f_4ssh2_5utils_to_bytes(__pyx_v_publickey); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 209, __pyx_L1_error) + __pyx_t_3 = __pyx_f_4ssh2_5utils_to_bytes(__pyx_v_publickey); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 206, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_3); __pyx_t_1 = __pyx_t_3; __pyx_t_3 = 0; } else { - /* "ssh2/session.pyx":210 + /* "ssh2/session.pyx":207 * cdef bytes b_username = to_bytes(username) * cdef bytes b_publickey = to_bytes(publickey) \ * if publickey is not None else None # <<<<<<<<<<<<<< @@ -3753,43 +3719,43 @@ static PyObject *__pyx_pf_4ssh2_7session_7Session_26userauth_hostbased_fromfile( __pyx_v_b_publickey = ((PyObject*)__pyx_t_1); __pyx_t_1 = 0; - /* "ssh2/session.pyx":211 + /* "ssh2/session.pyx":208 * cdef bytes b_publickey = to_bytes(publickey) \ * if publickey is not None else None * cdef bytes b_privatekey = to_bytes(privatekey) # <<<<<<<<<<<<<< * cdef bytes b_passphrase = to_bytes(passphrase) * cdef bytes b_hostname = to_bytes(hostname) */ - __pyx_t_1 = __pyx_f_4ssh2_5utils_to_bytes(__pyx_v_privatekey); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 211, __pyx_L1_error) + __pyx_t_1 = __pyx_f_4ssh2_5utils_to_bytes(__pyx_v_privatekey); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 208, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_1); __pyx_v_b_privatekey = ((PyObject*)__pyx_t_1); __pyx_t_1 = 0; - /* "ssh2/session.pyx":212 + /* "ssh2/session.pyx":209 * if publickey is not None else None * cdef bytes b_privatekey = to_bytes(privatekey) * cdef bytes b_passphrase = to_bytes(passphrase) # <<<<<<<<<<<<<< * cdef bytes b_hostname = to_bytes(hostname) * cdef char *_username = b_username */ - __pyx_t_1 = __pyx_f_4ssh2_5utils_to_bytes(__pyx_v_passphrase); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 212, __pyx_L1_error) + __pyx_t_1 = __pyx_f_4ssh2_5utils_to_bytes(__pyx_v_passphrase); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 209, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_1); __pyx_v_b_passphrase = ((PyObject*)__pyx_t_1); __pyx_t_1 = 0; - /* "ssh2/session.pyx":213 + /* "ssh2/session.pyx":210 * cdef bytes b_privatekey = to_bytes(privatekey) * cdef bytes b_passphrase = to_bytes(passphrase) * cdef bytes b_hostname = to_bytes(hostname) # <<<<<<<<<<<<<< * cdef char *_username = b_username * cdef char *_publickey = NULL */ - __pyx_t_1 = __pyx_f_4ssh2_5utils_to_bytes(__pyx_v_hostname); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 213, __pyx_L1_error) + __pyx_t_1 = __pyx_f_4ssh2_5utils_to_bytes(__pyx_v_hostname); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 210, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_1); __pyx_v_b_hostname = ((PyObject*)__pyx_t_1); __pyx_t_1 = 0; - /* "ssh2/session.pyx":214 + /* "ssh2/session.pyx":211 * cdef bytes b_passphrase = to_bytes(passphrase) * cdef bytes b_hostname = to_bytes(hostname) * cdef char *_username = b_username # <<<<<<<<<<<<<< @@ -3798,12 +3764,12 @@ static PyObject *__pyx_pf_4ssh2_7session_7Session_26userauth_hostbased_fromfile( */ if (unlikely(__pyx_v_b_username == Py_None)) { PyErr_SetString(PyExc_TypeError, "expected bytes, NoneType found"); - __PYX_ERR(0, 214, __pyx_L1_error) + __PYX_ERR(0, 211, __pyx_L1_error) } - __pyx_t_4 = __Pyx_PyBytes_AsWritableString(__pyx_v_b_username); if (unlikely((!__pyx_t_4) && PyErr_Occurred())) __PYX_ERR(0, 214, __pyx_L1_error) + __pyx_t_4 = __Pyx_PyBytes_AsWritableString(__pyx_v_b_username); if (unlikely((!__pyx_t_4) && PyErr_Occurred())) __PYX_ERR(0, 211, __pyx_L1_error) __pyx_v__username = __pyx_t_4; - /* "ssh2/session.pyx":215 + /* "ssh2/session.pyx":212 * cdef bytes b_hostname = to_bytes(hostname) * cdef char *_username = b_username * cdef char *_publickey = NULL # <<<<<<<<<<<<<< @@ -3812,7 +3778,7 @@ static PyObject *__pyx_pf_4ssh2_7session_7Session_26userauth_hostbased_fromfile( */ __pyx_v__publickey = NULL; - /* "ssh2/session.pyx":216 + /* "ssh2/session.pyx":213 * cdef char *_username = b_username * cdef char *_publickey = NULL * cdef char *_privatekey = b_privatekey # <<<<<<<<<<<<<< @@ -3821,12 +3787,12 @@ static PyObject *__pyx_pf_4ssh2_7session_7Session_26userauth_hostbased_fromfile( */ if (unlikely(__pyx_v_b_privatekey == Py_None)) { PyErr_SetString(PyExc_TypeError, "expected bytes, NoneType found"); - __PYX_ERR(0, 216, __pyx_L1_error) + __PYX_ERR(0, 213, __pyx_L1_error) } - __pyx_t_4 = __Pyx_PyBytes_AsWritableString(__pyx_v_b_privatekey); if (unlikely((!__pyx_t_4) && PyErr_Occurred())) __PYX_ERR(0, 216, __pyx_L1_error) + __pyx_t_4 = __Pyx_PyBytes_AsWritableString(__pyx_v_b_privatekey); if (unlikely((!__pyx_t_4) && PyErr_Occurred())) __PYX_ERR(0, 213, __pyx_L1_error) __pyx_v__privatekey = __pyx_t_4; - /* "ssh2/session.pyx":217 + /* "ssh2/session.pyx":214 * cdef char *_publickey = NULL * cdef char *_privatekey = b_privatekey * cdef char *_passphrase = b_passphrase # <<<<<<<<<<<<<< @@ -3835,12 +3801,12 @@ static PyObject *__pyx_pf_4ssh2_7session_7Session_26userauth_hostbased_fromfile( */ if (unlikely(__pyx_v_b_passphrase == Py_None)) { PyErr_SetString(PyExc_TypeError, "expected bytes, NoneType found"); - __PYX_ERR(0, 217, __pyx_L1_error) + __PYX_ERR(0, 214, __pyx_L1_error) } - __pyx_t_4 = __Pyx_PyBytes_AsWritableString(__pyx_v_b_passphrase); if (unlikely((!__pyx_t_4) && PyErr_Occurred())) __PYX_ERR(0, 217, __pyx_L1_error) + __pyx_t_4 = __Pyx_PyBytes_AsWritableString(__pyx_v_b_passphrase); if (unlikely((!__pyx_t_4) && PyErr_Occurred())) __PYX_ERR(0, 214, __pyx_L1_error) __pyx_v__passphrase = __pyx_t_4; - /* "ssh2/session.pyx":218 + /* "ssh2/session.pyx":215 * cdef char *_privatekey = b_privatekey * cdef char *_passphrase = b_passphrase * cdef char *_hostname = b_hostname # <<<<<<<<<<<<<< @@ -3849,12 +3815,12 @@ static PyObject *__pyx_pf_4ssh2_7session_7Session_26userauth_hostbased_fromfile( */ if (unlikely(__pyx_v_b_hostname == Py_None)) { PyErr_SetString(PyExc_TypeError, "expected bytes, NoneType found"); - __PYX_ERR(0, 218, __pyx_L1_error) + __PYX_ERR(0, 215, __pyx_L1_error) } - __pyx_t_4 = __Pyx_PyBytes_AsWritableString(__pyx_v_b_hostname); if (unlikely((!__pyx_t_4) && PyErr_Occurred())) __PYX_ERR(0, 218, __pyx_L1_error) + __pyx_t_4 = __Pyx_PyBytes_AsWritableString(__pyx_v_b_hostname); if (unlikely((!__pyx_t_4) && PyErr_Occurred())) __PYX_ERR(0, 215, __pyx_L1_error) __pyx_v__hostname = __pyx_t_4; - /* "ssh2/session.pyx":219 + /* "ssh2/session.pyx":216 * cdef char *_passphrase = b_passphrase * cdef char *_hostname = b_hostname * if b_publickey is not None: # <<<<<<<<<<<<<< @@ -3865,7 +3831,7 @@ static PyObject *__pyx_pf_4ssh2_7session_7Session_26userauth_hostbased_fromfile( __pyx_t_5 = (__pyx_t_2 != 0); if (__pyx_t_5) { - /* "ssh2/session.pyx":220 + /* "ssh2/session.pyx":217 * cdef char *_hostname = b_hostname * if b_publickey is not None: * _publickey = b_publickey # <<<<<<<<<<<<<< @@ -3874,12 +3840,12 @@ static PyObject *__pyx_pf_4ssh2_7session_7Session_26userauth_hostbased_fromfile( */ if (unlikely(__pyx_v_b_publickey == Py_None)) { PyErr_SetString(PyExc_TypeError, "expected bytes, NoneType found"); - __PYX_ERR(0, 220, __pyx_L1_error) + __PYX_ERR(0, 217, __pyx_L1_error) } - __pyx_t_4 = __Pyx_PyBytes_AsWritableString(__pyx_v_b_publickey); if (unlikely((!__pyx_t_4) && PyErr_Occurred())) __PYX_ERR(0, 220, __pyx_L1_error) + __pyx_t_4 = __Pyx_PyBytes_AsWritableString(__pyx_v_b_publickey); if (unlikely((!__pyx_t_4) && PyErr_Occurred())) __PYX_ERR(0, 217, __pyx_L1_error) __pyx_v__publickey = __pyx_t_4; - /* "ssh2/session.pyx":219 + /* "ssh2/session.pyx":216 * cdef char *_passphrase = b_passphrase * cdef char *_hostname = b_hostname * if b_publickey is not None: # <<<<<<<<<<<<<< @@ -3888,7 +3854,7 @@ static PyObject *__pyx_pf_4ssh2_7session_7Session_26userauth_hostbased_fromfile( */ } - /* "ssh2/session.pyx":221 + /* "ssh2/session.pyx":218 * if b_publickey is not None: * _publickey = b_publickey * with nogil: # <<<<<<<<<<<<<< @@ -3903,7 +3869,7 @@ static PyObject *__pyx_pf_4ssh2_7session_7Session_26userauth_hostbased_fromfile( #endif /*try:*/ { - /* "ssh2/session.pyx":222 + /* "ssh2/session.pyx":219 * _publickey = b_publickey * with nogil: * rc = c_ssh2.libssh2_userauth_hostbased_fromfile( # <<<<<<<<<<<<<< @@ -3913,7 +3879,7 @@ static PyObject *__pyx_pf_4ssh2_7session_7Session_26userauth_hostbased_fromfile( __pyx_v_rc = libssh2_userauth_hostbased_fromfile(__pyx_v_self->_session, __pyx_v__username, __pyx_v__publickey, __pyx_v__privatekey, __pyx_v__passphrase, __pyx_v__hostname); } - /* "ssh2/session.pyx":221 + /* "ssh2/session.pyx":218 * if b_publickey is not None: * _publickey = b_publickey * with nogil: # <<<<<<<<<<<<<< @@ -3932,7 +3898,7 @@ static PyObject *__pyx_pf_4ssh2_7session_7Session_26userauth_hostbased_fromfile( } } - /* "ssh2/session.pyx":225 + /* "ssh2/session.pyx":222 * self._session, _username, _publickey, * _privatekey, _passphrase, _hostname) * return handle_error_codes(rc) # <<<<<<<<<<<<<< @@ -3940,14 +3906,14 @@ static PyObject *__pyx_pf_4ssh2_7session_7Session_26userauth_hostbased_fromfile( * IF EMBEDDED_LIB: */ __Pyx_XDECREF(__pyx_r); - __pyx_t_6 = __pyx_f_4ssh2_5utils_handle_error_codes(__pyx_v_rc, 0); if (unlikely(__pyx_t_6 == ((int)-1))) __PYX_ERR(0, 225, __pyx_L1_error) - __pyx_t_1 = __Pyx_PyInt_From_int(__pyx_t_6); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 225, __pyx_L1_error) + __pyx_t_6 = __pyx_f_4ssh2_5utils_handle_error_codes(__pyx_v_rc, 0); if (unlikely(__pyx_t_6 == ((int)-1))) __PYX_ERR(0, 222, __pyx_L1_error) + __pyx_t_1 = __Pyx_PyInt_From_int(__pyx_t_6); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 222, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_1); __pyx_r = __pyx_t_1; __pyx_t_1 = 0; goto __pyx_L0; - /* "ssh2/session.pyx":201 + /* "ssh2/session.pyx":198 * return handle_error_codes(rc) * * def userauth_hostbased_fromfile(self, # <<<<<<<<<<<<<< @@ -3972,7 +3938,7 @@ static PyObject *__pyx_pf_4ssh2_7session_7Session_26userauth_hostbased_fromfile( return __pyx_r; } -/* "ssh2/session.pyx":228 +/* "ssh2/session.pyx":225 * * IF EMBEDDED_LIB: * def userauth_publickey_frommemory( # <<<<<<<<<<<<<< @@ -3996,7 +3962,7 @@ static PyObject *__pyx_pw_4ssh2_7session_7Session_29userauth_publickey_frommemor PyObject* values[4] = {0,0,0,0}; values[2] = ((PyObject *)__pyx_kp_s__2); - /* "ssh2/session.pyx":230 + /* "ssh2/session.pyx":227 * def userauth_publickey_frommemory( * self, username, bytes privatekeyfiledata, * passphrase='', bytes publickeyfiledata=None): # <<<<<<<<<<<<<< @@ -4028,7 +3994,7 @@ static PyObject *__pyx_pw_4ssh2_7session_7Session_29userauth_publickey_frommemor case 1: if (likely((values[1] = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_privatekeyfiledata)) != 0)) kw_args--; else { - __Pyx_RaiseArgtupleInvalid("userauth_publickey_frommemory", 0, 2, 4, 1); __PYX_ERR(0, 228, __pyx_L3_error) + __Pyx_RaiseArgtupleInvalid("userauth_publickey_frommemory", 0, 2, 4, 1); __PYX_ERR(0, 225, __pyx_L3_error) } CYTHON_FALLTHROUGH; case 2: @@ -4044,7 +4010,7 @@ static PyObject *__pyx_pw_4ssh2_7session_7Session_29userauth_publickey_frommemor } } if (unlikely(kw_args > 0)) { - if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_pyargnames, 0, values, pos_args, "userauth_publickey_frommemory") < 0)) __PYX_ERR(0, 228, __pyx_L3_error) + if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_pyargnames, 0, values, pos_args, "userauth_publickey_frommemory") < 0)) __PYX_ERR(0, 225, __pyx_L3_error) } } else { switch (PyTuple_GET_SIZE(__pyx_args)) { @@ -4065,17 +4031,17 @@ static PyObject *__pyx_pw_4ssh2_7session_7Session_29userauth_publickey_frommemor } goto __pyx_L4_argument_unpacking_done; __pyx_L5_argtuple_error:; - __Pyx_RaiseArgtupleInvalid("userauth_publickey_frommemory", 0, 2, 4, PyTuple_GET_SIZE(__pyx_args)); __PYX_ERR(0, 228, __pyx_L3_error) + __Pyx_RaiseArgtupleInvalid("userauth_publickey_frommemory", 0, 2, 4, PyTuple_GET_SIZE(__pyx_args)); __PYX_ERR(0, 225, __pyx_L3_error) __pyx_L3_error:; __Pyx_AddTraceback("ssh2.session.Session.userauth_publickey_frommemory", __pyx_clineno, __pyx_lineno, __pyx_filename); __Pyx_RefNannyFinishContext(); return NULL; __pyx_L4_argument_unpacking_done:; - if (unlikely(!__Pyx_ArgTypeTest(((PyObject *)__pyx_v_privatekeyfiledata), (&PyBytes_Type), 1, "privatekeyfiledata", 1))) __PYX_ERR(0, 229, __pyx_L1_error) - if (unlikely(!__Pyx_ArgTypeTest(((PyObject *)__pyx_v_publickeyfiledata), (&PyBytes_Type), 1, "publickeyfiledata", 1))) __PYX_ERR(0, 230, __pyx_L1_error) + if (unlikely(!__Pyx_ArgTypeTest(((PyObject *)__pyx_v_privatekeyfiledata), (&PyBytes_Type), 1, "privatekeyfiledata", 1))) __PYX_ERR(0, 226, __pyx_L1_error) + if (unlikely(!__Pyx_ArgTypeTest(((PyObject *)__pyx_v_publickeyfiledata), (&PyBytes_Type), 1, "publickeyfiledata", 1))) __PYX_ERR(0, 227, __pyx_L1_error) __pyx_r = __pyx_pf_4ssh2_7session_7Session_28userauth_publickey_frommemory(((struct __pyx_obj_4ssh2_7session_Session *)__pyx_v_self), __pyx_v_username, __pyx_v_privatekeyfiledata, __pyx_v_passphrase, __pyx_v_publickeyfiledata); - /* "ssh2/session.pyx":228 + /* "ssh2/session.pyx":225 * * IF EMBEDDED_LIB: * def userauth_publickey_frommemory( # <<<<<<<<<<<<<< @@ -4115,31 +4081,31 @@ static PyObject *__pyx_pf_4ssh2_7session_7Session_28userauth_publickey_frommemor int __pyx_t_8; __Pyx_RefNannySetupContext("userauth_publickey_frommemory", 0); - /* "ssh2/session.pyx":232 + /* "ssh2/session.pyx":229 * passphrase='', bytes publickeyfiledata=None): * cdef int rc * cdef bytes b_username = to_bytes(username) # <<<<<<<<<<<<<< * cdef bytes b_passphrase = to_bytes(passphrase) * cdef char *_username = b_username */ - __pyx_t_1 = __pyx_f_4ssh2_5utils_to_bytes(__pyx_v_username); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 232, __pyx_L1_error) + __pyx_t_1 = __pyx_f_4ssh2_5utils_to_bytes(__pyx_v_username); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 229, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_1); __pyx_v_b_username = ((PyObject*)__pyx_t_1); __pyx_t_1 = 0; - /* "ssh2/session.pyx":233 + /* "ssh2/session.pyx":230 * cdef int rc * cdef bytes b_username = to_bytes(username) * cdef bytes b_passphrase = to_bytes(passphrase) # <<<<<<<<<<<<<< * cdef char *_username = b_username * cdef char *_passphrase = b_passphrase */ - __pyx_t_1 = __pyx_f_4ssh2_5utils_to_bytes(__pyx_v_passphrase); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 233, __pyx_L1_error) + __pyx_t_1 = __pyx_f_4ssh2_5utils_to_bytes(__pyx_v_passphrase); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 230, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_1); __pyx_v_b_passphrase = ((PyObject*)__pyx_t_1); __pyx_t_1 = 0; - /* "ssh2/session.pyx":234 + /* "ssh2/session.pyx":231 * cdef bytes b_username = to_bytes(username) * cdef bytes b_passphrase = to_bytes(passphrase) * cdef char *_username = b_username # <<<<<<<<<<<<<< @@ -4148,12 +4114,12 @@ static PyObject *__pyx_pf_4ssh2_7session_7Session_28userauth_publickey_frommemor */ if (unlikely(__pyx_v_b_username == Py_None)) { PyErr_SetString(PyExc_TypeError, "expected bytes, NoneType found"); - __PYX_ERR(0, 234, __pyx_L1_error) + __PYX_ERR(0, 231, __pyx_L1_error) } - __pyx_t_2 = __Pyx_PyBytes_AsWritableString(__pyx_v_b_username); if (unlikely((!__pyx_t_2) && PyErr_Occurred())) __PYX_ERR(0, 234, __pyx_L1_error) + __pyx_t_2 = __Pyx_PyBytes_AsWritableString(__pyx_v_b_username); if (unlikely((!__pyx_t_2) && PyErr_Occurred())) __PYX_ERR(0, 231, __pyx_L1_error) __pyx_v__username = __pyx_t_2; - /* "ssh2/session.pyx":235 + /* "ssh2/session.pyx":232 * cdef bytes b_passphrase = to_bytes(passphrase) * cdef char *_username = b_username * cdef char *_passphrase = b_passphrase # <<<<<<<<<<<<<< @@ -4162,12 +4128,12 @@ static PyObject *__pyx_pf_4ssh2_7session_7Session_28userauth_publickey_frommemor */ if (unlikely(__pyx_v_b_passphrase == Py_None)) { PyErr_SetString(PyExc_TypeError, "expected bytes, NoneType found"); - __PYX_ERR(0, 235, __pyx_L1_error) + __PYX_ERR(0, 232, __pyx_L1_error) } - __pyx_t_2 = __Pyx_PyBytes_AsWritableString(__pyx_v_b_passphrase); if (unlikely((!__pyx_t_2) && PyErr_Occurred())) __PYX_ERR(0, 235, __pyx_L1_error) + __pyx_t_2 = __Pyx_PyBytes_AsWritableString(__pyx_v_b_passphrase); if (unlikely((!__pyx_t_2) && PyErr_Occurred())) __PYX_ERR(0, 232, __pyx_L1_error) __pyx_v__passphrase = __pyx_t_2; - /* "ssh2/session.pyx":236 + /* "ssh2/session.pyx":233 * cdef char *_username = b_username * cdef char *_passphrase = b_passphrase * cdef char *_publickeyfiledata = NULL # <<<<<<<<<<<<<< @@ -4176,7 +4142,7 @@ static PyObject *__pyx_pf_4ssh2_7session_7Session_28userauth_publickey_frommemor */ __pyx_v__publickeyfiledata = NULL; - /* "ssh2/session.pyx":237 + /* "ssh2/session.pyx":234 * cdef char *_passphrase = b_passphrase * cdef char *_publickeyfiledata = NULL * cdef char *_privatekeyfiledata = privatekeyfiledata # <<<<<<<<<<<<<< @@ -4185,12 +4151,12 @@ static PyObject *__pyx_pf_4ssh2_7session_7Session_28userauth_publickey_frommemor */ if (unlikely(__pyx_v_privatekeyfiledata == Py_None)) { PyErr_SetString(PyExc_TypeError, "expected bytes, NoneType found"); - __PYX_ERR(0, 237, __pyx_L1_error) + __PYX_ERR(0, 234, __pyx_L1_error) } - __pyx_t_2 = __Pyx_PyBytes_AsWritableString(__pyx_v_privatekeyfiledata); if (unlikely((!__pyx_t_2) && PyErr_Occurred())) __PYX_ERR(0, 237, __pyx_L1_error) + __pyx_t_2 = __Pyx_PyBytes_AsWritableString(__pyx_v_privatekeyfiledata); if (unlikely((!__pyx_t_2) && PyErr_Occurred())) __PYX_ERR(0, 234, __pyx_L1_error) __pyx_v__privatekeyfiledata = __pyx_t_2; - /* "ssh2/session.pyx":240 + /* "ssh2/session.pyx":237 * cdef size_t username_len, pubkeydata_len, privatekeydata_len * username_len, pubkeydata_len, privatekeydata_len = \ * len(b_username), len(publickeyfiledata), \ # <<<<<<<<<<<<<< @@ -4199,16 +4165,16 @@ static PyObject *__pyx_pf_4ssh2_7session_7Session_28userauth_publickey_frommemor */ if (unlikely(__pyx_v_b_username == Py_None)) { PyErr_SetString(PyExc_TypeError, "object of type 'NoneType' has no len()"); - __PYX_ERR(0, 240, __pyx_L1_error) + __PYX_ERR(0, 237, __pyx_L1_error) } - __pyx_t_3 = PyBytes_GET_SIZE(__pyx_v_b_username); if (unlikely(__pyx_t_3 == ((Py_ssize_t)-1))) __PYX_ERR(0, 240, __pyx_L1_error) + __pyx_t_3 = PyBytes_GET_SIZE(__pyx_v_b_username); if (unlikely(__pyx_t_3 == ((Py_ssize_t)-1))) __PYX_ERR(0, 237, __pyx_L1_error) if (unlikely(__pyx_v_publickeyfiledata == Py_None)) { PyErr_SetString(PyExc_TypeError, "object of type 'NoneType' has no len()"); - __PYX_ERR(0, 240, __pyx_L1_error) + __PYX_ERR(0, 237, __pyx_L1_error) } - __pyx_t_4 = PyBytes_GET_SIZE(__pyx_v_publickeyfiledata); if (unlikely(__pyx_t_4 == ((Py_ssize_t)-1))) __PYX_ERR(0, 240, __pyx_L1_error) + __pyx_t_4 = PyBytes_GET_SIZE(__pyx_v_publickeyfiledata); if (unlikely(__pyx_t_4 == ((Py_ssize_t)-1))) __PYX_ERR(0, 237, __pyx_L1_error) - /* "ssh2/session.pyx":241 + /* "ssh2/session.pyx":238 * username_len, pubkeydata_len, privatekeydata_len = \ * len(b_username), len(publickeyfiledata), \ * len(privatekeyfiledata) # <<<<<<<<<<<<<< @@ -4217,14 +4183,14 @@ static PyObject *__pyx_pf_4ssh2_7session_7Session_28userauth_publickey_frommemor */ if (unlikely(__pyx_v_privatekeyfiledata == Py_None)) { PyErr_SetString(PyExc_TypeError, "object of type 'NoneType' has no len()"); - __PYX_ERR(0, 241, __pyx_L1_error) + __PYX_ERR(0, 238, __pyx_L1_error) } - __pyx_t_5 = PyBytes_GET_SIZE(__pyx_v_privatekeyfiledata); if (unlikely(__pyx_t_5 == ((Py_ssize_t)-1))) __PYX_ERR(0, 241, __pyx_L1_error) + __pyx_t_5 = PyBytes_GET_SIZE(__pyx_v_privatekeyfiledata); if (unlikely(__pyx_t_5 == ((Py_ssize_t)-1))) __PYX_ERR(0, 238, __pyx_L1_error) __pyx_v_username_len = __pyx_t_3; __pyx_v_pubkeydata_len = __pyx_t_4; __pyx_v_privatekeydata_len = __pyx_t_5; - /* "ssh2/session.pyx":242 + /* "ssh2/session.pyx":239 * len(b_username), len(publickeyfiledata), \ * len(privatekeyfiledata) * if publickeyfiledata is not None: # <<<<<<<<<<<<<< @@ -4235,7 +4201,7 @@ static PyObject *__pyx_pf_4ssh2_7session_7Session_28userauth_publickey_frommemor __pyx_t_7 = (__pyx_t_6 != 0); if (__pyx_t_7) { - /* "ssh2/session.pyx":243 + /* "ssh2/session.pyx":240 * len(privatekeyfiledata) * if publickeyfiledata is not None: * _publickeyfiledata = publickeyfiledata # <<<<<<<<<<<<<< @@ -4244,12 +4210,12 @@ static PyObject *__pyx_pf_4ssh2_7session_7Session_28userauth_publickey_frommemor */ if (unlikely(__pyx_v_publickeyfiledata == Py_None)) { PyErr_SetString(PyExc_TypeError, "expected bytes, NoneType found"); - __PYX_ERR(0, 243, __pyx_L1_error) + __PYX_ERR(0, 240, __pyx_L1_error) } - __pyx_t_2 = __Pyx_PyBytes_AsWritableString(__pyx_v_publickeyfiledata); if (unlikely((!__pyx_t_2) && PyErr_Occurred())) __PYX_ERR(0, 243, __pyx_L1_error) + __pyx_t_2 = __Pyx_PyBytes_AsWritableString(__pyx_v_publickeyfiledata); if (unlikely((!__pyx_t_2) && PyErr_Occurred())) __PYX_ERR(0, 240, __pyx_L1_error) __pyx_v__publickeyfiledata = __pyx_t_2; - /* "ssh2/session.pyx":242 + /* "ssh2/session.pyx":239 * len(b_username), len(publickeyfiledata), \ * len(privatekeyfiledata) * if publickeyfiledata is not None: # <<<<<<<<<<<<<< @@ -4258,7 +4224,7 @@ static PyObject *__pyx_pf_4ssh2_7session_7Session_28userauth_publickey_frommemor */ } - /* "ssh2/session.pyx":244 + /* "ssh2/session.pyx":241 * if publickeyfiledata is not None: * _publickeyfiledata = publickeyfiledata * with nogil: # <<<<<<<<<<<<<< @@ -4273,7 +4239,7 @@ static PyObject *__pyx_pf_4ssh2_7session_7Session_28userauth_publickey_frommemor #endif /*try:*/ { - /* "ssh2/session.pyx":245 + /* "ssh2/session.pyx":242 * _publickeyfiledata = publickeyfiledata * with nogil: * rc = c_ssh2.libssh2_userauth_publickey_frommemory( # <<<<<<<<<<<<<< @@ -4283,7 +4249,7 @@ static PyObject *__pyx_pf_4ssh2_7session_7Session_28userauth_publickey_frommemor __pyx_v_rc = libssh2_userauth_publickey_frommemory(__pyx_v_self->_session, __pyx_v__username, __pyx_v_username_len, __pyx_v__publickeyfiledata, __pyx_v_pubkeydata_len, __pyx_v__privatekeyfiledata, __pyx_v_privatekeydata_len, __pyx_v__passphrase); } - /* "ssh2/session.pyx":244 + /* "ssh2/session.pyx":241 * if publickeyfiledata is not None: * _publickeyfiledata = publickeyfiledata * with nogil: # <<<<<<<<<<<<<< @@ -4302,7 +4268,7 @@ static PyObject *__pyx_pf_4ssh2_7session_7Session_28userauth_publickey_frommemor } } - /* "ssh2/session.pyx":249 + /* "ssh2/session.pyx":246 * pubkeydata_len, _privatekeyfiledata, * privatekeydata_len, _passphrase) * return handle_error_codes(rc) # <<<<<<<<<<<<<< @@ -4310,14 +4276,14 @@ static PyObject *__pyx_pf_4ssh2_7session_7Session_28userauth_publickey_frommemor * def userauth_password(self, username not None, password not None): */ __Pyx_XDECREF(__pyx_r); - __pyx_t_8 = __pyx_f_4ssh2_5utils_handle_error_codes(__pyx_v_rc, 0); if (unlikely(__pyx_t_8 == ((int)-1))) __PYX_ERR(0, 249, __pyx_L1_error) - __pyx_t_1 = __Pyx_PyInt_From_int(__pyx_t_8); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 249, __pyx_L1_error) + __pyx_t_8 = __pyx_f_4ssh2_5utils_handle_error_codes(__pyx_v_rc, 0); if (unlikely(__pyx_t_8 == ((int)-1))) __PYX_ERR(0, 246, __pyx_L1_error) + __pyx_t_1 = __Pyx_PyInt_From_int(__pyx_t_8); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 246, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_1); __pyx_r = __pyx_t_1; __pyx_t_1 = 0; goto __pyx_L0; - /* "ssh2/session.pyx":228 + /* "ssh2/session.pyx":225 * * IF EMBEDDED_LIB: * def userauth_publickey_frommemory( # <<<<<<<<<<<<<< @@ -4338,7 +4304,7 @@ static PyObject *__pyx_pf_4ssh2_7session_7Session_28userauth_publickey_frommemor return __pyx_r; } -/* "ssh2/session.pyx":251 +/* "ssh2/session.pyx":248 * return handle_error_codes(rc) * * def userauth_password(self, username not None, password not None): # <<<<<<<<<<<<<< @@ -4378,11 +4344,11 @@ static PyObject *__pyx_pw_4ssh2_7session_7Session_31userauth_password(PyObject * case 1: if (likely((values[1] = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_password)) != 0)) kw_args--; else { - __Pyx_RaiseArgtupleInvalid("userauth_password", 1, 2, 2, 1); __PYX_ERR(0, 251, __pyx_L3_error) + __Pyx_RaiseArgtupleInvalid("userauth_password", 1, 2, 2, 1); __PYX_ERR(0, 248, __pyx_L3_error) } } if (unlikely(kw_args > 0)) { - if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_pyargnames, 0, values, pos_args, "userauth_password") < 0)) __PYX_ERR(0, 251, __pyx_L3_error) + if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_pyargnames, 0, values, pos_args, "userauth_password") < 0)) __PYX_ERR(0, 248, __pyx_L3_error) } } else if (PyTuple_GET_SIZE(__pyx_args) != 2) { goto __pyx_L5_argtuple_error; @@ -4395,17 +4361,17 @@ static PyObject *__pyx_pw_4ssh2_7session_7Session_31userauth_password(PyObject * } goto __pyx_L4_argument_unpacking_done; __pyx_L5_argtuple_error:; - __Pyx_RaiseArgtupleInvalid("userauth_password", 1, 2, 2, PyTuple_GET_SIZE(__pyx_args)); __PYX_ERR(0, 251, __pyx_L3_error) + __Pyx_RaiseArgtupleInvalid("userauth_password", 1, 2, 2, PyTuple_GET_SIZE(__pyx_args)); __PYX_ERR(0, 248, __pyx_L3_error) __pyx_L3_error:; __Pyx_AddTraceback("ssh2.session.Session.userauth_password", __pyx_clineno, __pyx_lineno, __pyx_filename); __Pyx_RefNannyFinishContext(); return NULL; __pyx_L4_argument_unpacking_done:; if (unlikely(((PyObject *)__pyx_v_username) == Py_None)) { - PyErr_Format(PyExc_TypeError, "Argument '%.200s' must not be None", "username"); __PYX_ERR(0, 251, __pyx_L1_error) + PyErr_Format(PyExc_TypeError, "Argument '%.200s' must not be None", "username"); __PYX_ERR(0, 248, __pyx_L1_error) } if (unlikely(((PyObject *)__pyx_v_password) == Py_None)) { - PyErr_Format(PyExc_TypeError, "Argument '%.200s' must not be None", "password"); __PYX_ERR(0, 251, __pyx_L1_error) + PyErr_Format(PyExc_TypeError, "Argument '%.200s' must not be None", "password"); __PYX_ERR(0, 248, __pyx_L1_error) } __pyx_r = __pyx_pf_4ssh2_7session_7Session_30userauth_password(((struct __pyx_obj_4ssh2_7session_Session *)__pyx_v_self), __pyx_v_username, __pyx_v_password); @@ -4432,31 +4398,31 @@ static PyObject *__pyx_pf_4ssh2_7session_7Session_30userauth_password(struct __p int __pyx_t_4; __Pyx_RefNannySetupContext("userauth_password", 0); - /* "ssh2/session.pyx":259 + /* "ssh2/session.pyx":256 * :type password: str""" * cdef int rc * cdef bytes b_username = to_bytes(username) # <<<<<<<<<<<<<< * cdef bytes b_password = to_bytes(password) * cdef const char *_username = b_username */ - __pyx_t_1 = __pyx_f_4ssh2_5utils_to_bytes(__pyx_v_username); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 259, __pyx_L1_error) + __pyx_t_1 = __pyx_f_4ssh2_5utils_to_bytes(__pyx_v_username); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 256, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_1); __pyx_v_b_username = ((PyObject*)__pyx_t_1); __pyx_t_1 = 0; - /* "ssh2/session.pyx":260 + /* "ssh2/session.pyx":257 * cdef int rc * cdef bytes b_username = to_bytes(username) * cdef bytes b_password = to_bytes(password) # <<<<<<<<<<<<<< * cdef const char *_username = b_username * cdef const char *_password = b_password */ - __pyx_t_1 = __pyx_f_4ssh2_5utils_to_bytes(__pyx_v_password); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 260, __pyx_L1_error) + __pyx_t_1 = __pyx_f_4ssh2_5utils_to_bytes(__pyx_v_password); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 257, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_1); __pyx_v_b_password = ((PyObject*)__pyx_t_1); __pyx_t_1 = 0; - /* "ssh2/session.pyx":261 + /* "ssh2/session.pyx":258 * cdef bytes b_username = to_bytes(username) * cdef bytes b_password = to_bytes(password) * cdef const char *_username = b_username # <<<<<<<<<<<<<< @@ -4465,12 +4431,12 @@ static PyObject *__pyx_pf_4ssh2_7session_7Session_30userauth_password(struct __p */ if (unlikely(__pyx_v_b_username == Py_None)) { PyErr_SetString(PyExc_TypeError, "expected bytes, NoneType found"); - __PYX_ERR(0, 261, __pyx_L1_error) + __PYX_ERR(0, 258, __pyx_L1_error) } - __pyx_t_2 = __Pyx_PyBytes_AsString(__pyx_v_b_username); if (unlikely((!__pyx_t_2) && PyErr_Occurred())) __PYX_ERR(0, 261, __pyx_L1_error) + __pyx_t_2 = __Pyx_PyBytes_AsString(__pyx_v_b_username); if (unlikely((!__pyx_t_2) && PyErr_Occurred())) __PYX_ERR(0, 258, __pyx_L1_error) __pyx_v__username = __pyx_t_2; - /* "ssh2/session.pyx":262 + /* "ssh2/session.pyx":259 * cdef bytes b_password = to_bytes(password) * cdef const char *_username = b_username * cdef const char *_password = b_password # <<<<<<<<<<<<<< @@ -4479,12 +4445,12 @@ static PyObject *__pyx_pf_4ssh2_7session_7Session_30userauth_password(struct __p */ if (unlikely(__pyx_v_b_password == Py_None)) { PyErr_SetString(PyExc_TypeError, "expected bytes, NoneType found"); - __PYX_ERR(0, 262, __pyx_L1_error) + __PYX_ERR(0, 259, __pyx_L1_error) } - __pyx_t_3 = __Pyx_PyBytes_AsString(__pyx_v_b_password); if (unlikely((!__pyx_t_3) && PyErr_Occurred())) __PYX_ERR(0, 262, __pyx_L1_error) + __pyx_t_3 = __Pyx_PyBytes_AsString(__pyx_v_b_password); if (unlikely((!__pyx_t_3) && PyErr_Occurred())) __PYX_ERR(0, 259, __pyx_L1_error) __pyx_v__password = __pyx_t_3; - /* "ssh2/session.pyx":263 + /* "ssh2/session.pyx":260 * cdef const char *_username = b_username * cdef const char *_password = b_password * with nogil: # <<<<<<<<<<<<<< @@ -4499,7 +4465,7 @@ static PyObject *__pyx_pf_4ssh2_7session_7Session_30userauth_password(struct __p #endif /*try:*/ { - /* "ssh2/session.pyx":264 + /* "ssh2/session.pyx":261 * cdef const char *_password = b_password * with nogil: * rc = c_ssh2.libssh2_userauth_password( # <<<<<<<<<<<<<< @@ -4509,7 +4475,7 @@ static PyObject *__pyx_pf_4ssh2_7session_7Session_30userauth_password(struct __p __pyx_v_rc = libssh2_userauth_password(__pyx_v_self->_session, __pyx_v__username, __pyx_v__password); } - /* "ssh2/session.pyx":263 + /* "ssh2/session.pyx":260 * cdef const char *_username = b_username * cdef const char *_password = b_password * with nogil: # <<<<<<<<<<<<<< @@ -4528,7 +4494,7 @@ static PyObject *__pyx_pf_4ssh2_7session_7Session_30userauth_password(struct __p } } - /* "ssh2/session.pyx":266 + /* "ssh2/session.pyx":263 * rc = c_ssh2.libssh2_userauth_password( * self._session, _username, _password) * return handle_error_codes(rc) # <<<<<<<<<<<<<< @@ -4536,14 +4502,14 @@ static PyObject *__pyx_pf_4ssh2_7session_7Session_30userauth_password(struct __p * def agent_init(self): */ __Pyx_XDECREF(__pyx_r); - __pyx_t_4 = __pyx_f_4ssh2_5utils_handle_error_codes(__pyx_v_rc, 0); if (unlikely(__pyx_t_4 == ((int)-1))) __PYX_ERR(0, 266, __pyx_L1_error) - __pyx_t_1 = __Pyx_PyInt_From_int(__pyx_t_4); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 266, __pyx_L1_error) + __pyx_t_4 = __pyx_f_4ssh2_5utils_handle_error_codes(__pyx_v_rc, 0); if (unlikely(__pyx_t_4 == ((int)-1))) __PYX_ERR(0, 263, __pyx_L1_error) + __pyx_t_1 = __Pyx_PyInt_From_int(__pyx_t_4); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 263, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_1); __pyx_r = __pyx_t_1; __pyx_t_1 = 0; goto __pyx_L0; - /* "ssh2/session.pyx":251 + /* "ssh2/session.pyx":248 * return handle_error_codes(rc) * * def userauth_password(self, username not None, password not None): # <<<<<<<<<<<<<< @@ -4564,7 +4530,7 @@ static PyObject *__pyx_pf_4ssh2_7session_7Session_30userauth_password(struct __p return __pyx_r; } -/* "ssh2/session.pyx":268 +/* "ssh2/session.pyx":265 * return handle_error_codes(rc) * * def agent_init(self): # <<<<<<<<<<<<<< @@ -4594,7 +4560,7 @@ static PyObject *__pyx_pf_4ssh2_7session_7Session_32agent_init(struct __pyx_obj_ PyObject *__pyx_t_2 = NULL; __Pyx_RefNannySetupContext("agent_init", 0); - /* "ssh2/session.pyx":274 + /* "ssh2/session.pyx":271 * """ * cdef c_ssh2.LIBSSH2_AGENT *agent * with nogil: # <<<<<<<<<<<<<< @@ -4609,18 +4575,18 @@ static PyObject *__pyx_pf_4ssh2_7session_7Session_32agent_init(struct __pyx_obj_ #endif /*try:*/ { - /* "ssh2/session.pyx":275 + /* "ssh2/session.pyx":272 * cdef c_ssh2.LIBSSH2_AGENT *agent * with nogil: * agent = agent_init(self._session) # <<<<<<<<<<<<<< * return PyAgent(agent, self) * */ - __pyx_t_1 = __pyx_f_4ssh2_5agent_agent_init(__pyx_v_self->_session); if (unlikely(__pyx_t_1 == ((LIBSSH2_AGENT *)NULL))) __PYX_ERR(0, 275, __pyx_L4_error) + __pyx_t_1 = __pyx_f_4ssh2_5agent_agent_init(__pyx_v_self->_session); if (unlikely(__pyx_t_1 == ((LIBSSH2_AGENT *)NULL))) __PYX_ERR(0, 272, __pyx_L4_error) __pyx_v_agent = __pyx_t_1; } - /* "ssh2/session.pyx":274 + /* "ssh2/session.pyx":271 * """ * cdef c_ssh2.LIBSSH2_AGENT *agent * with nogil: # <<<<<<<<<<<<<< @@ -4646,7 +4612,7 @@ static PyObject *__pyx_pf_4ssh2_7session_7Session_32agent_init(struct __pyx_obj_ } } - /* "ssh2/session.pyx":276 + /* "ssh2/session.pyx":273 * with nogil: * agent = agent_init(self._session) * return PyAgent(agent, self) # <<<<<<<<<<<<<< @@ -4654,13 +4620,13 @@ static PyObject *__pyx_pf_4ssh2_7session_7Session_32agent_init(struct __pyx_obj_ * def agent_auth(self, username not None): */ __Pyx_XDECREF(__pyx_r); - __pyx_t_2 = __pyx_f_4ssh2_5agent_PyAgent(__pyx_v_agent, __pyx_v_self); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 276, __pyx_L1_error) + __pyx_t_2 = __pyx_f_4ssh2_5agent_PyAgent(__pyx_v_agent, __pyx_v_self); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 273, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_2); __pyx_r = __pyx_t_2; __pyx_t_2 = 0; goto __pyx_L0; - /* "ssh2/session.pyx":268 + /* "ssh2/session.pyx":265 * return handle_error_codes(rc) * * def agent_init(self): # <<<<<<<<<<<<<< @@ -4679,7 +4645,7 @@ static PyObject *__pyx_pf_4ssh2_7session_7Session_32agent_init(struct __pyx_obj_ return __pyx_r; } -/* "ssh2/session.pyx":278 +/* "ssh2/session.pyx":275 * return PyAgent(agent, self) * * def agent_auth(self, username not None): # <<<<<<<<<<<<<< @@ -4695,7 +4661,7 @@ static PyObject *__pyx_pw_4ssh2_7session_7Session_35agent_auth(PyObject *__pyx_v __Pyx_RefNannyDeclarations __Pyx_RefNannySetupContext("agent_auth (wrapper)", 0); if (unlikely(((PyObject *)__pyx_v_username) == Py_None)) { - PyErr_Format(PyExc_TypeError, "Argument '%.200s' must not be None", "username"); __PYX_ERR(0, 278, __pyx_L1_error) + PyErr_Format(PyExc_TypeError, "Argument '%.200s' must not be None", "username"); __PYX_ERR(0, 275, __pyx_L1_error) } __pyx_r = __pyx_pf_4ssh2_7session_7Session_34agent_auth(((struct __pyx_obj_4ssh2_7session_Session *)__pyx_v_self), ((PyObject *)__pyx_v_username)); @@ -4722,19 +4688,19 @@ static PyObject *__pyx_pf_4ssh2_7session_7Session_34agent_auth(struct __pyx_obj_ int __pyx_t_4; __Pyx_RefNannySetupContext("agent_auth", 0); - /* "ssh2/session.pyx":304 + /* "ssh2/session.pyx":301 * * :rtype: None""" * cdef bytes b_username = to_bytes(username) # <<<<<<<<<<<<<< * cdef char *_username = b_username * cdef c_ssh2.LIBSSH2_AGENT *agent = NULL */ - __pyx_t_1 = __pyx_f_4ssh2_5utils_to_bytes(__pyx_v_username); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 304, __pyx_L1_error) + __pyx_t_1 = __pyx_f_4ssh2_5utils_to_bytes(__pyx_v_username); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 301, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_1); __pyx_v_b_username = ((PyObject*)__pyx_t_1); __pyx_t_1 = 0; - /* "ssh2/session.pyx":305 + /* "ssh2/session.pyx":302 * :rtype: None""" * cdef bytes b_username = to_bytes(username) * cdef char *_username = b_username # <<<<<<<<<<<<<< @@ -4743,12 +4709,12 @@ static PyObject *__pyx_pf_4ssh2_7session_7Session_34agent_auth(struct __pyx_obj_ */ if (unlikely(__pyx_v_b_username == Py_None)) { PyErr_SetString(PyExc_TypeError, "expected bytes, NoneType found"); - __PYX_ERR(0, 305, __pyx_L1_error) + __PYX_ERR(0, 302, __pyx_L1_error) } - __pyx_t_2 = __Pyx_PyBytes_AsWritableString(__pyx_v_b_username); if (unlikely((!__pyx_t_2) && PyErr_Occurred())) __PYX_ERR(0, 305, __pyx_L1_error) + __pyx_t_2 = __Pyx_PyBytes_AsWritableString(__pyx_v_b_username); if (unlikely((!__pyx_t_2) && PyErr_Occurred())) __PYX_ERR(0, 302, __pyx_L1_error) __pyx_v__username = __pyx_t_2; - /* "ssh2/session.pyx":306 + /* "ssh2/session.pyx":303 * cdef bytes b_username = to_bytes(username) * cdef char *_username = b_username * cdef c_ssh2.LIBSSH2_AGENT *agent = NULL # <<<<<<<<<<<<<< @@ -4757,7 +4723,7 @@ static PyObject *__pyx_pf_4ssh2_7session_7Session_34agent_auth(struct __pyx_obj_ */ __pyx_v_agent = NULL; - /* "ssh2/session.pyx":307 + /* "ssh2/session.pyx":304 * cdef char *_username = b_username * cdef c_ssh2.LIBSSH2_AGENT *agent = NULL * cdef c_ssh2.libssh2_agent_publickey *identity = NULL # <<<<<<<<<<<<<< @@ -4766,7 +4732,7 @@ static PyObject *__pyx_pf_4ssh2_7session_7Session_34agent_auth(struct __pyx_obj_ */ __pyx_v_identity = NULL; - /* "ssh2/session.pyx":308 + /* "ssh2/session.pyx":305 * cdef c_ssh2.LIBSSH2_AGENT *agent = NULL * cdef c_ssh2.libssh2_agent_publickey *identity = NULL * cdef c_ssh2.libssh2_agent_publickey *prev = NULL # <<<<<<<<<<<<<< @@ -4775,17 +4741,17 @@ static PyObject *__pyx_pf_4ssh2_7session_7Session_34agent_auth(struct __pyx_obj_ */ __pyx_v_prev = NULL; - /* "ssh2/session.pyx":309 + /* "ssh2/session.pyx":306 * cdef c_ssh2.libssh2_agent_publickey *identity = NULL * cdef c_ssh2.libssh2_agent_publickey *prev = NULL * agent = init_connect_agent(self._session) # <<<<<<<<<<<<<< * with nogil: * agent_auth(_username, agent) */ - __pyx_t_3 = __pyx_f_4ssh2_5agent_init_connect_agent(__pyx_v_self->_session); if (unlikely(__pyx_t_3 == ((LIBSSH2_AGENT *)NULL))) __PYX_ERR(0, 309, __pyx_L1_error) + __pyx_t_3 = __pyx_f_4ssh2_5agent_init_connect_agent(__pyx_v_self->_session); if (unlikely(__pyx_t_3 == ((LIBSSH2_AGENT *)NULL))) __PYX_ERR(0, 306, __pyx_L1_error) __pyx_v_agent = __pyx_t_3; - /* "ssh2/session.pyx":310 + /* "ssh2/session.pyx":307 * cdef c_ssh2.libssh2_agent_publickey *prev = NULL * agent = init_connect_agent(self._session) * with nogil: # <<<<<<<<<<<<<< @@ -4800,17 +4766,17 @@ static PyObject *__pyx_pf_4ssh2_7session_7Session_34agent_auth(struct __pyx_obj_ #endif /*try:*/ { - /* "ssh2/session.pyx":311 + /* "ssh2/session.pyx":308 * agent = init_connect_agent(self._session) * with nogil: * agent_auth(_username, agent) # <<<<<<<<<<<<<< * * def open_session(self): */ - __pyx_t_4 = __pyx_f_4ssh2_5agent_agent_auth(__pyx_v__username, __pyx_v_agent); if (unlikely(__pyx_t_4 == ((int)1))) __PYX_ERR(0, 311, __pyx_L4_error) + __pyx_t_4 = __pyx_f_4ssh2_5agent_agent_auth(__pyx_v__username, __pyx_v_agent); if (unlikely(__pyx_t_4 == ((int)1))) __PYX_ERR(0, 308, __pyx_L4_error) } - /* "ssh2/session.pyx":310 + /* "ssh2/session.pyx":307 * cdef c_ssh2.libssh2_agent_publickey *prev = NULL * agent = init_connect_agent(self._session) * with nogil: # <<<<<<<<<<<<<< @@ -4836,7 +4802,7 @@ static PyObject *__pyx_pf_4ssh2_7session_7Session_34agent_auth(struct __pyx_obj_ } } - /* "ssh2/session.pyx":278 + /* "ssh2/session.pyx":275 * return PyAgent(agent, self) * * def agent_auth(self, username not None): # <<<<<<<<<<<<<< @@ -4858,7 +4824,7 @@ static PyObject *__pyx_pf_4ssh2_7session_7Session_34agent_auth(struct __pyx_obj_ return __pyx_r; } -/* "ssh2/session.pyx":313 +/* "ssh2/session.pyx":310 * agent_auth(_username, agent) * * def open_session(self): # <<<<<<<<<<<<<< @@ -4889,7 +4855,7 @@ static PyObject *__pyx_pf_4ssh2_7session_7Session_36open_session(struct __pyx_ob PyObject *__pyx_t_3 = NULL; __Pyx_RefNannySetupContext("open_session", 0); - /* "ssh2/session.pyx":319 + /* "ssh2/session.pyx":316 * """ * cdef c_ssh2.LIBSSH2_CHANNEL *channel * with nogil: # <<<<<<<<<<<<<< @@ -4904,7 +4870,7 @@ static PyObject *__pyx_pf_4ssh2_7session_7Session_36open_session(struct __pyx_ob #endif /*try:*/ { - /* "ssh2/session.pyx":320 + /* "ssh2/session.pyx":317 * cdef c_ssh2.LIBSSH2_CHANNEL *channel * with nogil: * channel = c_ssh2.libssh2_channel_open_session( # <<<<<<<<<<<<<< @@ -4914,7 +4880,7 @@ static PyObject *__pyx_pf_4ssh2_7session_7Session_36open_session(struct __pyx_ob __pyx_v_channel = libssh2_channel_open_session(__pyx_v_self->_session); } - /* "ssh2/session.pyx":319 + /* "ssh2/session.pyx":316 * """ * cdef c_ssh2.LIBSSH2_CHANNEL *channel * with nogil: # <<<<<<<<<<<<<< @@ -4933,7 +4899,7 @@ static PyObject *__pyx_pf_4ssh2_7session_7Session_36open_session(struct __pyx_ob } } - /* "ssh2/session.pyx":322 + /* "ssh2/session.pyx":319 * channel = c_ssh2.libssh2_channel_open_session( * self._session) * if channel is NULL: # <<<<<<<<<<<<<< @@ -4943,7 +4909,7 @@ static PyObject *__pyx_pf_4ssh2_7session_7Session_36open_session(struct __pyx_ob __pyx_t_1 = ((__pyx_v_channel == NULL) != 0); if (__pyx_t_1) { - /* "ssh2/session.pyx":323 + /* "ssh2/session.pyx":320 * self._session) * if channel is NULL: * return handle_error_codes(c_ssh2.libssh2_session_last_errno( # <<<<<<<<<<<<<< @@ -4952,29 +4918,29 @@ static PyObject *__pyx_pf_4ssh2_7session_7Session_36open_session(struct __pyx_ob */ __Pyx_XDECREF(__pyx_r); - /* "ssh2/session.pyx":324 + /* "ssh2/session.pyx":321 * if channel is NULL: * return handle_error_codes(c_ssh2.libssh2_session_last_errno( * self._session)) # <<<<<<<<<<<<<< * return PyChannel(channel, self) * */ - __pyx_t_2 = __pyx_f_4ssh2_5utils_handle_error_codes(libssh2_session_last_errno(__pyx_v_self->_session), 0); if (unlikely(__pyx_t_2 == ((int)-1))) __PYX_ERR(0, 323, __pyx_L1_error) + __pyx_t_2 = __pyx_f_4ssh2_5utils_handle_error_codes(libssh2_session_last_errno(__pyx_v_self->_session), 0); if (unlikely(__pyx_t_2 == ((int)-1))) __PYX_ERR(0, 320, __pyx_L1_error) - /* "ssh2/session.pyx":323 + /* "ssh2/session.pyx":320 * self._session) * if channel is NULL: * return handle_error_codes(c_ssh2.libssh2_session_last_errno( # <<<<<<<<<<<<<< * self._session)) * return PyChannel(channel, self) */ - __pyx_t_3 = __Pyx_PyInt_From_int(__pyx_t_2); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 323, __pyx_L1_error) + __pyx_t_3 = __Pyx_PyInt_From_int(__pyx_t_2); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 320, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_3); __pyx_r = __pyx_t_3; __pyx_t_3 = 0; goto __pyx_L0; - /* "ssh2/session.pyx":322 + /* "ssh2/session.pyx":319 * channel = c_ssh2.libssh2_channel_open_session( * self._session) * if channel is NULL: # <<<<<<<<<<<<<< @@ -4983,7 +4949,7 @@ static PyObject *__pyx_pf_4ssh2_7session_7Session_36open_session(struct __pyx_ob */ } - /* "ssh2/session.pyx":325 + /* "ssh2/session.pyx":322 * return handle_error_codes(c_ssh2.libssh2_session_last_errno( * self._session)) * return PyChannel(channel, self) # <<<<<<<<<<<<<< @@ -4991,13 +4957,13 @@ static PyObject *__pyx_pf_4ssh2_7session_7Session_36open_session(struct __pyx_ob * def direct_tcpip_ex(self, host not None, int port, */ __Pyx_XDECREF(__pyx_r); - __pyx_t_3 = __pyx_f_4ssh2_7channel_PyChannel(__pyx_v_channel, __pyx_v_self); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 325, __pyx_L1_error) + __pyx_t_3 = __pyx_f_4ssh2_7channel_PyChannel(__pyx_v_channel, __pyx_v_self); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 322, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_3); __pyx_r = __pyx_t_3; __pyx_t_3 = 0; goto __pyx_L0; - /* "ssh2/session.pyx":313 + /* "ssh2/session.pyx":310 * agent_auth(_username, agent) * * def open_session(self): # <<<<<<<<<<<<<< @@ -5016,7 +4982,7 @@ static PyObject *__pyx_pf_4ssh2_7session_7Session_36open_session(struct __pyx_ob return __pyx_r; } -/* "ssh2/session.pyx":327 +/* "ssh2/session.pyx":324 * return PyChannel(channel, self) * * def direct_tcpip_ex(self, host not None, int port, # <<<<<<<<<<<<<< @@ -5062,23 +5028,23 @@ static PyObject *__pyx_pw_4ssh2_7session_7Session_39direct_tcpip_ex(PyObject *__ case 1: if (likely((values[1] = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_port)) != 0)) kw_args--; else { - __Pyx_RaiseArgtupleInvalid("direct_tcpip_ex", 1, 4, 4, 1); __PYX_ERR(0, 327, __pyx_L3_error) + __Pyx_RaiseArgtupleInvalid("direct_tcpip_ex", 1, 4, 4, 1); __PYX_ERR(0, 324, __pyx_L3_error) } CYTHON_FALLTHROUGH; case 2: if (likely((values[2] = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_shost)) != 0)) kw_args--; else { - __Pyx_RaiseArgtupleInvalid("direct_tcpip_ex", 1, 4, 4, 2); __PYX_ERR(0, 327, __pyx_L3_error) + __Pyx_RaiseArgtupleInvalid("direct_tcpip_ex", 1, 4, 4, 2); __PYX_ERR(0, 324, __pyx_L3_error) } CYTHON_FALLTHROUGH; case 3: if (likely((values[3] = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_sport)) != 0)) kw_args--; else { - __Pyx_RaiseArgtupleInvalid("direct_tcpip_ex", 1, 4, 4, 3); __PYX_ERR(0, 327, __pyx_L3_error) + __Pyx_RaiseArgtupleInvalid("direct_tcpip_ex", 1, 4, 4, 3); __PYX_ERR(0, 324, __pyx_L3_error) } } if (unlikely(kw_args > 0)) { - if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_pyargnames, 0, values, pos_args, "direct_tcpip_ex") < 0)) __PYX_ERR(0, 327, __pyx_L3_error) + if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_pyargnames, 0, values, pos_args, "direct_tcpip_ex") < 0)) __PYX_ERR(0, 324, __pyx_L3_error) } } else if (PyTuple_GET_SIZE(__pyx_args) != 4) { goto __pyx_L5_argtuple_error; @@ -5089,23 +5055,23 @@ static PyObject *__pyx_pw_4ssh2_7session_7Session_39direct_tcpip_ex(PyObject *__ values[3] = PyTuple_GET_ITEM(__pyx_args, 3); } __pyx_v_host = values[0]; - __pyx_v_port = __Pyx_PyInt_As_int(values[1]); if (unlikely((__pyx_v_port == (int)-1) && PyErr_Occurred())) __PYX_ERR(0, 327, __pyx_L3_error) + __pyx_v_port = __Pyx_PyInt_As_int(values[1]); if (unlikely((__pyx_v_port == (int)-1) && PyErr_Occurred())) __PYX_ERR(0, 324, __pyx_L3_error) __pyx_v_shost = values[2]; - __pyx_v_sport = __Pyx_PyInt_As_int(values[3]); if (unlikely((__pyx_v_sport == (int)-1) && PyErr_Occurred())) __PYX_ERR(0, 328, __pyx_L3_error) + __pyx_v_sport = __Pyx_PyInt_As_int(values[3]); if (unlikely((__pyx_v_sport == (int)-1) && PyErr_Occurred())) __PYX_ERR(0, 325, __pyx_L3_error) } goto __pyx_L4_argument_unpacking_done; __pyx_L5_argtuple_error:; - __Pyx_RaiseArgtupleInvalid("direct_tcpip_ex", 1, 4, 4, PyTuple_GET_SIZE(__pyx_args)); __PYX_ERR(0, 327, __pyx_L3_error) + __Pyx_RaiseArgtupleInvalid("direct_tcpip_ex", 1, 4, 4, PyTuple_GET_SIZE(__pyx_args)); __PYX_ERR(0, 324, __pyx_L3_error) __pyx_L3_error:; __Pyx_AddTraceback("ssh2.session.Session.direct_tcpip_ex", __pyx_clineno, __pyx_lineno, __pyx_filename); __Pyx_RefNannyFinishContext(); return NULL; __pyx_L4_argument_unpacking_done:; if (unlikely(((PyObject *)__pyx_v_host) == Py_None)) { - PyErr_Format(PyExc_TypeError, "Argument '%.200s' must not be None", "host"); __PYX_ERR(0, 327, __pyx_L1_error) + PyErr_Format(PyExc_TypeError, "Argument '%.200s' must not be None", "host"); __PYX_ERR(0, 324, __pyx_L1_error) } if (unlikely(((PyObject *)__pyx_v_shost) == Py_None)) { - PyErr_Format(PyExc_TypeError, "Argument '%.200s' must not be None", "shost"); __PYX_ERR(0, 328, __pyx_L1_error) + PyErr_Format(PyExc_TypeError, "Argument '%.200s' must not be None", "shost"); __PYX_ERR(0, 325, __pyx_L1_error) } __pyx_r = __pyx_pf_4ssh2_7session_7Session_38direct_tcpip_ex(((struct __pyx_obj_4ssh2_7session_Session *)__pyx_v_self), __pyx_v_host, __pyx_v_port, __pyx_v_shost, __pyx_v_sport); @@ -5132,31 +5098,31 @@ static PyObject *__pyx_pf_4ssh2_7session_7Session_38direct_tcpip_ex(struct __pyx int __pyx_t_4; __Pyx_RefNannySetupContext("direct_tcpip_ex", 0); - /* "ssh2/session.pyx":330 + /* "ssh2/session.pyx":327 * shost not None, int sport): * cdef c_ssh2.LIBSSH2_CHANNEL *channel * cdef bytes b_host = to_bytes(host) # <<<<<<<<<<<<<< * cdef bytes b_shost = to_bytes(shost) * cdef char *_host = b_host */ - __pyx_t_1 = __pyx_f_4ssh2_5utils_to_bytes(__pyx_v_host); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 330, __pyx_L1_error) + __pyx_t_1 = __pyx_f_4ssh2_5utils_to_bytes(__pyx_v_host); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 327, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_1); __pyx_v_b_host = ((PyObject*)__pyx_t_1); __pyx_t_1 = 0; - /* "ssh2/session.pyx":331 + /* "ssh2/session.pyx":328 * cdef c_ssh2.LIBSSH2_CHANNEL *channel * cdef bytes b_host = to_bytes(host) * cdef bytes b_shost = to_bytes(shost) # <<<<<<<<<<<<<< * cdef char *_host = b_host * cdef char *_shost = b_shost */ - __pyx_t_1 = __pyx_f_4ssh2_5utils_to_bytes(__pyx_v_shost); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 331, __pyx_L1_error) + __pyx_t_1 = __pyx_f_4ssh2_5utils_to_bytes(__pyx_v_shost); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 328, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_1); __pyx_v_b_shost = ((PyObject*)__pyx_t_1); __pyx_t_1 = 0; - /* "ssh2/session.pyx":332 + /* "ssh2/session.pyx":329 * cdef bytes b_host = to_bytes(host) * cdef bytes b_shost = to_bytes(shost) * cdef char *_host = b_host # <<<<<<<<<<<<<< @@ -5165,12 +5131,12 @@ static PyObject *__pyx_pf_4ssh2_7session_7Session_38direct_tcpip_ex(struct __pyx */ if (unlikely(__pyx_v_b_host == Py_None)) { PyErr_SetString(PyExc_TypeError, "expected bytes, NoneType found"); - __PYX_ERR(0, 332, __pyx_L1_error) + __PYX_ERR(0, 329, __pyx_L1_error) } - __pyx_t_2 = __Pyx_PyBytes_AsWritableString(__pyx_v_b_host); if (unlikely((!__pyx_t_2) && PyErr_Occurred())) __PYX_ERR(0, 332, __pyx_L1_error) + __pyx_t_2 = __Pyx_PyBytes_AsWritableString(__pyx_v_b_host); if (unlikely((!__pyx_t_2) && PyErr_Occurred())) __PYX_ERR(0, 329, __pyx_L1_error) __pyx_v__host = __pyx_t_2; - /* "ssh2/session.pyx":333 + /* "ssh2/session.pyx":330 * cdef bytes b_shost = to_bytes(shost) * cdef char *_host = b_host * cdef char *_shost = b_shost # <<<<<<<<<<<<<< @@ -5179,12 +5145,12 @@ static PyObject *__pyx_pf_4ssh2_7session_7Session_38direct_tcpip_ex(struct __pyx */ if (unlikely(__pyx_v_b_shost == Py_None)) { PyErr_SetString(PyExc_TypeError, "expected bytes, NoneType found"); - __PYX_ERR(0, 333, __pyx_L1_error) + __PYX_ERR(0, 330, __pyx_L1_error) } - __pyx_t_2 = __Pyx_PyBytes_AsWritableString(__pyx_v_b_shost); if (unlikely((!__pyx_t_2) && PyErr_Occurred())) __PYX_ERR(0, 333, __pyx_L1_error) + __pyx_t_2 = __Pyx_PyBytes_AsWritableString(__pyx_v_b_shost); if (unlikely((!__pyx_t_2) && PyErr_Occurred())) __PYX_ERR(0, 330, __pyx_L1_error) __pyx_v__shost = __pyx_t_2; - /* "ssh2/session.pyx":334 + /* "ssh2/session.pyx":331 * cdef char *_host = b_host * cdef char *_shost = b_shost * with nogil: # <<<<<<<<<<<<<< @@ -5199,7 +5165,7 @@ static PyObject *__pyx_pf_4ssh2_7session_7Session_38direct_tcpip_ex(struct __pyx #endif /*try:*/ { - /* "ssh2/session.pyx":335 + /* "ssh2/session.pyx":332 * cdef char *_shost = b_shost * with nogil: * channel = c_ssh2.libssh2_channel_direct_tcpip_ex( # <<<<<<<<<<<<<< @@ -5209,7 +5175,7 @@ static PyObject *__pyx_pf_4ssh2_7session_7Session_38direct_tcpip_ex(struct __pyx __pyx_v_channel = libssh2_channel_direct_tcpip_ex(__pyx_v_self->_session, __pyx_v__host, __pyx_v_port, __pyx_v__shost, __pyx_v_sport); } - /* "ssh2/session.pyx":334 + /* "ssh2/session.pyx":331 * cdef char *_host = b_host * cdef char *_shost = b_shost * with nogil: # <<<<<<<<<<<<<< @@ -5228,7 +5194,7 @@ static PyObject *__pyx_pf_4ssh2_7session_7Session_38direct_tcpip_ex(struct __pyx } } - /* "ssh2/session.pyx":337 + /* "ssh2/session.pyx":334 * channel = c_ssh2.libssh2_channel_direct_tcpip_ex( * self._session, _host, port, _shost, sport) * if channel is NULL: # <<<<<<<<<<<<<< @@ -5238,7 +5204,7 @@ static PyObject *__pyx_pf_4ssh2_7session_7Session_38direct_tcpip_ex(struct __pyx __pyx_t_3 = ((__pyx_v_channel == NULL) != 0); if (__pyx_t_3) { - /* "ssh2/session.pyx":338 + /* "ssh2/session.pyx":335 * self._session, _host, port, _shost, sport) * if channel is NULL: * return handle_error_codes(c_ssh2.libssh2_session_last_errno( # <<<<<<<<<<<<<< @@ -5247,29 +5213,29 @@ static PyObject *__pyx_pf_4ssh2_7session_7Session_38direct_tcpip_ex(struct __pyx */ __Pyx_XDECREF(__pyx_r); - /* "ssh2/session.pyx":339 + /* "ssh2/session.pyx":336 * if channel is NULL: * return handle_error_codes(c_ssh2.libssh2_session_last_errno( * self._session)) # <<<<<<<<<<<<<< * return PyChannel(channel, self) * */ - __pyx_t_4 = __pyx_f_4ssh2_5utils_handle_error_codes(libssh2_session_last_errno(__pyx_v_self->_session), 0); if (unlikely(__pyx_t_4 == ((int)-1))) __PYX_ERR(0, 338, __pyx_L1_error) + __pyx_t_4 = __pyx_f_4ssh2_5utils_handle_error_codes(libssh2_session_last_errno(__pyx_v_self->_session), 0); if (unlikely(__pyx_t_4 == ((int)-1))) __PYX_ERR(0, 335, __pyx_L1_error) - /* "ssh2/session.pyx":338 + /* "ssh2/session.pyx":335 * self._session, _host, port, _shost, sport) * if channel is NULL: * return handle_error_codes(c_ssh2.libssh2_session_last_errno( # <<<<<<<<<<<<<< * self._session)) * return PyChannel(channel, self) */ - __pyx_t_1 = __Pyx_PyInt_From_int(__pyx_t_4); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 338, __pyx_L1_error) + __pyx_t_1 = __Pyx_PyInt_From_int(__pyx_t_4); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 335, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_1); __pyx_r = __pyx_t_1; __pyx_t_1 = 0; goto __pyx_L0; - /* "ssh2/session.pyx":337 + /* "ssh2/session.pyx":334 * channel = c_ssh2.libssh2_channel_direct_tcpip_ex( * self._session, _host, port, _shost, sport) * if channel is NULL: # <<<<<<<<<<<<<< @@ -5278,7 +5244,7 @@ static PyObject *__pyx_pf_4ssh2_7session_7Session_38direct_tcpip_ex(struct __pyx */ } - /* "ssh2/session.pyx":340 + /* "ssh2/session.pyx":337 * return handle_error_codes(c_ssh2.libssh2_session_last_errno( * self._session)) * return PyChannel(channel, self) # <<<<<<<<<<<<<< @@ -5286,13 +5252,13 @@ static PyObject *__pyx_pf_4ssh2_7session_7Session_38direct_tcpip_ex(struct __pyx * def direct_tcpip(self, host not None, int port): */ __Pyx_XDECREF(__pyx_r); - __pyx_t_1 = __pyx_f_4ssh2_7channel_PyChannel(__pyx_v_channel, __pyx_v_self); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 340, __pyx_L1_error) + __pyx_t_1 = __pyx_f_4ssh2_7channel_PyChannel(__pyx_v_channel, __pyx_v_self); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 337, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_1); __pyx_r = __pyx_t_1; __pyx_t_1 = 0; goto __pyx_L0; - /* "ssh2/session.pyx":327 + /* "ssh2/session.pyx":324 * return PyChannel(channel, self) * * def direct_tcpip_ex(self, host not None, int port, # <<<<<<<<<<<<<< @@ -5313,7 +5279,7 @@ static PyObject *__pyx_pf_4ssh2_7session_7Session_38direct_tcpip_ex(struct __pyx return __pyx_r; } -/* "ssh2/session.pyx":342 +/* "ssh2/session.pyx":339 * return PyChannel(channel, self) * * def direct_tcpip(self, host not None, int port): # <<<<<<<<<<<<<< @@ -5353,11 +5319,11 @@ static PyObject *__pyx_pw_4ssh2_7session_7Session_41direct_tcpip(PyObject *__pyx case 1: if (likely((values[1] = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_port)) != 0)) kw_args--; else { - __Pyx_RaiseArgtupleInvalid("direct_tcpip", 1, 2, 2, 1); __PYX_ERR(0, 342, __pyx_L3_error) + __Pyx_RaiseArgtupleInvalid("direct_tcpip", 1, 2, 2, 1); __PYX_ERR(0, 339, __pyx_L3_error) } } if (unlikely(kw_args > 0)) { - if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_pyargnames, 0, values, pos_args, "direct_tcpip") < 0)) __PYX_ERR(0, 342, __pyx_L3_error) + if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_pyargnames, 0, values, pos_args, "direct_tcpip") < 0)) __PYX_ERR(0, 339, __pyx_L3_error) } } else if (PyTuple_GET_SIZE(__pyx_args) != 2) { goto __pyx_L5_argtuple_error; @@ -5366,18 +5332,18 @@ static PyObject *__pyx_pw_4ssh2_7session_7Session_41direct_tcpip(PyObject *__pyx values[1] = PyTuple_GET_ITEM(__pyx_args, 1); } __pyx_v_host = values[0]; - __pyx_v_port = __Pyx_PyInt_As_int(values[1]); if (unlikely((__pyx_v_port == (int)-1) && PyErr_Occurred())) __PYX_ERR(0, 342, __pyx_L3_error) + __pyx_v_port = __Pyx_PyInt_As_int(values[1]); if (unlikely((__pyx_v_port == (int)-1) && PyErr_Occurred())) __PYX_ERR(0, 339, __pyx_L3_error) } goto __pyx_L4_argument_unpacking_done; __pyx_L5_argtuple_error:; - __Pyx_RaiseArgtupleInvalid("direct_tcpip", 1, 2, 2, PyTuple_GET_SIZE(__pyx_args)); __PYX_ERR(0, 342, __pyx_L3_error) + __Pyx_RaiseArgtupleInvalid("direct_tcpip", 1, 2, 2, PyTuple_GET_SIZE(__pyx_args)); __PYX_ERR(0, 339, __pyx_L3_error) __pyx_L3_error:; __Pyx_AddTraceback("ssh2.session.Session.direct_tcpip", __pyx_clineno, __pyx_lineno, __pyx_filename); __Pyx_RefNannyFinishContext(); return NULL; __pyx_L4_argument_unpacking_done:; if (unlikely(((PyObject *)__pyx_v_host) == Py_None)) { - PyErr_Format(PyExc_TypeError, "Argument '%.200s' must not be None", "host"); __PYX_ERR(0, 342, __pyx_L1_error) + PyErr_Format(PyExc_TypeError, "Argument '%.200s' must not be None", "host"); __PYX_ERR(0, 339, __pyx_L1_error) } __pyx_r = __pyx_pf_4ssh2_7session_7Session_40direct_tcpip(((struct __pyx_obj_4ssh2_7session_Session *)__pyx_v_self), __pyx_v_host, __pyx_v_port); @@ -5402,19 +5368,19 @@ static PyObject *__pyx_pf_4ssh2_7session_7Session_40direct_tcpip(struct __pyx_ob int __pyx_t_4; __Pyx_RefNannySetupContext("direct_tcpip", 0); - /* "ssh2/session.pyx":349 + /* "ssh2/session.pyx":346 * """ * cdef c_ssh2.LIBSSH2_CHANNEL *channel * cdef bytes b_host = to_bytes(host) # <<<<<<<<<<<<<< * cdef char *_host = b_host * with nogil: */ - __pyx_t_1 = __pyx_f_4ssh2_5utils_to_bytes(__pyx_v_host); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 349, __pyx_L1_error) + __pyx_t_1 = __pyx_f_4ssh2_5utils_to_bytes(__pyx_v_host); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 346, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_1); __pyx_v_b_host = ((PyObject*)__pyx_t_1); __pyx_t_1 = 0; - /* "ssh2/session.pyx":350 + /* "ssh2/session.pyx":347 * cdef c_ssh2.LIBSSH2_CHANNEL *channel * cdef bytes b_host = to_bytes(host) * cdef char *_host = b_host # <<<<<<<<<<<<<< @@ -5423,12 +5389,12 @@ static PyObject *__pyx_pf_4ssh2_7session_7Session_40direct_tcpip(struct __pyx_ob */ if (unlikely(__pyx_v_b_host == Py_None)) { PyErr_SetString(PyExc_TypeError, "expected bytes, NoneType found"); - __PYX_ERR(0, 350, __pyx_L1_error) + __PYX_ERR(0, 347, __pyx_L1_error) } - __pyx_t_2 = __Pyx_PyBytes_AsWritableString(__pyx_v_b_host); if (unlikely((!__pyx_t_2) && PyErr_Occurred())) __PYX_ERR(0, 350, __pyx_L1_error) + __pyx_t_2 = __Pyx_PyBytes_AsWritableString(__pyx_v_b_host); if (unlikely((!__pyx_t_2) && PyErr_Occurred())) __PYX_ERR(0, 347, __pyx_L1_error) __pyx_v__host = __pyx_t_2; - /* "ssh2/session.pyx":351 + /* "ssh2/session.pyx":348 * cdef bytes b_host = to_bytes(host) * cdef char *_host = b_host * with nogil: # <<<<<<<<<<<<<< @@ -5443,7 +5409,7 @@ static PyObject *__pyx_pf_4ssh2_7session_7Session_40direct_tcpip(struct __pyx_ob #endif /*try:*/ { - /* "ssh2/session.pyx":352 + /* "ssh2/session.pyx":349 * cdef char *_host = b_host * with nogil: * channel = c_ssh2.libssh2_channel_direct_tcpip( # <<<<<<<<<<<<<< @@ -5453,7 +5419,7 @@ static PyObject *__pyx_pf_4ssh2_7session_7Session_40direct_tcpip(struct __pyx_ob __pyx_v_channel = libssh2_channel_direct_tcpip(__pyx_v_self->_session, __pyx_v__host, __pyx_v_port); } - /* "ssh2/session.pyx":351 + /* "ssh2/session.pyx":348 * cdef bytes b_host = to_bytes(host) * cdef char *_host = b_host * with nogil: # <<<<<<<<<<<<<< @@ -5472,7 +5438,7 @@ static PyObject *__pyx_pf_4ssh2_7session_7Session_40direct_tcpip(struct __pyx_ob } } - /* "ssh2/session.pyx":354 + /* "ssh2/session.pyx":351 * channel = c_ssh2.libssh2_channel_direct_tcpip( * self._session, _host, port) * if channel is NULL: # <<<<<<<<<<<<<< @@ -5482,7 +5448,7 @@ static PyObject *__pyx_pf_4ssh2_7session_7Session_40direct_tcpip(struct __pyx_ob __pyx_t_3 = ((__pyx_v_channel == NULL) != 0); if (__pyx_t_3) { - /* "ssh2/session.pyx":355 + /* "ssh2/session.pyx":352 * self._session, _host, port) * if channel is NULL: * return handle_error_codes(c_ssh2.libssh2_session_last_errno( # <<<<<<<<<<<<<< @@ -5491,29 +5457,29 @@ static PyObject *__pyx_pf_4ssh2_7session_7Session_40direct_tcpip(struct __pyx_ob */ __Pyx_XDECREF(__pyx_r); - /* "ssh2/session.pyx":356 + /* "ssh2/session.pyx":353 * if channel is NULL: * return handle_error_codes(c_ssh2.libssh2_session_last_errno( * self._session)) # <<<<<<<<<<<<<< * return PyChannel(channel, self) * */ - __pyx_t_4 = __pyx_f_4ssh2_5utils_handle_error_codes(libssh2_session_last_errno(__pyx_v_self->_session), 0); if (unlikely(__pyx_t_4 == ((int)-1))) __PYX_ERR(0, 355, __pyx_L1_error) + __pyx_t_4 = __pyx_f_4ssh2_5utils_handle_error_codes(libssh2_session_last_errno(__pyx_v_self->_session), 0); if (unlikely(__pyx_t_4 == ((int)-1))) __PYX_ERR(0, 352, __pyx_L1_error) - /* "ssh2/session.pyx":355 + /* "ssh2/session.pyx":352 * self._session, _host, port) * if channel is NULL: * return handle_error_codes(c_ssh2.libssh2_session_last_errno( # <<<<<<<<<<<<<< * self._session)) * return PyChannel(channel, self) */ - __pyx_t_1 = __Pyx_PyInt_From_int(__pyx_t_4); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 355, __pyx_L1_error) + __pyx_t_1 = __Pyx_PyInt_From_int(__pyx_t_4); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 352, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_1); __pyx_r = __pyx_t_1; __pyx_t_1 = 0; goto __pyx_L0; - /* "ssh2/session.pyx":354 + /* "ssh2/session.pyx":351 * channel = c_ssh2.libssh2_channel_direct_tcpip( * self._session, _host, port) * if channel is NULL: # <<<<<<<<<<<<<< @@ -5522,7 +5488,7 @@ static PyObject *__pyx_pf_4ssh2_7session_7Session_40direct_tcpip(struct __pyx_ob */ } - /* "ssh2/session.pyx":357 + /* "ssh2/session.pyx":354 * return handle_error_codes(c_ssh2.libssh2_session_last_errno( * self._session)) * return PyChannel(channel, self) # <<<<<<<<<<<<<< @@ -5530,13 +5496,13 @@ static PyObject *__pyx_pf_4ssh2_7session_7Session_40direct_tcpip(struct __pyx_ob * def block_directions(self): */ __Pyx_XDECREF(__pyx_r); - __pyx_t_1 = __pyx_f_4ssh2_7channel_PyChannel(__pyx_v_channel, __pyx_v_self); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 357, __pyx_L1_error) + __pyx_t_1 = __pyx_f_4ssh2_7channel_PyChannel(__pyx_v_channel, __pyx_v_self); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 354, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_1); __pyx_r = __pyx_t_1; __pyx_t_1 = 0; goto __pyx_L0; - /* "ssh2/session.pyx":342 + /* "ssh2/session.pyx":339 * return PyChannel(channel, self) * * def direct_tcpip(self, host not None, int port): # <<<<<<<<<<<<<< @@ -5556,7 +5522,7 @@ static PyObject *__pyx_pf_4ssh2_7session_7Session_40direct_tcpip(struct __pyx_ob return __pyx_r; } -/* "ssh2/session.pyx":359 +/* "ssh2/session.pyx":356 * return PyChannel(channel, self) * * def block_directions(self): # <<<<<<<<<<<<<< @@ -5585,7 +5551,7 @@ static PyObject *__pyx_pf_4ssh2_7session_7Session_42block_directions(struct __py PyObject *__pyx_t_1 = NULL; __Pyx_RefNannySetupContext("block_directions", 0); - /* "ssh2/session.pyx":381 + /* "ssh2/session.pyx":378 * :rtype: int""" * cdef int rc * with nogil: # <<<<<<<<<<<<<< @@ -5600,7 +5566,7 @@ static PyObject *__pyx_pf_4ssh2_7session_7Session_42block_directions(struct __py #endif /*try:*/ { - /* "ssh2/session.pyx":382 + /* "ssh2/session.pyx":379 * cdef int rc * with nogil: * rc = c_ssh2.libssh2_session_block_directions( # <<<<<<<<<<<<<< @@ -5610,7 +5576,7 @@ static PyObject *__pyx_pf_4ssh2_7session_7Session_42block_directions(struct __py __pyx_v_rc = libssh2_session_block_directions(__pyx_v_self->_session); } - /* "ssh2/session.pyx":381 + /* "ssh2/session.pyx":378 * :rtype: int""" * cdef int rc * with nogil: # <<<<<<<<<<<<<< @@ -5629,7 +5595,7 @@ static PyObject *__pyx_pf_4ssh2_7session_7Session_42block_directions(struct __py } } - /* "ssh2/session.pyx":384 + /* "ssh2/session.pyx":381 * rc = c_ssh2.libssh2_session_block_directions( * self._session) * return rc # <<<<<<<<<<<<<< @@ -5637,13 +5603,13 @@ static PyObject *__pyx_pf_4ssh2_7session_7Session_42block_directions(struct __py * def forward_listen(self, int port): */ __Pyx_XDECREF(__pyx_r); - __pyx_t_1 = __Pyx_PyInt_From_int(__pyx_v_rc); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 384, __pyx_L1_error) + __pyx_t_1 = __Pyx_PyInt_From_int(__pyx_v_rc); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 381, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_1); __pyx_r = __pyx_t_1; __pyx_t_1 = 0; goto __pyx_L0; - /* "ssh2/session.pyx":359 + /* "ssh2/session.pyx":356 * return PyChannel(channel, self) * * def block_directions(self): # <<<<<<<<<<<<<< @@ -5662,7 +5628,7 @@ static PyObject *__pyx_pf_4ssh2_7session_7Session_42block_directions(struct __py return __pyx_r; } -/* "ssh2/session.pyx":386 +/* "ssh2/session.pyx":383 * return rc * * def forward_listen(self, int port): # <<<<<<<<<<<<<< @@ -5679,7 +5645,7 @@ static PyObject *__pyx_pw_4ssh2_7session_7Session_45forward_listen(PyObject *__p __Pyx_RefNannyDeclarations __Pyx_RefNannySetupContext("forward_listen (wrapper)", 0); assert(__pyx_arg_port); { - __pyx_v_port = __Pyx_PyInt_As_int(__pyx_arg_port); if (unlikely((__pyx_v_port == (int)-1) && PyErr_Occurred())) __PYX_ERR(0, 386, __pyx_L3_error) + __pyx_v_port = __Pyx_PyInt_As_int(__pyx_arg_port); if (unlikely((__pyx_v_port == (int)-1) && PyErr_Occurred())) __PYX_ERR(0, 383, __pyx_L3_error) } goto __pyx_L4_argument_unpacking_done; __pyx_L3_error:; @@ -5703,7 +5669,7 @@ static PyObject *__pyx_pf_4ssh2_7session_7Session_44forward_listen(struct __pyx_ PyObject *__pyx_t_3 = NULL; __Pyx_RefNannySetupContext("forward_listen", 0); - /* "ssh2/session.pyx":394 + /* "ssh2/session.pyx":391 * :rtype: :py:class:`ssh2.listener.Listener` or None""" * cdef c_ssh2.LIBSSH2_LISTENER *listener * with nogil: # <<<<<<<<<<<<<< @@ -5718,7 +5684,7 @@ static PyObject *__pyx_pf_4ssh2_7session_7Session_44forward_listen(struct __pyx_ #endif /*try:*/ { - /* "ssh2/session.pyx":395 + /* "ssh2/session.pyx":392 * cdef c_ssh2.LIBSSH2_LISTENER *listener * with nogil: * listener = c_ssh2.libssh2_channel_forward_listen( # <<<<<<<<<<<<<< @@ -5728,7 +5694,7 @@ static PyObject *__pyx_pf_4ssh2_7session_7Session_44forward_listen(struct __pyx_ __pyx_v_listener = libssh2_channel_forward_listen(__pyx_v_self->_session, __pyx_v_port); } - /* "ssh2/session.pyx":394 + /* "ssh2/session.pyx":391 * :rtype: :py:class:`ssh2.listener.Listener` or None""" * cdef c_ssh2.LIBSSH2_LISTENER *listener * with nogil: # <<<<<<<<<<<<<< @@ -5747,7 +5713,7 @@ static PyObject *__pyx_pf_4ssh2_7session_7Session_44forward_listen(struct __pyx_ } } - /* "ssh2/session.pyx":397 + /* "ssh2/session.pyx":394 * listener = c_ssh2.libssh2_channel_forward_listen( * self._session, port) * if listener is NULL: # <<<<<<<<<<<<<< @@ -5757,7 +5723,7 @@ static PyObject *__pyx_pf_4ssh2_7session_7Session_44forward_listen(struct __pyx_ __pyx_t_1 = ((__pyx_v_listener == NULL) != 0); if (__pyx_t_1) { - /* "ssh2/session.pyx":398 + /* "ssh2/session.pyx":395 * self._session, port) * if listener is NULL: * return handle_error_codes(c_ssh2.libssh2_session_last_errno( # <<<<<<<<<<<<<< @@ -5766,29 +5732,29 @@ static PyObject *__pyx_pf_4ssh2_7session_7Session_44forward_listen(struct __pyx_ */ __Pyx_XDECREF(__pyx_r); - /* "ssh2/session.pyx":399 + /* "ssh2/session.pyx":396 * if listener is NULL: * return handle_error_codes(c_ssh2.libssh2_session_last_errno( * self._session)) # <<<<<<<<<<<<<< * return PyListener(listener, self) * */ - __pyx_t_2 = __pyx_f_4ssh2_5utils_handle_error_codes(libssh2_session_last_errno(__pyx_v_self->_session), 0); if (unlikely(__pyx_t_2 == ((int)-1))) __PYX_ERR(0, 398, __pyx_L1_error) + __pyx_t_2 = __pyx_f_4ssh2_5utils_handle_error_codes(libssh2_session_last_errno(__pyx_v_self->_session), 0); if (unlikely(__pyx_t_2 == ((int)-1))) __PYX_ERR(0, 395, __pyx_L1_error) - /* "ssh2/session.pyx":398 + /* "ssh2/session.pyx":395 * self._session, port) * if listener is NULL: * return handle_error_codes(c_ssh2.libssh2_session_last_errno( # <<<<<<<<<<<<<< * self._session)) * return PyListener(listener, self) */ - __pyx_t_3 = __Pyx_PyInt_From_int(__pyx_t_2); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 398, __pyx_L1_error) + __pyx_t_3 = __Pyx_PyInt_From_int(__pyx_t_2); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 395, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_3); __pyx_r = __pyx_t_3; __pyx_t_3 = 0; goto __pyx_L0; - /* "ssh2/session.pyx":397 + /* "ssh2/session.pyx":394 * listener = c_ssh2.libssh2_channel_forward_listen( * self._session, port) * if listener is NULL: # <<<<<<<<<<<<<< @@ -5797,7 +5763,7 @@ static PyObject *__pyx_pf_4ssh2_7session_7Session_44forward_listen(struct __pyx_ */ } - /* "ssh2/session.pyx":400 + /* "ssh2/session.pyx":397 * return handle_error_codes(c_ssh2.libssh2_session_last_errno( * self._session)) * return PyListener(listener, self) # <<<<<<<<<<<<<< @@ -5805,13 +5771,13 @@ static PyObject *__pyx_pf_4ssh2_7session_7Session_44forward_listen(struct __pyx_ * def forward_listen_ex(self, host not None, int port, */ __Pyx_XDECREF(__pyx_r); - __pyx_t_3 = __pyx_f_4ssh2_8listener_PyListener(__pyx_v_listener, __pyx_v_self); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 400, __pyx_L1_error) + __pyx_t_3 = __pyx_f_4ssh2_8listener_PyListener(__pyx_v_listener, __pyx_v_self); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 397, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_3); __pyx_r = __pyx_t_3; __pyx_t_3 = 0; goto __pyx_L0; - /* "ssh2/session.pyx":386 + /* "ssh2/session.pyx":383 * return rc * * def forward_listen(self, int port): # <<<<<<<<<<<<<< @@ -5830,7 +5796,7 @@ static PyObject *__pyx_pf_4ssh2_7session_7Session_44forward_listen(struct __pyx_ return __pyx_r; } -/* "ssh2/session.pyx":402 +/* "ssh2/session.pyx":399 * return PyListener(listener, self) * * def forward_listen_ex(self, host not None, int port, # <<<<<<<<<<<<<< @@ -5876,23 +5842,23 @@ static PyObject *__pyx_pw_4ssh2_7session_7Session_47forward_listen_ex(PyObject * case 1: if (likely((values[1] = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_port)) != 0)) kw_args--; else { - __Pyx_RaiseArgtupleInvalid("forward_listen_ex", 1, 4, 4, 1); __PYX_ERR(0, 402, __pyx_L3_error) + __Pyx_RaiseArgtupleInvalid("forward_listen_ex", 1, 4, 4, 1); __PYX_ERR(0, 399, __pyx_L3_error) } CYTHON_FALLTHROUGH; case 2: if (likely((values[2] = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_bound_port)) != 0)) kw_args--; else { - __Pyx_RaiseArgtupleInvalid("forward_listen_ex", 1, 4, 4, 2); __PYX_ERR(0, 402, __pyx_L3_error) + __Pyx_RaiseArgtupleInvalid("forward_listen_ex", 1, 4, 4, 2); __PYX_ERR(0, 399, __pyx_L3_error) } CYTHON_FALLTHROUGH; case 3: if (likely((values[3] = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_queue_maxsize)) != 0)) kw_args--; else { - __Pyx_RaiseArgtupleInvalid("forward_listen_ex", 1, 4, 4, 3); __PYX_ERR(0, 402, __pyx_L3_error) + __Pyx_RaiseArgtupleInvalid("forward_listen_ex", 1, 4, 4, 3); __PYX_ERR(0, 399, __pyx_L3_error) } } if (unlikely(kw_args > 0)) { - if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_pyargnames, 0, values, pos_args, "forward_listen_ex") < 0)) __PYX_ERR(0, 402, __pyx_L3_error) + if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_pyargnames, 0, values, pos_args, "forward_listen_ex") < 0)) __PYX_ERR(0, 399, __pyx_L3_error) } } else if (PyTuple_GET_SIZE(__pyx_args) != 4) { goto __pyx_L5_argtuple_error; @@ -5903,20 +5869,20 @@ static PyObject *__pyx_pw_4ssh2_7session_7Session_47forward_listen_ex(PyObject * values[3] = PyTuple_GET_ITEM(__pyx_args, 3); } __pyx_v_host = values[0]; - __pyx_v_port = __Pyx_PyInt_As_int(values[1]); if (unlikely((__pyx_v_port == (int)-1) && PyErr_Occurred())) __PYX_ERR(0, 402, __pyx_L3_error) - __pyx_v_bound_port = __Pyx_PyInt_As_int(values[2]); if (unlikely((__pyx_v_bound_port == (int)-1) && PyErr_Occurred())) __PYX_ERR(0, 403, __pyx_L3_error) - __pyx_v_queue_maxsize = __Pyx_PyInt_As_int(values[3]); if (unlikely((__pyx_v_queue_maxsize == (int)-1) && PyErr_Occurred())) __PYX_ERR(0, 403, __pyx_L3_error) + __pyx_v_port = __Pyx_PyInt_As_int(values[1]); if (unlikely((__pyx_v_port == (int)-1) && PyErr_Occurred())) __PYX_ERR(0, 399, __pyx_L3_error) + __pyx_v_bound_port = __Pyx_PyInt_As_int(values[2]); if (unlikely((__pyx_v_bound_port == (int)-1) && PyErr_Occurred())) __PYX_ERR(0, 400, __pyx_L3_error) + __pyx_v_queue_maxsize = __Pyx_PyInt_As_int(values[3]); if (unlikely((__pyx_v_queue_maxsize == (int)-1) && PyErr_Occurred())) __PYX_ERR(0, 400, __pyx_L3_error) } goto __pyx_L4_argument_unpacking_done; __pyx_L5_argtuple_error:; - __Pyx_RaiseArgtupleInvalid("forward_listen_ex", 1, 4, 4, PyTuple_GET_SIZE(__pyx_args)); __PYX_ERR(0, 402, __pyx_L3_error) + __Pyx_RaiseArgtupleInvalid("forward_listen_ex", 1, 4, 4, PyTuple_GET_SIZE(__pyx_args)); __PYX_ERR(0, 399, __pyx_L3_error) __pyx_L3_error:; __Pyx_AddTraceback("ssh2.session.Session.forward_listen_ex", __pyx_clineno, __pyx_lineno, __pyx_filename); __Pyx_RefNannyFinishContext(); return NULL; __pyx_L4_argument_unpacking_done:; if (unlikely(((PyObject *)__pyx_v_host) == Py_None)) { - PyErr_Format(PyExc_TypeError, "Argument '%.200s' must not be None", "host"); __PYX_ERR(0, 402, __pyx_L1_error) + PyErr_Format(PyExc_TypeError, "Argument '%.200s' must not be None", "host"); __PYX_ERR(0, 399, __pyx_L1_error) } __pyx_r = __pyx_pf_4ssh2_7session_7Session_46forward_listen_ex(((struct __pyx_obj_4ssh2_7session_Session *)__pyx_v_self), __pyx_v_host, __pyx_v_port, __pyx_v_bound_port, __pyx_v_queue_maxsize); @@ -5941,19 +5907,19 @@ static PyObject *__pyx_pf_4ssh2_7session_7Session_46forward_listen_ex(struct __p int __pyx_t_4; __Pyx_RefNannySetupContext("forward_listen_ex", 0); - /* "ssh2/session.pyx":405 + /* "ssh2/session.pyx":402 * int bound_port, int queue_maxsize): * cdef c_ssh2.LIBSSH2_LISTENER *listener * cdef bytes b_host = to_bytes(host) # <<<<<<<<<<<<<< * cdef char *_host = b_host * with nogil: */ - __pyx_t_1 = __pyx_f_4ssh2_5utils_to_bytes(__pyx_v_host); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 405, __pyx_L1_error) + __pyx_t_1 = __pyx_f_4ssh2_5utils_to_bytes(__pyx_v_host); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 402, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_1); __pyx_v_b_host = ((PyObject*)__pyx_t_1); __pyx_t_1 = 0; - /* "ssh2/session.pyx":406 + /* "ssh2/session.pyx":403 * cdef c_ssh2.LIBSSH2_LISTENER *listener * cdef bytes b_host = to_bytes(host) * cdef char *_host = b_host # <<<<<<<<<<<<<< @@ -5962,12 +5928,12 @@ static PyObject *__pyx_pf_4ssh2_7session_7Session_46forward_listen_ex(struct __p */ if (unlikely(__pyx_v_b_host == Py_None)) { PyErr_SetString(PyExc_TypeError, "expected bytes, NoneType found"); - __PYX_ERR(0, 406, __pyx_L1_error) + __PYX_ERR(0, 403, __pyx_L1_error) } - __pyx_t_2 = __Pyx_PyBytes_AsWritableString(__pyx_v_b_host); if (unlikely((!__pyx_t_2) && PyErr_Occurred())) __PYX_ERR(0, 406, __pyx_L1_error) + __pyx_t_2 = __Pyx_PyBytes_AsWritableString(__pyx_v_b_host); if (unlikely((!__pyx_t_2) && PyErr_Occurred())) __PYX_ERR(0, 403, __pyx_L1_error) __pyx_v__host = __pyx_t_2; - /* "ssh2/session.pyx":407 + /* "ssh2/session.pyx":404 * cdef bytes b_host = to_bytes(host) * cdef char *_host = b_host * with nogil: # <<<<<<<<<<<<<< @@ -5982,7 +5948,7 @@ static PyObject *__pyx_pf_4ssh2_7session_7Session_46forward_listen_ex(struct __p #endif /*try:*/ { - /* "ssh2/session.pyx":408 + /* "ssh2/session.pyx":405 * cdef char *_host = b_host * with nogil: * listener = c_ssh2.libssh2_channel_forward_listen_ex( # <<<<<<<<<<<<<< @@ -5992,7 +5958,7 @@ static PyObject *__pyx_pf_4ssh2_7session_7Session_46forward_listen_ex(struct __p __pyx_v_listener = libssh2_channel_forward_listen_ex(__pyx_v_self->_session, __pyx_v__host, __pyx_v_port, (&__pyx_v_bound_port), __pyx_v_queue_maxsize); } - /* "ssh2/session.pyx":407 + /* "ssh2/session.pyx":404 * cdef bytes b_host = to_bytes(host) * cdef char *_host = b_host * with nogil: # <<<<<<<<<<<<<< @@ -6011,7 +5977,7 @@ static PyObject *__pyx_pf_4ssh2_7session_7Session_46forward_listen_ex(struct __p } } - /* "ssh2/session.pyx":410 + /* "ssh2/session.pyx":407 * listener = c_ssh2.libssh2_channel_forward_listen_ex( * self._session, _host, port, &bound_port, queue_maxsize) * if listener is NULL: # <<<<<<<<<<<<<< @@ -6021,7 +5987,7 @@ static PyObject *__pyx_pf_4ssh2_7session_7Session_46forward_listen_ex(struct __p __pyx_t_3 = ((__pyx_v_listener == NULL) != 0); if (__pyx_t_3) { - /* "ssh2/session.pyx":411 + /* "ssh2/session.pyx":408 * self._session, _host, port, &bound_port, queue_maxsize) * if listener is NULL: * return handle_error_codes(c_ssh2.libssh2_session_last_errno( # <<<<<<<<<<<<<< @@ -6030,29 +5996,29 @@ static PyObject *__pyx_pf_4ssh2_7session_7Session_46forward_listen_ex(struct __p */ __Pyx_XDECREF(__pyx_r); - /* "ssh2/session.pyx":412 + /* "ssh2/session.pyx":409 * if listener is NULL: * return handle_error_codes(c_ssh2.libssh2_session_last_errno( * self._session)) # <<<<<<<<<<<<<< * return PyListener(listener, self) * */ - __pyx_t_4 = __pyx_f_4ssh2_5utils_handle_error_codes(libssh2_session_last_errno(__pyx_v_self->_session), 0); if (unlikely(__pyx_t_4 == ((int)-1))) __PYX_ERR(0, 411, __pyx_L1_error) + __pyx_t_4 = __pyx_f_4ssh2_5utils_handle_error_codes(libssh2_session_last_errno(__pyx_v_self->_session), 0); if (unlikely(__pyx_t_4 == ((int)-1))) __PYX_ERR(0, 408, __pyx_L1_error) - /* "ssh2/session.pyx":411 + /* "ssh2/session.pyx":408 * self._session, _host, port, &bound_port, queue_maxsize) * if listener is NULL: * return handle_error_codes(c_ssh2.libssh2_session_last_errno( # <<<<<<<<<<<<<< * self._session)) * return PyListener(listener, self) */ - __pyx_t_1 = __Pyx_PyInt_From_int(__pyx_t_4); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 411, __pyx_L1_error) + __pyx_t_1 = __Pyx_PyInt_From_int(__pyx_t_4); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 408, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_1); __pyx_r = __pyx_t_1; __pyx_t_1 = 0; goto __pyx_L0; - /* "ssh2/session.pyx":410 + /* "ssh2/session.pyx":407 * listener = c_ssh2.libssh2_channel_forward_listen_ex( * self._session, _host, port, &bound_port, queue_maxsize) * if listener is NULL: # <<<<<<<<<<<<<< @@ -6061,7 +6027,7 @@ static PyObject *__pyx_pf_4ssh2_7session_7Session_46forward_listen_ex(struct __p */ } - /* "ssh2/session.pyx":413 + /* "ssh2/session.pyx":410 * return handle_error_codes(c_ssh2.libssh2_session_last_errno( * self._session)) * return PyListener(listener, self) # <<<<<<<<<<<<<< @@ -6069,13 +6035,13 @@ static PyObject *__pyx_pf_4ssh2_7session_7Session_46forward_listen_ex(struct __p * def sftp_init(self): */ __Pyx_XDECREF(__pyx_r); - __pyx_t_1 = __pyx_f_4ssh2_8listener_PyListener(__pyx_v_listener, __pyx_v_self); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 413, __pyx_L1_error) + __pyx_t_1 = __pyx_f_4ssh2_8listener_PyListener(__pyx_v_listener, __pyx_v_self); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 410, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_1); __pyx_r = __pyx_t_1; __pyx_t_1 = 0; goto __pyx_L0; - /* "ssh2/session.pyx":402 + /* "ssh2/session.pyx":399 * return PyListener(listener, self) * * def forward_listen_ex(self, host not None, int port, # <<<<<<<<<<<<<< @@ -6095,7 +6061,7 @@ static PyObject *__pyx_pf_4ssh2_7session_7Session_46forward_listen_ex(struct __p return __pyx_r; } -/* "ssh2/session.pyx":415 +/* "ssh2/session.pyx":412 * return PyListener(listener, self) * * def sftp_init(self): # <<<<<<<<<<<<<< @@ -6126,7 +6092,7 @@ static PyObject *__pyx_pf_4ssh2_7session_7Session_48sftp_init(struct __pyx_obj_4 PyObject *__pyx_t_3 = NULL; __Pyx_RefNannySetupContext("sftp_init", 0); - /* "ssh2/session.pyx":421 + /* "ssh2/session.pyx":418 * """ * cdef c_sftp.LIBSSH2_SFTP *_sftp * with nogil: # <<<<<<<<<<<<<< @@ -6141,7 +6107,7 @@ static PyObject *__pyx_pf_4ssh2_7session_7Session_48sftp_init(struct __pyx_obj_4 #endif /*try:*/ { - /* "ssh2/session.pyx":422 + /* "ssh2/session.pyx":419 * cdef c_sftp.LIBSSH2_SFTP *_sftp * with nogil: * _sftp = c_sftp.libssh2_sftp_init(self._session) # <<<<<<<<<<<<<< @@ -6151,7 +6117,7 @@ static PyObject *__pyx_pf_4ssh2_7session_7Session_48sftp_init(struct __pyx_obj_4 __pyx_v__sftp = libssh2_sftp_init(__pyx_v_self->_session); } - /* "ssh2/session.pyx":421 + /* "ssh2/session.pyx":418 * """ * cdef c_sftp.LIBSSH2_SFTP *_sftp * with nogil: # <<<<<<<<<<<<<< @@ -6170,7 +6136,7 @@ static PyObject *__pyx_pf_4ssh2_7session_7Session_48sftp_init(struct __pyx_obj_4 } } - /* "ssh2/session.pyx":423 + /* "ssh2/session.pyx":420 * with nogil: * _sftp = c_sftp.libssh2_sftp_init(self._session) * if _sftp is NULL: # <<<<<<<<<<<<<< @@ -6180,7 +6146,7 @@ static PyObject *__pyx_pf_4ssh2_7session_7Session_48sftp_init(struct __pyx_obj_4 __pyx_t_1 = ((__pyx_v__sftp == NULL) != 0); if (__pyx_t_1) { - /* "ssh2/session.pyx":424 + /* "ssh2/session.pyx":421 * _sftp = c_sftp.libssh2_sftp_init(self._session) * if _sftp is NULL: * return handle_error_codes(c_ssh2.libssh2_session_last_errno( # <<<<<<<<<<<<<< @@ -6189,29 +6155,29 @@ static PyObject *__pyx_pf_4ssh2_7session_7Session_48sftp_init(struct __pyx_obj_4 */ __Pyx_XDECREF(__pyx_r); - /* "ssh2/session.pyx":425 + /* "ssh2/session.pyx":422 * if _sftp is NULL: * return handle_error_codes(c_ssh2.libssh2_session_last_errno( * self._session)) # <<<<<<<<<<<<<< * return PySFTP(_sftp, self) * */ - __pyx_t_2 = __pyx_f_4ssh2_5utils_handle_error_codes(libssh2_session_last_errno(__pyx_v_self->_session), 0); if (unlikely(__pyx_t_2 == ((int)-1))) __PYX_ERR(0, 424, __pyx_L1_error) + __pyx_t_2 = __pyx_f_4ssh2_5utils_handle_error_codes(libssh2_session_last_errno(__pyx_v_self->_session), 0); if (unlikely(__pyx_t_2 == ((int)-1))) __PYX_ERR(0, 421, __pyx_L1_error) - /* "ssh2/session.pyx":424 + /* "ssh2/session.pyx":421 * _sftp = c_sftp.libssh2_sftp_init(self._session) * if _sftp is NULL: * return handle_error_codes(c_ssh2.libssh2_session_last_errno( # <<<<<<<<<<<<<< * self._session)) * return PySFTP(_sftp, self) */ - __pyx_t_3 = __Pyx_PyInt_From_int(__pyx_t_2); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 424, __pyx_L1_error) + __pyx_t_3 = __Pyx_PyInt_From_int(__pyx_t_2); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 421, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_3); __pyx_r = __pyx_t_3; __pyx_t_3 = 0; goto __pyx_L0; - /* "ssh2/session.pyx":423 + /* "ssh2/session.pyx":420 * with nogil: * _sftp = c_sftp.libssh2_sftp_init(self._session) * if _sftp is NULL: # <<<<<<<<<<<<<< @@ -6220,7 +6186,7 @@ static PyObject *__pyx_pf_4ssh2_7session_7Session_48sftp_init(struct __pyx_obj_4 */ } - /* "ssh2/session.pyx":426 + /* "ssh2/session.pyx":423 * return handle_error_codes(c_ssh2.libssh2_session_last_errno( * self._session)) * return PySFTP(_sftp, self) # <<<<<<<<<<<<<< @@ -6228,13 +6194,13 @@ static PyObject *__pyx_pf_4ssh2_7session_7Session_48sftp_init(struct __pyx_obj_4 * def last_error(self, size_t msg_size=1024): */ __Pyx_XDECREF(__pyx_r); - __pyx_t_3 = __pyx_f_4ssh2_4sftp_PySFTP(__pyx_v__sftp, __pyx_v_self); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 426, __pyx_L1_error) + __pyx_t_3 = __pyx_f_4ssh2_4sftp_PySFTP(__pyx_v__sftp, __pyx_v_self); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 423, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_3); __pyx_r = __pyx_t_3; __pyx_t_3 = 0; goto __pyx_L0; - /* "ssh2/session.pyx":415 + /* "ssh2/session.pyx":412 * return PyListener(listener, self) * * def sftp_init(self): # <<<<<<<<<<<<<< @@ -6253,7 +6219,7 @@ static PyObject *__pyx_pf_4ssh2_7session_7Session_48sftp_init(struct __pyx_obj_4 return __pyx_r; } -/* "ssh2/session.pyx":428 +/* "ssh2/session.pyx":425 * return PySFTP(_sftp, self) * * def last_error(self, size_t msg_size=1024): # <<<<<<<<<<<<<< @@ -6290,7 +6256,7 @@ static PyObject *__pyx_pw_4ssh2_7session_7Session_51last_error(PyObject *__pyx_v } } if (unlikely(kw_args > 0)) { - if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_pyargnames, 0, values, pos_args, "last_error") < 0)) __PYX_ERR(0, 428, __pyx_L3_error) + if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_pyargnames, 0, values, pos_args, "last_error") < 0)) __PYX_ERR(0, 425, __pyx_L3_error) } } else { switch (PyTuple_GET_SIZE(__pyx_args)) { @@ -6301,14 +6267,14 @@ static PyObject *__pyx_pw_4ssh2_7session_7Session_51last_error(PyObject *__pyx_v } } if (values[0]) { - __pyx_v_msg_size = __Pyx_PyInt_As_size_t(values[0]); if (unlikely((__pyx_v_msg_size == (size_t)-1) && PyErr_Occurred())) __PYX_ERR(0, 428, __pyx_L3_error) + __pyx_v_msg_size = __Pyx_PyInt_As_size_t(values[0]); if (unlikely((__pyx_v_msg_size == (size_t)-1) && PyErr_Occurred())) __PYX_ERR(0, 425, __pyx_L3_error) } else { __pyx_v_msg_size = ((size_t)0x400); } } goto __pyx_L4_argument_unpacking_done; __pyx_L5_argtuple_error:; - __Pyx_RaiseArgtupleInvalid("last_error", 0, 0, 1, PyTuple_GET_SIZE(__pyx_args)); __PYX_ERR(0, 428, __pyx_L3_error) + __Pyx_RaiseArgtupleInvalid("last_error", 0, 0, 1, PyTuple_GET_SIZE(__pyx_args)); __PYX_ERR(0, 425, __pyx_L3_error) __pyx_L3_error:; __Pyx_AddTraceback("ssh2.session.Session.last_error", __pyx_clineno, __pyx_lineno, __pyx_filename); __Pyx_RefNannyFinishContext(); @@ -6340,7 +6306,7 @@ static PyObject *__pyx_pf_4ssh2_7session_7Session_50last_error(struct __pyx_obj_ PyObject *__pyx_t_11 = NULL; __Pyx_RefNannySetupContext("last_error", 0); - /* "ssh2/session.pyx":435 + /* "ssh2/session.pyx":432 * """ * cdef char *_error_msg * cdef bytes msg = b'' # <<<<<<<<<<<<<< @@ -6350,7 +6316,7 @@ static PyObject *__pyx_pf_4ssh2_7session_7Session_50last_error(struct __pyx_obj_ __Pyx_INCREF(__pyx_kp_b__2); __pyx_v_msg = __pyx_kp_b__2; - /* "ssh2/session.pyx":436 + /* "ssh2/session.pyx":433 * cdef char *_error_msg * cdef bytes msg = b'' * cdef int errmsg_len = 0 # <<<<<<<<<<<<<< @@ -6359,7 +6325,7 @@ static PyObject *__pyx_pf_4ssh2_7session_7Session_50last_error(struct __pyx_obj_ */ __pyx_v_errmsg_len = 0; - /* "ssh2/session.pyx":437 + /* "ssh2/session.pyx":434 * cdef bytes msg = b'' * cdef int errmsg_len = 0 * with nogil: # <<<<<<<<<<<<<< @@ -6374,7 +6340,7 @@ static PyObject *__pyx_pf_4ssh2_7session_7Session_50last_error(struct __pyx_obj_ #endif /*try:*/ { - /* "ssh2/session.pyx":438 + /* "ssh2/session.pyx":435 * cdef int errmsg_len = 0 * with nogil: * _error_msg = malloc(sizeof(char) * msg_size) # <<<<<<<<<<<<<< @@ -6383,7 +6349,7 @@ static PyObject *__pyx_pf_4ssh2_7session_7Session_50last_error(struct __pyx_obj_ */ __pyx_v__error_msg = ((char *)malloc(((sizeof(char)) * __pyx_v_msg_size))); - /* "ssh2/session.pyx":439 + /* "ssh2/session.pyx":436 * with nogil: * _error_msg = malloc(sizeof(char) * msg_size) * c_ssh2.libssh2_session_last_error( # <<<<<<<<<<<<<< @@ -6393,7 +6359,7 @@ static PyObject *__pyx_pf_4ssh2_7session_7Session_50last_error(struct __pyx_obj_ (void)(libssh2_session_last_error(__pyx_v_self->_session, (&__pyx_v__error_msg), (&__pyx_v_errmsg_len), 1)); } - /* "ssh2/session.pyx":437 + /* "ssh2/session.pyx":434 * cdef bytes msg = b'' * cdef int errmsg_len = 0 * with nogil: # <<<<<<<<<<<<<< @@ -6412,7 +6378,7 @@ static PyObject *__pyx_pf_4ssh2_7session_7Session_50last_error(struct __pyx_obj_ } } - /* "ssh2/session.pyx":441 + /* "ssh2/session.pyx":438 * c_ssh2.libssh2_session_last_error( * self._session, &_error_msg, &errmsg_len, 1) * try: # <<<<<<<<<<<<<< @@ -6421,7 +6387,7 @@ static PyObject *__pyx_pf_4ssh2_7session_7Session_50last_error(struct __pyx_obj_ */ /*try:*/ { - /* "ssh2/session.pyx":442 + /* "ssh2/session.pyx":439 * self._session, &_error_msg, &errmsg_len, 1) * try: * if errmsg_len > 0: # <<<<<<<<<<<<<< @@ -6431,19 +6397,19 @@ static PyObject *__pyx_pf_4ssh2_7session_7Session_50last_error(struct __pyx_obj_ __pyx_t_1 = ((__pyx_v_errmsg_len > 0) != 0); if (__pyx_t_1) { - /* "ssh2/session.pyx":443 + /* "ssh2/session.pyx":440 * try: * if errmsg_len > 0: * msg = _error_msg[:errmsg_len] # <<<<<<<<<<<<<< * return msg * finally: */ - __pyx_t_2 = __Pyx_PyBytes_FromStringAndSize(__pyx_v__error_msg + 0, __pyx_v_errmsg_len - 0); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 443, __pyx_L7_error) + __pyx_t_2 = __Pyx_PyBytes_FromStringAndSize(__pyx_v__error_msg + 0, __pyx_v_errmsg_len - 0); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 440, __pyx_L7_error) __Pyx_GOTREF(__pyx_t_2); __Pyx_DECREF_SET(__pyx_v_msg, ((PyObject*)__pyx_t_2)); __pyx_t_2 = 0; - /* "ssh2/session.pyx":442 + /* "ssh2/session.pyx":439 * self._session, &_error_msg, &errmsg_len, 1) * try: * if errmsg_len > 0: # <<<<<<<<<<<<<< @@ -6452,7 +6418,7 @@ static PyObject *__pyx_pf_4ssh2_7session_7Session_50last_error(struct __pyx_obj_ */ } - /* "ssh2/session.pyx":444 + /* "ssh2/session.pyx":441 * if errmsg_len > 0: * msg = _error_msg[:errmsg_len] * return msg # <<<<<<<<<<<<<< @@ -6465,7 +6431,7 @@ static PyObject *__pyx_pf_4ssh2_7session_7Session_50last_error(struct __pyx_obj_ goto __pyx_L6_return; } - /* "ssh2/session.pyx":446 + /* "ssh2/session.pyx":443 * return msg * finally: * free(_error_msg) # <<<<<<<<<<<<<< @@ -6515,7 +6481,7 @@ static PyObject *__pyx_pf_4ssh2_7session_7Session_50last_error(struct __pyx_obj_ } } - /* "ssh2/session.pyx":428 + /* "ssh2/session.pyx":425 * return PySFTP(_sftp, self) * * def last_error(self, size_t msg_size=1024): # <<<<<<<<<<<<<< @@ -6535,7 +6501,7 @@ static PyObject *__pyx_pf_4ssh2_7session_7Session_50last_error(struct __pyx_obj_ return __pyx_r; } -/* "ssh2/session.pyx":448 +/* "ssh2/session.pyx":445 * free(_error_msg) * * def last_errno(self): # <<<<<<<<<<<<<< @@ -6564,7 +6530,7 @@ static PyObject *__pyx_pf_4ssh2_7session_7Session_52last_errno(struct __pyx_obj_ PyObject *__pyx_t_1 = NULL; __Pyx_RefNannySetupContext("last_errno", 0); - /* "ssh2/session.pyx":455 + /* "ssh2/session.pyx":452 * """ * cdef int rc * with nogil: # <<<<<<<<<<<<<< @@ -6579,7 +6545,7 @@ static PyObject *__pyx_pf_4ssh2_7session_7Session_52last_errno(struct __pyx_obj_ #endif /*try:*/ { - /* "ssh2/session.pyx":456 + /* "ssh2/session.pyx":453 * cdef int rc * with nogil: * rc = c_ssh2.libssh2_session_last_errno( # <<<<<<<<<<<<<< @@ -6589,7 +6555,7 @@ static PyObject *__pyx_pf_4ssh2_7session_7Session_52last_errno(struct __pyx_obj_ __pyx_v_rc = libssh2_session_last_errno(__pyx_v_self->_session); } - /* "ssh2/session.pyx":455 + /* "ssh2/session.pyx":452 * """ * cdef int rc * with nogil: # <<<<<<<<<<<<<< @@ -6608,7 +6574,7 @@ static PyObject *__pyx_pf_4ssh2_7session_7Session_52last_errno(struct __pyx_obj_ } } - /* "ssh2/session.pyx":458 + /* "ssh2/session.pyx":455 * rc = c_ssh2.libssh2_session_last_errno( * self._session) * return rc # <<<<<<<<<<<<<< @@ -6616,13 +6582,13 @@ static PyObject *__pyx_pf_4ssh2_7session_7Session_52last_errno(struct __pyx_obj_ * IF EMBEDDED_LIB: */ __Pyx_XDECREF(__pyx_r); - __pyx_t_1 = __Pyx_PyInt_From_int(__pyx_v_rc); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 458, __pyx_L1_error) + __pyx_t_1 = __Pyx_PyInt_From_int(__pyx_v_rc); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 455, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_1); __pyx_r = __pyx_t_1; __pyx_t_1 = 0; goto __pyx_L0; - /* "ssh2/session.pyx":448 + /* "ssh2/session.pyx":445 * free(_error_msg) * * def last_errno(self): # <<<<<<<<<<<<<< @@ -6641,7 +6607,7 @@ static PyObject *__pyx_pf_4ssh2_7session_7Session_52last_errno(struct __pyx_obj_ return __pyx_r; } -/* "ssh2/session.pyx":461 +/* "ssh2/session.pyx":458 * * IF EMBEDDED_LIB: * def set_last_error(self, int errcode, errmsg not None): # <<<<<<<<<<<<<< @@ -6681,11 +6647,11 @@ static PyObject *__pyx_pw_4ssh2_7session_7Session_55set_last_error(PyObject *__p case 1: if (likely((values[1] = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_errmsg)) != 0)) kw_args--; else { - __Pyx_RaiseArgtupleInvalid("set_last_error", 1, 2, 2, 1); __PYX_ERR(0, 461, __pyx_L3_error) + __Pyx_RaiseArgtupleInvalid("set_last_error", 1, 2, 2, 1); __PYX_ERR(0, 458, __pyx_L3_error) } } if (unlikely(kw_args > 0)) { - if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_pyargnames, 0, values, pos_args, "set_last_error") < 0)) __PYX_ERR(0, 461, __pyx_L3_error) + if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_pyargnames, 0, values, pos_args, "set_last_error") < 0)) __PYX_ERR(0, 458, __pyx_L3_error) } } else if (PyTuple_GET_SIZE(__pyx_args) != 2) { goto __pyx_L5_argtuple_error; @@ -6693,19 +6659,19 @@ static PyObject *__pyx_pw_4ssh2_7session_7Session_55set_last_error(PyObject *__p values[0] = PyTuple_GET_ITEM(__pyx_args, 0); values[1] = PyTuple_GET_ITEM(__pyx_args, 1); } - __pyx_v_errcode = __Pyx_PyInt_As_int(values[0]); if (unlikely((__pyx_v_errcode == (int)-1) && PyErr_Occurred())) __PYX_ERR(0, 461, __pyx_L3_error) + __pyx_v_errcode = __Pyx_PyInt_As_int(values[0]); if (unlikely((__pyx_v_errcode == (int)-1) && PyErr_Occurred())) __PYX_ERR(0, 458, __pyx_L3_error) __pyx_v_errmsg = values[1]; } goto __pyx_L4_argument_unpacking_done; __pyx_L5_argtuple_error:; - __Pyx_RaiseArgtupleInvalid("set_last_error", 1, 2, 2, PyTuple_GET_SIZE(__pyx_args)); __PYX_ERR(0, 461, __pyx_L3_error) + __Pyx_RaiseArgtupleInvalid("set_last_error", 1, 2, 2, PyTuple_GET_SIZE(__pyx_args)); __PYX_ERR(0, 458, __pyx_L3_error) __pyx_L3_error:; __Pyx_AddTraceback("ssh2.session.Session.set_last_error", __pyx_clineno, __pyx_lineno, __pyx_filename); __Pyx_RefNannyFinishContext(); return NULL; __pyx_L4_argument_unpacking_done:; if (unlikely(((PyObject *)__pyx_v_errmsg) == Py_None)) { - PyErr_Format(PyExc_TypeError, "Argument '%.200s' must not be None", "errmsg"); __PYX_ERR(0, 461, __pyx_L1_error) + PyErr_Format(PyExc_TypeError, "Argument '%.200s' must not be None", "errmsg"); __PYX_ERR(0, 458, __pyx_L1_error) } __pyx_r = __pyx_pf_4ssh2_7session_7Session_54set_last_error(((struct __pyx_obj_4ssh2_7session_Session *)__pyx_v_self), __pyx_v_errcode, __pyx_v_errmsg); @@ -6728,19 +6694,19 @@ static PyObject *__pyx_pf_4ssh2_7session_7Session_54set_last_error(struct __pyx_ char *__pyx_t_2; __Pyx_RefNannySetupContext("set_last_error", 0); - /* "ssh2/session.pyx":462 + /* "ssh2/session.pyx":459 * IF EMBEDDED_LIB: * def set_last_error(self, int errcode, errmsg not None): * cdef bytes b_errmsg = to_bytes(errmsg) # <<<<<<<<<<<<<< * cdef char *_errmsg = b_errmsg * cdef int rc */ - __pyx_t_1 = __pyx_f_4ssh2_5utils_to_bytes(__pyx_v_errmsg); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 462, __pyx_L1_error) + __pyx_t_1 = __pyx_f_4ssh2_5utils_to_bytes(__pyx_v_errmsg); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 459, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_1); __pyx_v_b_errmsg = ((PyObject*)__pyx_t_1); __pyx_t_1 = 0; - /* "ssh2/session.pyx":463 + /* "ssh2/session.pyx":460 * def set_last_error(self, int errcode, errmsg not None): * cdef bytes b_errmsg = to_bytes(errmsg) * cdef char *_errmsg = b_errmsg # <<<<<<<<<<<<<< @@ -6749,12 +6715,12 @@ static PyObject *__pyx_pf_4ssh2_7session_7Session_54set_last_error(struct __pyx_ */ if (unlikely(__pyx_v_b_errmsg == Py_None)) { PyErr_SetString(PyExc_TypeError, "expected bytes, NoneType found"); - __PYX_ERR(0, 463, __pyx_L1_error) + __PYX_ERR(0, 460, __pyx_L1_error) } - __pyx_t_2 = __Pyx_PyBytes_AsWritableString(__pyx_v_b_errmsg); if (unlikely((!__pyx_t_2) && PyErr_Occurred())) __PYX_ERR(0, 463, __pyx_L1_error) + __pyx_t_2 = __Pyx_PyBytes_AsWritableString(__pyx_v_b_errmsg); if (unlikely((!__pyx_t_2) && PyErr_Occurred())) __PYX_ERR(0, 460, __pyx_L1_error) __pyx_v__errmsg = __pyx_t_2; - /* "ssh2/session.pyx":465 + /* "ssh2/session.pyx":462 * cdef char *_errmsg = b_errmsg * cdef int rc * with nogil: # <<<<<<<<<<<<<< @@ -6769,7 +6735,7 @@ static PyObject *__pyx_pf_4ssh2_7session_7Session_54set_last_error(struct __pyx_ #endif /*try:*/ { - /* "ssh2/session.pyx":466 + /* "ssh2/session.pyx":463 * cdef int rc * with nogil: * rc = c_ssh2.libssh2_session_set_last_error( # <<<<<<<<<<<<<< @@ -6779,7 +6745,7 @@ static PyObject *__pyx_pf_4ssh2_7session_7Session_54set_last_error(struct __pyx_ __pyx_v_rc = libssh2_session_set_last_error(__pyx_v_self->_session, __pyx_v_errcode, __pyx_v__errmsg); } - /* "ssh2/session.pyx":465 + /* "ssh2/session.pyx":462 * cdef char *_errmsg = b_errmsg * cdef int rc * with nogil: # <<<<<<<<<<<<<< @@ -6798,7 +6764,7 @@ static PyObject *__pyx_pf_4ssh2_7session_7Session_54set_last_error(struct __pyx_ } } - /* "ssh2/session.pyx":468 + /* "ssh2/session.pyx":465 * rc = c_ssh2.libssh2_session_set_last_error( * self._session, errcode, _errmsg) * return rc # <<<<<<<<<<<<<< @@ -6806,13 +6772,13 @@ static PyObject *__pyx_pf_4ssh2_7session_7Session_54set_last_error(struct __pyx_ * def scp_recv(self, path not None): */ __Pyx_XDECREF(__pyx_r); - __pyx_t_1 = __Pyx_PyInt_From_int(__pyx_v_rc); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 468, __pyx_L1_error) + __pyx_t_1 = __Pyx_PyInt_From_int(__pyx_v_rc); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 465, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_1); __pyx_r = __pyx_t_1; __pyx_t_1 = 0; goto __pyx_L0; - /* "ssh2/session.pyx":461 + /* "ssh2/session.pyx":458 * * IF EMBEDDED_LIB: * def set_last_error(self, int errcode, errmsg not None): # <<<<<<<<<<<<<< @@ -6832,7 +6798,7 @@ static PyObject *__pyx_pf_4ssh2_7session_7Session_54set_last_error(struct __pyx_ return __pyx_r; } -/* "ssh2/session.pyx":470 +/* "ssh2/session.pyx":467 * return rc * * def scp_recv(self, path not None): # <<<<<<<<<<<<<< @@ -6848,7 +6814,7 @@ static PyObject *__pyx_pw_4ssh2_7session_7Session_57scp_recv(PyObject *__pyx_v_s __Pyx_RefNannyDeclarations __Pyx_RefNannySetupContext("scp_recv (wrapper)", 0); if (unlikely(((PyObject *)__pyx_v_path) == Py_None)) { - PyErr_Format(PyExc_TypeError, "Argument '%.200s' must not be None", "path"); __PYX_ERR(0, 470, __pyx_L1_error) + PyErr_Format(PyExc_TypeError, "Argument '%.200s' must not be None", "path"); __PYX_ERR(0, 467, __pyx_L1_error) } __pyx_r = __pyx_pf_4ssh2_7session_7Session_56scp_recv(((struct __pyx_obj_4ssh2_7session_Session *)__pyx_v_self), ((PyObject *)__pyx_v_path)); @@ -6875,19 +6841,19 @@ static PyObject *__pyx_pf_4ssh2_7session_7Session_56scp_recv(struct __pyx_obj_4s PyObject *__pyx_t_5 = NULL; __Pyx_RefNannySetupContext("scp_recv", 0); - /* "ssh2/session.pyx":480 + /* "ssh2/session.pyx":477 * :rtype: tuple(:py:class:`ssh2.channel.Channel`, * :py:class:`ssh2.statinfo.StatInfo`) or None""" * cdef bytes b_path = to_bytes(path) # <<<<<<<<<<<<<< * cdef char *_path = b_path * cdef StatInfo statinfo = StatInfo() */ - __pyx_t_1 = __pyx_f_4ssh2_5utils_to_bytes(__pyx_v_path); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 480, __pyx_L1_error) + __pyx_t_1 = __pyx_f_4ssh2_5utils_to_bytes(__pyx_v_path); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 477, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_1); __pyx_v_b_path = ((PyObject*)__pyx_t_1); __pyx_t_1 = 0; - /* "ssh2/session.pyx":481 + /* "ssh2/session.pyx":478 * :py:class:`ssh2.statinfo.StatInfo`) or None""" * cdef bytes b_path = to_bytes(path) * cdef char *_path = b_path # <<<<<<<<<<<<<< @@ -6896,24 +6862,24 @@ static PyObject *__pyx_pf_4ssh2_7session_7Session_56scp_recv(struct __pyx_obj_4s */ if (unlikely(__pyx_v_b_path == Py_None)) { PyErr_SetString(PyExc_TypeError, "expected bytes, NoneType found"); - __PYX_ERR(0, 481, __pyx_L1_error) + __PYX_ERR(0, 478, __pyx_L1_error) } - __pyx_t_2 = __Pyx_PyBytes_AsWritableString(__pyx_v_b_path); if (unlikely((!__pyx_t_2) && PyErr_Occurred())) __PYX_ERR(0, 481, __pyx_L1_error) + __pyx_t_2 = __Pyx_PyBytes_AsWritableString(__pyx_v_b_path); if (unlikely((!__pyx_t_2) && PyErr_Occurred())) __PYX_ERR(0, 478, __pyx_L1_error) __pyx_v__path = __pyx_t_2; - /* "ssh2/session.pyx":482 + /* "ssh2/session.pyx":479 * cdef bytes b_path = to_bytes(path) * cdef char *_path = b_path * cdef StatInfo statinfo = StatInfo() # <<<<<<<<<<<<<< * cdef c_ssh2.LIBSSH2_CHANNEL *channel * with nogil: */ - __pyx_t_1 = __Pyx_PyObject_CallNoArg(((PyObject *)__pyx_ptype_4ssh2_8statinfo_StatInfo)); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 482, __pyx_L1_error) + __pyx_t_1 = __Pyx_PyObject_CallNoArg(((PyObject *)__pyx_ptype_4ssh2_8statinfo_StatInfo)); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 479, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_1); __pyx_v_statinfo = ((struct __pyx_obj_4ssh2_8statinfo_StatInfo *)__pyx_t_1); __pyx_t_1 = 0; - /* "ssh2/session.pyx":484 + /* "ssh2/session.pyx":481 * cdef StatInfo statinfo = StatInfo() * cdef c_ssh2.LIBSSH2_CHANNEL *channel * with nogil: # <<<<<<<<<<<<<< @@ -6928,7 +6894,7 @@ static PyObject *__pyx_pf_4ssh2_7session_7Session_56scp_recv(struct __pyx_obj_4s #endif /*try:*/ { - /* "ssh2/session.pyx":485 + /* "ssh2/session.pyx":482 * cdef c_ssh2.LIBSSH2_CHANNEL *channel * with nogil: * channel = c_ssh2.libssh2_scp_recv( # <<<<<<<<<<<<<< @@ -6938,7 +6904,7 @@ static PyObject *__pyx_pf_4ssh2_7session_7Session_56scp_recv(struct __pyx_obj_4s __pyx_v_channel = libssh2_scp_recv(__pyx_v_self->_session, __pyx_v__path, __pyx_v_statinfo->_stat); } - /* "ssh2/session.pyx":484 + /* "ssh2/session.pyx":481 * cdef StatInfo statinfo = StatInfo() * cdef c_ssh2.LIBSSH2_CHANNEL *channel * with nogil: # <<<<<<<<<<<<<< @@ -6957,7 +6923,7 @@ static PyObject *__pyx_pf_4ssh2_7session_7Session_56scp_recv(struct __pyx_obj_4s } } - /* "ssh2/session.pyx":487 + /* "ssh2/session.pyx":484 * channel = c_ssh2.libssh2_scp_recv( * self._session, _path, statinfo._stat) * if channel is NULL: # <<<<<<<<<<<<<< @@ -6967,7 +6933,7 @@ static PyObject *__pyx_pf_4ssh2_7session_7Session_56scp_recv(struct __pyx_obj_4s __pyx_t_3 = ((__pyx_v_channel == NULL) != 0); if (__pyx_t_3) { - /* "ssh2/session.pyx":488 + /* "ssh2/session.pyx":485 * self._session, _path, statinfo._stat) * if channel is NULL: * return handle_error_codes(c_ssh2.libssh2_session_last_errno( # <<<<<<<<<<<<<< @@ -6976,29 +6942,29 @@ static PyObject *__pyx_pf_4ssh2_7session_7Session_56scp_recv(struct __pyx_obj_4s */ __Pyx_XDECREF(__pyx_r); - /* "ssh2/session.pyx":489 + /* "ssh2/session.pyx":486 * if channel is NULL: * return handle_error_codes(c_ssh2.libssh2_session_last_errno( * self._session)) # <<<<<<<<<<<<<< * return PyChannel(channel, self), statinfo * */ - __pyx_t_4 = __pyx_f_4ssh2_5utils_handle_error_codes(libssh2_session_last_errno(__pyx_v_self->_session), 0); if (unlikely(__pyx_t_4 == ((int)-1))) __PYX_ERR(0, 488, __pyx_L1_error) + __pyx_t_4 = __pyx_f_4ssh2_5utils_handle_error_codes(libssh2_session_last_errno(__pyx_v_self->_session), 0); if (unlikely(__pyx_t_4 == ((int)-1))) __PYX_ERR(0, 485, __pyx_L1_error) - /* "ssh2/session.pyx":488 + /* "ssh2/session.pyx":485 * self._session, _path, statinfo._stat) * if channel is NULL: * return handle_error_codes(c_ssh2.libssh2_session_last_errno( # <<<<<<<<<<<<<< * self._session)) * return PyChannel(channel, self), statinfo */ - __pyx_t_1 = __Pyx_PyInt_From_int(__pyx_t_4); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 488, __pyx_L1_error) + __pyx_t_1 = __Pyx_PyInt_From_int(__pyx_t_4); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 485, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_1); __pyx_r = __pyx_t_1; __pyx_t_1 = 0; goto __pyx_L0; - /* "ssh2/session.pyx":487 + /* "ssh2/session.pyx":484 * channel = c_ssh2.libssh2_scp_recv( * self._session, _path, statinfo._stat) * if channel is NULL: # <<<<<<<<<<<<<< @@ -7007,7 +6973,7 @@ static PyObject *__pyx_pf_4ssh2_7session_7Session_56scp_recv(struct __pyx_obj_4s */ } - /* "ssh2/session.pyx":490 + /* "ssh2/session.pyx":487 * return handle_error_codes(c_ssh2.libssh2_session_last_errno( * self._session)) * return PyChannel(channel, self), statinfo # <<<<<<<<<<<<<< @@ -7015,9 +6981,9 @@ static PyObject *__pyx_pf_4ssh2_7session_7Session_56scp_recv(struct __pyx_obj_4s * IF EMBEDDED_LIB: */ __Pyx_XDECREF(__pyx_r); - __pyx_t_1 = __pyx_f_4ssh2_7channel_PyChannel(__pyx_v_channel, __pyx_v_self); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 490, __pyx_L1_error) + __pyx_t_1 = __pyx_f_4ssh2_7channel_PyChannel(__pyx_v_channel, __pyx_v_self); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 487, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_1); - __pyx_t_5 = PyTuple_New(2); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 490, __pyx_L1_error) + __pyx_t_5 = PyTuple_New(2); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 487, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_5); __Pyx_GIVEREF(__pyx_t_1); PyTuple_SET_ITEM(__pyx_t_5, 0, __pyx_t_1); @@ -7029,7 +6995,7 @@ static PyObject *__pyx_pf_4ssh2_7session_7Session_56scp_recv(struct __pyx_obj_4s __pyx_t_5 = 0; goto __pyx_L0; - /* "ssh2/session.pyx":470 + /* "ssh2/session.pyx":467 * return rc * * def scp_recv(self, path not None): # <<<<<<<<<<<<<< @@ -7051,7 +7017,7 @@ static PyObject *__pyx_pf_4ssh2_7session_7Session_56scp_recv(struct __pyx_obj_4s return __pyx_r; } -/* "ssh2/session.pyx":493 +/* "ssh2/session.pyx":490 * * IF EMBEDDED_LIB: * def scp_recv2(self, path not None): # <<<<<<<<<<<<<< @@ -7067,7 +7033,7 @@ static PyObject *__pyx_pw_4ssh2_7session_7Session_59scp_recv2(PyObject *__pyx_v_ __Pyx_RefNannyDeclarations __Pyx_RefNannySetupContext("scp_recv2 (wrapper)", 0); if (unlikely(((PyObject *)__pyx_v_path) == Py_None)) { - PyErr_Format(PyExc_TypeError, "Argument '%.200s' must not be None", "path"); __PYX_ERR(0, 493, __pyx_L1_error) + PyErr_Format(PyExc_TypeError, "Argument '%.200s' must not be None", "path"); __PYX_ERR(0, 490, __pyx_L1_error) } __pyx_r = __pyx_pf_4ssh2_7session_7Session_58scp_recv2(((struct __pyx_obj_4ssh2_7session_Session *)__pyx_v_self), ((PyObject *)__pyx_v_path)); @@ -7094,31 +7060,31 @@ static PyObject *__pyx_pf_4ssh2_7session_7Session_58scp_recv2(struct __pyx_obj_4 PyObject *__pyx_t_5 = NULL; __Pyx_RefNannySetupContext("scp_recv2", 0); - /* "ssh2/session.pyx":503 + /* "ssh2/session.pyx":500 * :rtype: tuple(:py:class:`ssh2.channel.Channel`, * :py:class:`ssh2.fileinfo.FileInfo`) or ``None``""" * cdef FileInfo fileinfo = FileInfo() # <<<<<<<<<<<<<< * cdef bytes b_path = to_bytes(path) * cdef char *_path = b_path */ - __pyx_t_1 = __Pyx_PyObject_CallNoArg(((PyObject *)__pyx_ptype_4ssh2_8fileinfo_FileInfo)); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 503, __pyx_L1_error) + __pyx_t_1 = __Pyx_PyObject_CallNoArg(((PyObject *)__pyx_ptype_4ssh2_8fileinfo_FileInfo)); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 500, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_1); __pyx_v_fileinfo = ((struct __pyx_obj_4ssh2_8fileinfo_FileInfo *)__pyx_t_1); __pyx_t_1 = 0; - /* "ssh2/session.pyx":504 + /* "ssh2/session.pyx":501 * :py:class:`ssh2.fileinfo.FileInfo`) or ``None``""" * cdef FileInfo fileinfo = FileInfo() * cdef bytes b_path = to_bytes(path) # <<<<<<<<<<<<<< * cdef char *_path = b_path * cdef c_ssh2.LIBSSH2_CHANNEL *channel */ - __pyx_t_1 = __pyx_f_4ssh2_5utils_to_bytes(__pyx_v_path); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 504, __pyx_L1_error) + __pyx_t_1 = __pyx_f_4ssh2_5utils_to_bytes(__pyx_v_path); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 501, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_1); __pyx_v_b_path = ((PyObject*)__pyx_t_1); __pyx_t_1 = 0; - /* "ssh2/session.pyx":505 + /* "ssh2/session.pyx":502 * cdef FileInfo fileinfo = FileInfo() * cdef bytes b_path = to_bytes(path) * cdef char *_path = b_path # <<<<<<<<<<<<<< @@ -7127,12 +7093,12 @@ static PyObject *__pyx_pf_4ssh2_7session_7Session_58scp_recv2(struct __pyx_obj_4 */ if (unlikely(__pyx_v_b_path == Py_None)) { PyErr_SetString(PyExc_TypeError, "expected bytes, NoneType found"); - __PYX_ERR(0, 505, __pyx_L1_error) + __PYX_ERR(0, 502, __pyx_L1_error) } - __pyx_t_2 = __Pyx_PyBytes_AsWritableString(__pyx_v_b_path); if (unlikely((!__pyx_t_2) && PyErr_Occurred())) __PYX_ERR(0, 505, __pyx_L1_error) + __pyx_t_2 = __Pyx_PyBytes_AsWritableString(__pyx_v_b_path); if (unlikely((!__pyx_t_2) && PyErr_Occurred())) __PYX_ERR(0, 502, __pyx_L1_error) __pyx_v__path = __pyx_t_2; - /* "ssh2/session.pyx":507 + /* "ssh2/session.pyx":504 * cdef char *_path = b_path * cdef c_ssh2.LIBSSH2_CHANNEL *channel * with nogil: # <<<<<<<<<<<<<< @@ -7147,7 +7113,7 @@ static PyObject *__pyx_pf_4ssh2_7session_7Session_58scp_recv2(struct __pyx_obj_4 #endif /*try:*/ { - /* "ssh2/session.pyx":508 + /* "ssh2/session.pyx":505 * cdef c_ssh2.LIBSSH2_CHANNEL *channel * with nogil: * channel = c_ssh2.libssh2_scp_recv2( # <<<<<<<<<<<<<< @@ -7157,7 +7123,7 @@ static PyObject *__pyx_pf_4ssh2_7session_7Session_58scp_recv2(struct __pyx_obj_4 __pyx_v_channel = libssh2_scp_recv2(__pyx_v_self->_session, __pyx_v__path, __pyx_v_fileinfo->_stat); } - /* "ssh2/session.pyx":507 + /* "ssh2/session.pyx":504 * cdef char *_path = b_path * cdef c_ssh2.LIBSSH2_CHANNEL *channel * with nogil: # <<<<<<<<<<<<<< @@ -7176,7 +7142,7 @@ static PyObject *__pyx_pf_4ssh2_7session_7Session_58scp_recv2(struct __pyx_obj_4 } } - /* "ssh2/session.pyx":510 + /* "ssh2/session.pyx":507 * channel = c_ssh2.libssh2_scp_recv2( * self._session, _path, fileinfo._stat) * if channel is NULL: # <<<<<<<<<<<<<< @@ -7186,7 +7152,7 @@ static PyObject *__pyx_pf_4ssh2_7session_7Session_58scp_recv2(struct __pyx_obj_4 __pyx_t_3 = ((__pyx_v_channel == NULL) != 0); if (__pyx_t_3) { - /* "ssh2/session.pyx":511 + /* "ssh2/session.pyx":508 * self._session, _path, fileinfo._stat) * if channel is NULL: * return handle_error_codes(c_ssh2.libssh2_session_last_errno( # <<<<<<<<<<<<<< @@ -7195,29 +7161,29 @@ static PyObject *__pyx_pf_4ssh2_7session_7Session_58scp_recv2(struct __pyx_obj_4 */ __Pyx_XDECREF(__pyx_r); - /* "ssh2/session.pyx":512 + /* "ssh2/session.pyx":509 * if channel is NULL: * return handle_error_codes(c_ssh2.libssh2_session_last_errno( * self._session)) # <<<<<<<<<<<<<< * return PyChannel(channel, self), fileinfo * */ - __pyx_t_4 = __pyx_f_4ssh2_5utils_handle_error_codes(libssh2_session_last_errno(__pyx_v_self->_session), 0); if (unlikely(__pyx_t_4 == ((int)-1))) __PYX_ERR(0, 511, __pyx_L1_error) + __pyx_t_4 = __pyx_f_4ssh2_5utils_handle_error_codes(libssh2_session_last_errno(__pyx_v_self->_session), 0); if (unlikely(__pyx_t_4 == ((int)-1))) __PYX_ERR(0, 508, __pyx_L1_error) - /* "ssh2/session.pyx":511 + /* "ssh2/session.pyx":508 * self._session, _path, fileinfo._stat) * if channel is NULL: * return handle_error_codes(c_ssh2.libssh2_session_last_errno( # <<<<<<<<<<<<<< * self._session)) * return PyChannel(channel, self), fileinfo */ - __pyx_t_1 = __Pyx_PyInt_From_int(__pyx_t_4); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 511, __pyx_L1_error) + __pyx_t_1 = __Pyx_PyInt_From_int(__pyx_t_4); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 508, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_1); __pyx_r = __pyx_t_1; __pyx_t_1 = 0; goto __pyx_L0; - /* "ssh2/session.pyx":510 + /* "ssh2/session.pyx":507 * channel = c_ssh2.libssh2_scp_recv2( * self._session, _path, fileinfo._stat) * if channel is NULL: # <<<<<<<<<<<<<< @@ -7226,7 +7192,7 @@ static PyObject *__pyx_pf_4ssh2_7session_7Session_58scp_recv2(struct __pyx_obj_4 */ } - /* "ssh2/session.pyx":513 + /* "ssh2/session.pyx":510 * return handle_error_codes(c_ssh2.libssh2_session_last_errno( * self._session)) * return PyChannel(channel, self), fileinfo # <<<<<<<<<<<<<< @@ -7234,9 +7200,9 @@ static PyObject *__pyx_pf_4ssh2_7session_7Session_58scp_recv2(struct __pyx_obj_4 * def scp_send(self, path not None, int mode, size_t size): */ __Pyx_XDECREF(__pyx_r); - __pyx_t_1 = __pyx_f_4ssh2_7channel_PyChannel(__pyx_v_channel, __pyx_v_self); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 513, __pyx_L1_error) + __pyx_t_1 = __pyx_f_4ssh2_7channel_PyChannel(__pyx_v_channel, __pyx_v_self); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 510, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_1); - __pyx_t_5 = PyTuple_New(2); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 513, __pyx_L1_error) + __pyx_t_5 = PyTuple_New(2); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 510, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_5); __Pyx_GIVEREF(__pyx_t_1); PyTuple_SET_ITEM(__pyx_t_5, 0, __pyx_t_1); @@ -7248,7 +7214,7 @@ static PyObject *__pyx_pf_4ssh2_7session_7Session_58scp_recv2(struct __pyx_obj_4 __pyx_t_5 = 0; goto __pyx_L0; - /* "ssh2/session.pyx":493 + /* "ssh2/session.pyx":490 * * IF EMBEDDED_LIB: * def scp_recv2(self, path not None): # <<<<<<<<<<<<<< @@ -7270,7 +7236,7 @@ static PyObject *__pyx_pf_4ssh2_7session_7Session_58scp_recv2(struct __pyx_obj_4 return __pyx_r; } -/* "ssh2/session.pyx":515 +/* "ssh2/session.pyx":512 * return PyChannel(channel, self), fileinfo * * def scp_send(self, path not None, int mode, size_t size): # <<<<<<<<<<<<<< @@ -7313,17 +7279,17 @@ static PyObject *__pyx_pw_4ssh2_7session_7Session_61scp_send(PyObject *__pyx_v_s case 1: if (likely((values[1] = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_mode)) != 0)) kw_args--; else { - __Pyx_RaiseArgtupleInvalid("scp_send", 1, 3, 3, 1); __PYX_ERR(0, 515, __pyx_L3_error) + __Pyx_RaiseArgtupleInvalid("scp_send", 1, 3, 3, 1); __PYX_ERR(0, 512, __pyx_L3_error) } CYTHON_FALLTHROUGH; case 2: if (likely((values[2] = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_size)) != 0)) kw_args--; else { - __Pyx_RaiseArgtupleInvalid("scp_send", 1, 3, 3, 2); __PYX_ERR(0, 515, __pyx_L3_error) + __Pyx_RaiseArgtupleInvalid("scp_send", 1, 3, 3, 2); __PYX_ERR(0, 512, __pyx_L3_error) } } if (unlikely(kw_args > 0)) { - if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_pyargnames, 0, values, pos_args, "scp_send") < 0)) __PYX_ERR(0, 515, __pyx_L3_error) + if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_pyargnames, 0, values, pos_args, "scp_send") < 0)) __PYX_ERR(0, 512, __pyx_L3_error) } } else if (PyTuple_GET_SIZE(__pyx_args) != 3) { goto __pyx_L5_argtuple_error; @@ -7333,19 +7299,19 @@ static PyObject *__pyx_pw_4ssh2_7session_7Session_61scp_send(PyObject *__pyx_v_s values[2] = PyTuple_GET_ITEM(__pyx_args, 2); } __pyx_v_path = values[0]; - __pyx_v_mode = __Pyx_PyInt_As_int(values[1]); if (unlikely((__pyx_v_mode == (int)-1) && PyErr_Occurred())) __PYX_ERR(0, 515, __pyx_L3_error) - __pyx_v_size = __Pyx_PyInt_As_size_t(values[2]); if (unlikely((__pyx_v_size == (size_t)-1) && PyErr_Occurred())) __PYX_ERR(0, 515, __pyx_L3_error) + __pyx_v_mode = __Pyx_PyInt_As_int(values[1]); if (unlikely((__pyx_v_mode == (int)-1) && PyErr_Occurred())) __PYX_ERR(0, 512, __pyx_L3_error) + __pyx_v_size = __Pyx_PyInt_As_size_t(values[2]); if (unlikely((__pyx_v_size == (size_t)-1) && PyErr_Occurred())) __PYX_ERR(0, 512, __pyx_L3_error) } goto __pyx_L4_argument_unpacking_done; __pyx_L5_argtuple_error:; - __Pyx_RaiseArgtupleInvalid("scp_send", 1, 3, 3, PyTuple_GET_SIZE(__pyx_args)); __PYX_ERR(0, 515, __pyx_L3_error) + __Pyx_RaiseArgtupleInvalid("scp_send", 1, 3, 3, PyTuple_GET_SIZE(__pyx_args)); __PYX_ERR(0, 512, __pyx_L3_error) __pyx_L3_error:; __Pyx_AddTraceback("ssh2.session.Session.scp_send", __pyx_clineno, __pyx_lineno, __pyx_filename); __Pyx_RefNannyFinishContext(); return NULL; __pyx_L4_argument_unpacking_done:; if (unlikely(((PyObject *)__pyx_v_path) == Py_None)) { - PyErr_Format(PyExc_TypeError, "Argument '%.200s' must not be None", "path"); __PYX_ERR(0, 515, __pyx_L1_error) + PyErr_Format(PyExc_TypeError, "Argument '%.200s' must not be None", "path"); __PYX_ERR(0, 512, __pyx_L1_error) } __pyx_r = __pyx_pf_4ssh2_7session_7Session_60scp_send(((struct __pyx_obj_4ssh2_7session_Session *)__pyx_v_self), __pyx_v_path, __pyx_v_mode, __pyx_v_size); @@ -7370,19 +7336,19 @@ static PyObject *__pyx_pf_4ssh2_7session_7Session_60scp_send(struct __pyx_obj_4s int __pyx_t_4; __Pyx_RefNannySetupContext("scp_send", 0); - /* "ssh2/session.pyx":526 + /* "ssh2/session.pyx":523 * * :rtype: :py:class:`ssh2.channel.Channel`""" * cdef bytes b_path = to_bytes(path) # <<<<<<<<<<<<<< * cdef char *_path = b_path * cdef c_ssh2.LIBSSH2_CHANNEL *channel */ - __pyx_t_1 = __pyx_f_4ssh2_5utils_to_bytes(__pyx_v_path); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 526, __pyx_L1_error) + __pyx_t_1 = __pyx_f_4ssh2_5utils_to_bytes(__pyx_v_path); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 523, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_1); __pyx_v_b_path = ((PyObject*)__pyx_t_1); __pyx_t_1 = 0; - /* "ssh2/session.pyx":527 + /* "ssh2/session.pyx":524 * :rtype: :py:class:`ssh2.channel.Channel`""" * cdef bytes b_path = to_bytes(path) * cdef char *_path = b_path # <<<<<<<<<<<<<< @@ -7391,12 +7357,12 @@ static PyObject *__pyx_pf_4ssh2_7session_7Session_60scp_send(struct __pyx_obj_4s */ if (unlikely(__pyx_v_b_path == Py_None)) { PyErr_SetString(PyExc_TypeError, "expected bytes, NoneType found"); - __PYX_ERR(0, 527, __pyx_L1_error) + __PYX_ERR(0, 524, __pyx_L1_error) } - __pyx_t_2 = __Pyx_PyBytes_AsWritableString(__pyx_v_b_path); if (unlikely((!__pyx_t_2) && PyErr_Occurred())) __PYX_ERR(0, 527, __pyx_L1_error) + __pyx_t_2 = __Pyx_PyBytes_AsWritableString(__pyx_v_b_path); if (unlikely((!__pyx_t_2) && PyErr_Occurred())) __PYX_ERR(0, 524, __pyx_L1_error) __pyx_v__path = __pyx_t_2; - /* "ssh2/session.pyx":529 + /* "ssh2/session.pyx":526 * cdef char *_path = b_path * cdef c_ssh2.LIBSSH2_CHANNEL *channel * with nogil: # <<<<<<<<<<<<<< @@ -7411,7 +7377,7 @@ static PyObject *__pyx_pf_4ssh2_7session_7Session_60scp_send(struct __pyx_obj_4s #endif /*try:*/ { - /* "ssh2/session.pyx":530 + /* "ssh2/session.pyx":527 * cdef c_ssh2.LIBSSH2_CHANNEL *channel * with nogil: * channel = c_ssh2.libssh2_scp_send( # <<<<<<<<<<<<<< @@ -7421,7 +7387,7 @@ static PyObject *__pyx_pf_4ssh2_7session_7Session_60scp_send(struct __pyx_obj_4s __pyx_v_channel = libssh2_scp_send(__pyx_v_self->_session, __pyx_v__path, __pyx_v_mode, __pyx_v_size); } - /* "ssh2/session.pyx":529 + /* "ssh2/session.pyx":526 * cdef char *_path = b_path * cdef c_ssh2.LIBSSH2_CHANNEL *channel * with nogil: # <<<<<<<<<<<<<< @@ -7440,7 +7406,7 @@ static PyObject *__pyx_pf_4ssh2_7session_7Session_60scp_send(struct __pyx_obj_4s } } - /* "ssh2/session.pyx":532 + /* "ssh2/session.pyx":529 * channel = c_ssh2.libssh2_scp_send( * self._session, _path, mode, size) * if channel is NULL: # <<<<<<<<<<<<<< @@ -7450,7 +7416,7 @@ static PyObject *__pyx_pf_4ssh2_7session_7Session_60scp_send(struct __pyx_obj_4s __pyx_t_3 = ((__pyx_v_channel == NULL) != 0); if (__pyx_t_3) { - /* "ssh2/session.pyx":533 + /* "ssh2/session.pyx":530 * self._session, _path, mode, size) * if channel is NULL: * return handle_error_codes(c_ssh2.libssh2_session_last_errno( # <<<<<<<<<<<<<< @@ -7459,29 +7425,29 @@ static PyObject *__pyx_pf_4ssh2_7session_7Session_60scp_send(struct __pyx_obj_4s */ __Pyx_XDECREF(__pyx_r); - /* "ssh2/session.pyx":534 + /* "ssh2/session.pyx":531 * if channel is NULL: * return handle_error_codes(c_ssh2.libssh2_session_last_errno( * self._session)) # <<<<<<<<<<<<<< * return PyChannel(channel, self) * */ - __pyx_t_4 = __pyx_f_4ssh2_5utils_handle_error_codes(libssh2_session_last_errno(__pyx_v_self->_session), 0); if (unlikely(__pyx_t_4 == ((int)-1))) __PYX_ERR(0, 533, __pyx_L1_error) + __pyx_t_4 = __pyx_f_4ssh2_5utils_handle_error_codes(libssh2_session_last_errno(__pyx_v_self->_session), 0); if (unlikely(__pyx_t_4 == ((int)-1))) __PYX_ERR(0, 530, __pyx_L1_error) - /* "ssh2/session.pyx":533 + /* "ssh2/session.pyx":530 * self._session, _path, mode, size) * if channel is NULL: * return handle_error_codes(c_ssh2.libssh2_session_last_errno( # <<<<<<<<<<<<<< * self._session)) * return PyChannel(channel, self) */ - __pyx_t_1 = __Pyx_PyInt_From_int(__pyx_t_4); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 533, __pyx_L1_error) + __pyx_t_1 = __Pyx_PyInt_From_int(__pyx_t_4); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 530, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_1); __pyx_r = __pyx_t_1; __pyx_t_1 = 0; goto __pyx_L0; - /* "ssh2/session.pyx":532 + /* "ssh2/session.pyx":529 * channel = c_ssh2.libssh2_scp_send( * self._session, _path, mode, size) * if channel is NULL: # <<<<<<<<<<<<<< @@ -7490,7 +7456,7 @@ static PyObject *__pyx_pf_4ssh2_7session_7Session_60scp_send(struct __pyx_obj_4s */ } - /* "ssh2/session.pyx":535 + /* "ssh2/session.pyx":532 * return handle_error_codes(c_ssh2.libssh2_session_last_errno( * self._session)) * return PyChannel(channel, self) # <<<<<<<<<<<<<< @@ -7498,13 +7464,13 @@ static PyObject *__pyx_pf_4ssh2_7session_7Session_60scp_send(struct __pyx_obj_4s * def scp_send64(self, path not None, int mode, c_ssh2.libssh2_uint64_t size, */ __Pyx_XDECREF(__pyx_r); - __pyx_t_1 = __pyx_f_4ssh2_7channel_PyChannel(__pyx_v_channel, __pyx_v_self); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 535, __pyx_L1_error) + __pyx_t_1 = __pyx_f_4ssh2_7channel_PyChannel(__pyx_v_channel, __pyx_v_self); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 532, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_1); __pyx_r = __pyx_t_1; __pyx_t_1 = 0; goto __pyx_L0; - /* "ssh2/session.pyx":515 + /* "ssh2/session.pyx":512 * return PyChannel(channel, self), fileinfo * * def scp_send(self, path not None, int mode, size_t size): # <<<<<<<<<<<<<< @@ -7524,7 +7490,7 @@ static PyObject *__pyx_pf_4ssh2_7session_7Session_60scp_send(struct __pyx_obj_4s return __pyx_r; } -/* "ssh2/session.pyx":537 +/* "ssh2/session.pyx":534 * return PyChannel(channel, self) * * def scp_send64(self, path not None, int mode, c_ssh2.libssh2_uint64_t size, # <<<<<<<<<<<<<< @@ -7573,29 +7539,29 @@ static PyObject *__pyx_pw_4ssh2_7session_7Session_63scp_send64(PyObject *__pyx_v case 1: if (likely((values[1] = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_mode)) != 0)) kw_args--; else { - __Pyx_RaiseArgtupleInvalid("scp_send64", 1, 5, 5, 1); __PYX_ERR(0, 537, __pyx_L3_error) + __Pyx_RaiseArgtupleInvalid("scp_send64", 1, 5, 5, 1); __PYX_ERR(0, 534, __pyx_L3_error) } CYTHON_FALLTHROUGH; case 2: if (likely((values[2] = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_size)) != 0)) kw_args--; else { - __Pyx_RaiseArgtupleInvalid("scp_send64", 1, 5, 5, 2); __PYX_ERR(0, 537, __pyx_L3_error) + __Pyx_RaiseArgtupleInvalid("scp_send64", 1, 5, 5, 2); __PYX_ERR(0, 534, __pyx_L3_error) } CYTHON_FALLTHROUGH; case 3: if (likely((values[3] = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_mtime)) != 0)) kw_args--; else { - __Pyx_RaiseArgtupleInvalid("scp_send64", 1, 5, 5, 3); __PYX_ERR(0, 537, __pyx_L3_error) + __Pyx_RaiseArgtupleInvalid("scp_send64", 1, 5, 5, 3); __PYX_ERR(0, 534, __pyx_L3_error) } CYTHON_FALLTHROUGH; case 4: if (likely((values[4] = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_atime)) != 0)) kw_args--; else { - __Pyx_RaiseArgtupleInvalid("scp_send64", 1, 5, 5, 4); __PYX_ERR(0, 537, __pyx_L3_error) + __Pyx_RaiseArgtupleInvalid("scp_send64", 1, 5, 5, 4); __PYX_ERR(0, 534, __pyx_L3_error) } } if (unlikely(kw_args > 0)) { - if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_pyargnames, 0, values, pos_args, "scp_send64") < 0)) __PYX_ERR(0, 537, __pyx_L3_error) + if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_pyargnames, 0, values, pos_args, "scp_send64") < 0)) __PYX_ERR(0, 534, __pyx_L3_error) } } else if (PyTuple_GET_SIZE(__pyx_args) != 5) { goto __pyx_L5_argtuple_error; @@ -7607,21 +7573,21 @@ static PyObject *__pyx_pw_4ssh2_7session_7Session_63scp_send64(PyObject *__pyx_v values[4] = PyTuple_GET_ITEM(__pyx_args, 4); } __pyx_v_path = values[0]; - __pyx_v_mode = __Pyx_PyInt_As_int(values[1]); if (unlikely((__pyx_v_mode == (int)-1) && PyErr_Occurred())) __PYX_ERR(0, 537, __pyx_L3_error) - __pyx_v_size = __Pyx_PyInt_As_libssh2_uint64_t(values[2]); if (unlikely((__pyx_v_size == ((libssh2_uint64_t)-1)) && PyErr_Occurred())) __PYX_ERR(0, 537, __pyx_L3_error) - __pyx_v_mtime = __Pyx_PyInt_As_time_t(values[3]); if (unlikely((__pyx_v_mtime == ((time_t)-1)) && PyErr_Occurred())) __PYX_ERR(0, 538, __pyx_L3_error) - __pyx_v_atime = __Pyx_PyInt_As_time_t(values[4]); if (unlikely((__pyx_v_atime == ((time_t)-1)) && PyErr_Occurred())) __PYX_ERR(0, 538, __pyx_L3_error) + __pyx_v_mode = __Pyx_PyInt_As_int(values[1]); if (unlikely((__pyx_v_mode == (int)-1) && PyErr_Occurred())) __PYX_ERR(0, 534, __pyx_L3_error) + __pyx_v_size = __Pyx_PyInt_As_libssh2_uint64_t(values[2]); if (unlikely((__pyx_v_size == ((libssh2_uint64_t)-1)) && PyErr_Occurred())) __PYX_ERR(0, 534, __pyx_L3_error) + __pyx_v_mtime = __Pyx_PyInt_As_time_t(values[3]); if (unlikely((__pyx_v_mtime == ((time_t)-1)) && PyErr_Occurred())) __PYX_ERR(0, 535, __pyx_L3_error) + __pyx_v_atime = __Pyx_PyInt_As_time_t(values[4]); if (unlikely((__pyx_v_atime == ((time_t)-1)) && PyErr_Occurred())) __PYX_ERR(0, 535, __pyx_L3_error) } goto __pyx_L4_argument_unpacking_done; __pyx_L5_argtuple_error:; - __Pyx_RaiseArgtupleInvalid("scp_send64", 1, 5, 5, PyTuple_GET_SIZE(__pyx_args)); __PYX_ERR(0, 537, __pyx_L3_error) + __Pyx_RaiseArgtupleInvalid("scp_send64", 1, 5, 5, PyTuple_GET_SIZE(__pyx_args)); __PYX_ERR(0, 534, __pyx_L3_error) __pyx_L3_error:; __Pyx_AddTraceback("ssh2.session.Session.scp_send64", __pyx_clineno, __pyx_lineno, __pyx_filename); __Pyx_RefNannyFinishContext(); return NULL; __pyx_L4_argument_unpacking_done:; if (unlikely(((PyObject *)__pyx_v_path) == Py_None)) { - PyErr_Format(PyExc_TypeError, "Argument '%.200s' must not be None", "path"); __PYX_ERR(0, 537, __pyx_L1_error) + PyErr_Format(PyExc_TypeError, "Argument '%.200s' must not be None", "path"); __PYX_ERR(0, 534, __pyx_L1_error) } __pyx_r = __pyx_pf_4ssh2_7session_7Session_62scp_send64(((struct __pyx_obj_4ssh2_7session_Session *)__pyx_v_self), __pyx_v_path, __pyx_v_mode, __pyx_v_size, __pyx_v_mtime, __pyx_v_atime); @@ -7646,19 +7612,19 @@ static PyObject *__pyx_pf_4ssh2_7session_7Session_62scp_send64(struct __pyx_obj_ int __pyx_t_4; __Pyx_RefNannySetupContext("scp_send64", 0); - /* "ssh2/session.pyx":549 + /* "ssh2/session.pyx":546 * * :rtype: :py:class:`ssh2.channel.Channel`""" * cdef bytes b_path = to_bytes(path) # <<<<<<<<<<<<<< * cdef char *_path = b_path * cdef c_ssh2.LIBSSH2_CHANNEL *channel */ - __pyx_t_1 = __pyx_f_4ssh2_5utils_to_bytes(__pyx_v_path); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 549, __pyx_L1_error) + __pyx_t_1 = __pyx_f_4ssh2_5utils_to_bytes(__pyx_v_path); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 546, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_1); __pyx_v_b_path = ((PyObject*)__pyx_t_1); __pyx_t_1 = 0; - /* "ssh2/session.pyx":550 + /* "ssh2/session.pyx":547 * :rtype: :py:class:`ssh2.channel.Channel`""" * cdef bytes b_path = to_bytes(path) * cdef char *_path = b_path # <<<<<<<<<<<<<< @@ -7667,12 +7633,12 @@ static PyObject *__pyx_pf_4ssh2_7session_7Session_62scp_send64(struct __pyx_obj_ */ if (unlikely(__pyx_v_b_path == Py_None)) { PyErr_SetString(PyExc_TypeError, "expected bytes, NoneType found"); - __PYX_ERR(0, 550, __pyx_L1_error) + __PYX_ERR(0, 547, __pyx_L1_error) } - __pyx_t_2 = __Pyx_PyBytes_AsWritableString(__pyx_v_b_path); if (unlikely((!__pyx_t_2) && PyErr_Occurred())) __PYX_ERR(0, 550, __pyx_L1_error) + __pyx_t_2 = __Pyx_PyBytes_AsWritableString(__pyx_v_b_path); if (unlikely((!__pyx_t_2) && PyErr_Occurred())) __PYX_ERR(0, 547, __pyx_L1_error) __pyx_v__path = __pyx_t_2; - /* "ssh2/session.pyx":552 + /* "ssh2/session.pyx":549 * cdef char *_path = b_path * cdef c_ssh2.LIBSSH2_CHANNEL *channel * with nogil: # <<<<<<<<<<<<<< @@ -7687,7 +7653,7 @@ static PyObject *__pyx_pf_4ssh2_7session_7Session_62scp_send64(struct __pyx_obj_ #endif /*try:*/ { - /* "ssh2/session.pyx":553 + /* "ssh2/session.pyx":550 * cdef c_ssh2.LIBSSH2_CHANNEL *channel * with nogil: * channel = c_ssh2.libssh2_scp_send64( # <<<<<<<<<<<<<< @@ -7697,7 +7663,7 @@ static PyObject *__pyx_pf_4ssh2_7session_7Session_62scp_send64(struct __pyx_obj_ __pyx_v_channel = libssh2_scp_send64(__pyx_v_self->_session, __pyx_v__path, __pyx_v_mode, __pyx_v_size, __pyx_v_mtime, __pyx_v_atime); } - /* "ssh2/session.pyx":552 + /* "ssh2/session.pyx":549 * cdef char *_path = b_path * cdef c_ssh2.LIBSSH2_CHANNEL *channel * with nogil: # <<<<<<<<<<<<<< @@ -7716,7 +7682,7 @@ static PyObject *__pyx_pf_4ssh2_7session_7Session_62scp_send64(struct __pyx_obj_ } } - /* "ssh2/session.pyx":555 + /* "ssh2/session.pyx":552 * channel = c_ssh2.libssh2_scp_send64( * self._session, _path, mode, size, mtime, atime) * if channel is NULL: # <<<<<<<<<<<<<< @@ -7726,7 +7692,7 @@ static PyObject *__pyx_pf_4ssh2_7session_7Session_62scp_send64(struct __pyx_obj_ __pyx_t_3 = ((__pyx_v_channel == NULL) != 0); if (__pyx_t_3) { - /* "ssh2/session.pyx":556 + /* "ssh2/session.pyx":553 * self._session, _path, mode, size, mtime, atime) * if channel is NULL: * return handle_error_codes(c_ssh2.libssh2_session_last_errno( # <<<<<<<<<<<<<< @@ -7735,29 +7701,29 @@ static PyObject *__pyx_pf_4ssh2_7session_7Session_62scp_send64(struct __pyx_obj_ */ __Pyx_XDECREF(__pyx_r); - /* "ssh2/session.pyx":557 + /* "ssh2/session.pyx":554 * if channel is NULL: * return handle_error_codes(c_ssh2.libssh2_session_last_errno( * self._session)) # <<<<<<<<<<<<<< * return PyChannel(channel, self) * */ - __pyx_t_4 = __pyx_f_4ssh2_5utils_handle_error_codes(libssh2_session_last_errno(__pyx_v_self->_session), 0); if (unlikely(__pyx_t_4 == ((int)-1))) __PYX_ERR(0, 556, __pyx_L1_error) + __pyx_t_4 = __pyx_f_4ssh2_5utils_handle_error_codes(libssh2_session_last_errno(__pyx_v_self->_session), 0); if (unlikely(__pyx_t_4 == ((int)-1))) __PYX_ERR(0, 553, __pyx_L1_error) - /* "ssh2/session.pyx":556 + /* "ssh2/session.pyx":553 * self._session, _path, mode, size, mtime, atime) * if channel is NULL: * return handle_error_codes(c_ssh2.libssh2_session_last_errno( # <<<<<<<<<<<<<< * self._session)) * return PyChannel(channel, self) */ - __pyx_t_1 = __Pyx_PyInt_From_int(__pyx_t_4); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 556, __pyx_L1_error) + __pyx_t_1 = __Pyx_PyInt_From_int(__pyx_t_4); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 553, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_1); __pyx_r = __pyx_t_1; __pyx_t_1 = 0; goto __pyx_L0; - /* "ssh2/session.pyx":555 + /* "ssh2/session.pyx":552 * channel = c_ssh2.libssh2_scp_send64( * self._session, _path, mode, size, mtime, atime) * if channel is NULL: # <<<<<<<<<<<<<< @@ -7766,7 +7732,7 @@ static PyObject *__pyx_pf_4ssh2_7session_7Session_62scp_send64(struct __pyx_obj_ */ } - /* "ssh2/session.pyx":558 + /* "ssh2/session.pyx":555 * return handle_error_codes(c_ssh2.libssh2_session_last_errno( * self._session)) * return PyChannel(channel, self) # <<<<<<<<<<<<<< @@ -7774,13 +7740,13 @@ static PyObject *__pyx_pf_4ssh2_7session_7Session_62scp_send64(struct __pyx_obj_ * def publickey_init(self): */ __Pyx_XDECREF(__pyx_r); - __pyx_t_1 = __pyx_f_4ssh2_7channel_PyChannel(__pyx_v_channel, __pyx_v_self); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 558, __pyx_L1_error) + __pyx_t_1 = __pyx_f_4ssh2_7channel_PyChannel(__pyx_v_channel, __pyx_v_self); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 555, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_1); __pyx_r = __pyx_t_1; __pyx_t_1 = 0; goto __pyx_L0; - /* "ssh2/session.pyx":537 + /* "ssh2/session.pyx":534 * return PyChannel(channel, self) * * def scp_send64(self, path not None, int mode, c_ssh2.libssh2_uint64_t size, # <<<<<<<<<<<<<< @@ -7800,7 +7766,7 @@ static PyObject *__pyx_pf_4ssh2_7session_7Session_62scp_send64(struct __pyx_obj_ return __pyx_r; } -/* "ssh2/session.pyx":560 +/* "ssh2/session.pyx":557 * return PyChannel(channel, self) * * def publickey_init(self): # <<<<<<<<<<<<<< @@ -7830,7 +7796,7 @@ static PyObject *__pyx_pf_4ssh2_7session_7Session_64publickey_init(struct __pyx_ PyObject *__pyx_t_2 = NULL; __Pyx_RefNannySetupContext("publickey_init", 0); - /* "ssh2/session.pyx":564 + /* "ssh2/session.pyx":561 * public keys""" * cdef c_pkey.LIBSSH2_PUBLICKEY *_pkey * with nogil: # <<<<<<<<<<<<<< @@ -7845,7 +7811,7 @@ static PyObject *__pyx_pf_4ssh2_7session_7Session_64publickey_init(struct __pyx_ #endif /*try:*/ { - /* "ssh2/session.pyx":565 + /* "ssh2/session.pyx":562 * cdef c_pkey.LIBSSH2_PUBLICKEY *_pkey * with nogil: * _pkey = c_pkey.libssh2_publickey_init(self._session) # <<<<<<<<<<<<<< @@ -7855,7 +7821,7 @@ static PyObject *__pyx_pf_4ssh2_7session_7Session_64publickey_init(struct __pyx_ __pyx_v__pkey = libssh2_publickey_init(__pyx_v_self->_session); } - /* "ssh2/session.pyx":564 + /* "ssh2/session.pyx":561 * public keys""" * cdef c_pkey.LIBSSH2_PUBLICKEY *_pkey * with nogil: # <<<<<<<<<<<<<< @@ -7874,7 +7840,7 @@ static PyObject *__pyx_pf_4ssh2_7session_7Session_64publickey_init(struct __pyx_ } } - /* "ssh2/session.pyx":566 + /* "ssh2/session.pyx":563 * with nogil: * _pkey = c_pkey.libssh2_publickey_init(self._session) * if _pkey is NULL: # <<<<<<<<<<<<<< @@ -7884,20 +7850,20 @@ static PyObject *__pyx_pf_4ssh2_7session_7Session_64publickey_init(struct __pyx_ __pyx_t_1 = ((__pyx_v__pkey == NULL) != 0); if (unlikely(__pyx_t_1)) { - /* "ssh2/session.pyx":567 + /* "ssh2/session.pyx":564 * _pkey = c_pkey.libssh2_publickey_init(self._session) * if _pkey is NULL: * raise PublicKeyInitError # <<<<<<<<<<<<<< * return PyPublicKeySystem(_pkey, self) * */ - __Pyx_GetModuleGlobalName(__pyx_t_2, __pyx_n_s_PublicKeyInitError); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 567, __pyx_L1_error) + __Pyx_GetModuleGlobalName(__pyx_t_2, __pyx_n_s_PublicKeyInitError); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 564, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_2); __Pyx_Raise(__pyx_t_2, 0, 0, 0); __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; - __PYX_ERR(0, 567, __pyx_L1_error) + __PYX_ERR(0, 564, __pyx_L1_error) - /* "ssh2/session.pyx":566 + /* "ssh2/session.pyx":563 * with nogil: * _pkey = c_pkey.libssh2_publickey_init(self._session) * if _pkey is NULL: # <<<<<<<<<<<<<< @@ -7906,7 +7872,7 @@ static PyObject *__pyx_pf_4ssh2_7session_7Session_64publickey_init(struct __pyx_ */ } - /* "ssh2/session.pyx":568 + /* "ssh2/session.pyx":565 * if _pkey is NULL: * raise PublicKeyInitError * return PyPublicKeySystem(_pkey, self) # <<<<<<<<<<<<<< @@ -7914,13 +7880,13 @@ static PyObject *__pyx_pf_4ssh2_7session_7Session_64publickey_init(struct __pyx_ * def hostkey_hash(self, int hash_type): */ __Pyx_XDECREF(__pyx_r); - __pyx_t_2 = __pyx_f_4ssh2_9publickey_PyPublicKeySystem(__pyx_v__pkey, __pyx_v_self); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 568, __pyx_L1_error) + __pyx_t_2 = __pyx_f_4ssh2_9publickey_PyPublicKeySystem(__pyx_v__pkey, __pyx_v_self); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 565, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_2); __pyx_r = __pyx_t_2; __pyx_t_2 = 0; goto __pyx_L0; - /* "ssh2/session.pyx":560 + /* "ssh2/session.pyx":557 * return PyChannel(channel, self) * * def publickey_init(self): # <<<<<<<<<<<<<< @@ -7939,7 +7905,7 @@ static PyObject *__pyx_pf_4ssh2_7session_7Session_64publickey_init(struct __pyx_ return __pyx_r; } -/* "ssh2/session.pyx":570 +/* "ssh2/session.pyx":567 * return PyPublicKeySystem(_pkey, self) * * def hostkey_hash(self, int hash_type): # <<<<<<<<<<<<<< @@ -7956,7 +7922,7 @@ static PyObject *__pyx_pw_4ssh2_7session_7Session_67hostkey_hash(PyObject *__pyx __Pyx_RefNannyDeclarations __Pyx_RefNannySetupContext("hostkey_hash (wrapper)", 0); assert(__pyx_arg_hash_type); { - __pyx_v_hash_type = __Pyx_PyInt_As_int(__pyx_arg_hash_type); if (unlikely((__pyx_v_hash_type == (int)-1) && PyErr_Occurred())) __PYX_ERR(0, 570, __pyx_L3_error) + __pyx_v_hash_type = __Pyx_PyInt_As_int(__pyx_arg_hash_type); if (unlikely((__pyx_v_hash_type == (int)-1) && PyErr_Occurred())) __PYX_ERR(0, 567, __pyx_L3_error) } goto __pyx_L4_argument_unpacking_done; __pyx_L3_error:; @@ -7980,7 +7946,7 @@ static PyObject *__pyx_pf_4ssh2_7session_7Session_66hostkey_hash(struct __pyx_ob PyObject *__pyx_t_2 = NULL; __Pyx_RefNannySetupContext("hostkey_hash", 0); - /* "ssh2/session.pyx":580 + /* "ssh2/session.pyx":577 * cdef const char *_hash * cdef bytes b_hash * with nogil: # <<<<<<<<<<<<<< @@ -7995,7 +7961,7 @@ static PyObject *__pyx_pf_4ssh2_7session_7Session_66hostkey_hash(struct __pyx_ob #endif /*try:*/ { - /* "ssh2/session.pyx":581 + /* "ssh2/session.pyx":578 * cdef bytes b_hash * with nogil: * _hash = c_ssh2.libssh2_hostkey_hash(self._session, hash_type) # <<<<<<<<<<<<<< @@ -8005,7 +7971,7 @@ static PyObject *__pyx_pf_4ssh2_7session_7Session_66hostkey_hash(struct __pyx_ob __pyx_v__hash = libssh2_hostkey_hash(__pyx_v_self->_session, __pyx_v_hash_type); } - /* "ssh2/session.pyx":580 + /* "ssh2/session.pyx":577 * cdef const char *_hash * cdef bytes b_hash * with nogil: # <<<<<<<<<<<<<< @@ -8024,7 +7990,7 @@ static PyObject *__pyx_pf_4ssh2_7session_7Session_66hostkey_hash(struct __pyx_ob } } - /* "ssh2/session.pyx":582 + /* "ssh2/session.pyx":579 * with nogil: * _hash = c_ssh2.libssh2_hostkey_hash(self._session, hash_type) * if _hash is NULL: # <<<<<<<<<<<<<< @@ -8034,7 +8000,7 @@ static PyObject *__pyx_pf_4ssh2_7session_7Session_66hostkey_hash(struct __pyx_ob __pyx_t_1 = ((__pyx_v__hash == NULL) != 0); if (__pyx_t_1) { - /* "ssh2/session.pyx":583 + /* "ssh2/session.pyx":580 * _hash = c_ssh2.libssh2_hostkey_hash(self._session, hash_type) * if _hash is NULL: * return # <<<<<<<<<<<<<< @@ -8045,7 +8011,7 @@ static PyObject *__pyx_pf_4ssh2_7session_7Session_66hostkey_hash(struct __pyx_ob __pyx_r = Py_None; __Pyx_INCREF(Py_None); goto __pyx_L0; - /* "ssh2/session.pyx":582 + /* "ssh2/session.pyx":579 * with nogil: * _hash = c_ssh2.libssh2_hostkey_hash(self._session, hash_type) * if _hash is NULL: # <<<<<<<<<<<<<< @@ -8054,19 +8020,19 @@ static PyObject *__pyx_pf_4ssh2_7session_7Session_66hostkey_hash(struct __pyx_ob */ } - /* "ssh2/session.pyx":584 + /* "ssh2/session.pyx":581 * if _hash is NULL: * return * b_hash = _hash # <<<<<<<<<<<<<< * return b_hash * */ - __pyx_t_2 = __Pyx_PyBytes_FromString(__pyx_v__hash); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 584, __pyx_L1_error) + __pyx_t_2 = __Pyx_PyBytes_FromString(__pyx_v__hash); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 581, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_2); __pyx_v_b_hash = ((PyObject*)__pyx_t_2); __pyx_t_2 = 0; - /* "ssh2/session.pyx":585 + /* "ssh2/session.pyx":582 * return * b_hash = _hash * return b_hash # <<<<<<<<<<<<<< @@ -8078,7 +8044,7 @@ static PyObject *__pyx_pf_4ssh2_7session_7Session_66hostkey_hash(struct __pyx_ob __pyx_r = __pyx_v_b_hash; goto __pyx_L0; - /* "ssh2/session.pyx":570 + /* "ssh2/session.pyx":567 * return PyPublicKeySystem(_pkey, self) * * def hostkey_hash(self, int hash_type): # <<<<<<<<<<<<<< @@ -8098,7 +8064,7 @@ static PyObject *__pyx_pf_4ssh2_7session_7Session_66hostkey_hash(struct __pyx_ob return __pyx_r; } -/* "ssh2/session.pyx":587 +/* "ssh2/session.pyx":584 * return b_hash * * def hostkey(self): # <<<<<<<<<<<<<< @@ -8133,7 +8099,7 @@ static PyObject *__pyx_pf_4ssh2_7session_7Session_68hostkey(struct __pyx_obj_4ss PyObject *__pyx_t_4 = NULL; __Pyx_RefNannySetupContext("hostkey", 0); - /* "ssh2/session.pyx":596 + /* "ssh2/session.pyx":593 * * :rtype: tuple(bytes, int)""" * cdef bytes key = b"" # <<<<<<<<<<<<<< @@ -8143,7 +8109,7 @@ static PyObject *__pyx_pf_4ssh2_7session_7Session_68hostkey(struct __pyx_obj_4ss __Pyx_INCREF(__pyx_kp_b__2); __pyx_v_key = __pyx_kp_b__2; - /* "ssh2/session.pyx":598 + /* "ssh2/session.pyx":595 * cdef bytes key = b"" * cdef const char *_key * cdef size_t key_len = 0 # <<<<<<<<<<<<<< @@ -8152,7 +8118,7 @@ static PyObject *__pyx_pf_4ssh2_7session_7Session_68hostkey(struct __pyx_obj_4ss */ __pyx_v_key_len = 0; - /* "ssh2/session.pyx":599 + /* "ssh2/session.pyx":596 * cdef const char *_key * cdef size_t key_len = 0 * cdef int key_type = 0 # <<<<<<<<<<<<<< @@ -8161,7 +8127,7 @@ static PyObject *__pyx_pf_4ssh2_7session_7Session_68hostkey(struct __pyx_obj_4ss */ __pyx_v_key_type = 0; - /* "ssh2/session.pyx":600 + /* "ssh2/session.pyx":597 * cdef size_t key_len = 0 * cdef int key_type = 0 * with nogil: # <<<<<<<<<<<<<< @@ -8176,7 +8142,7 @@ static PyObject *__pyx_pf_4ssh2_7session_7Session_68hostkey(struct __pyx_obj_4ss #endif /*try:*/ { - /* "ssh2/session.pyx":601 + /* "ssh2/session.pyx":598 * cdef int key_type = 0 * with nogil: * _key = c_ssh2.libssh2_session_hostkey( # <<<<<<<<<<<<<< @@ -8186,7 +8152,7 @@ static PyObject *__pyx_pf_4ssh2_7session_7Session_68hostkey(struct __pyx_obj_4ss __pyx_v__key = libssh2_session_hostkey(__pyx_v_self->_session, (&__pyx_v_key_len), (&__pyx_v_key_type)); } - /* "ssh2/session.pyx":600 + /* "ssh2/session.pyx":597 * cdef size_t key_len = 0 * cdef int key_type = 0 * with nogil: # <<<<<<<<<<<<<< @@ -8205,7 +8171,7 @@ static PyObject *__pyx_pf_4ssh2_7session_7Session_68hostkey(struct __pyx_obj_4ss } } - /* "ssh2/session.pyx":603 + /* "ssh2/session.pyx":600 * _key = c_ssh2.libssh2_session_hostkey( * self._session, &key_len, &key_type) * if _key is NULL: # <<<<<<<<<<<<<< @@ -8215,14 +8181,14 @@ static PyObject *__pyx_pf_4ssh2_7session_7Session_68hostkey(struct __pyx_obj_4ss __pyx_t_1 = ((__pyx_v__key == NULL) != 0); if (unlikely(__pyx_t_1)) { - /* "ssh2/session.pyx":604 + /* "ssh2/session.pyx":601 * self._session, &key_len, &key_type) * if _key is NULL: * raise SessionHostKeyError( # <<<<<<<<<<<<<< * "Error retrieving server host key for session") * key = _key[:key_len] */ - __Pyx_GetModuleGlobalName(__pyx_t_3, __pyx_n_s_SessionHostKeyError); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 604, __pyx_L1_error) + __Pyx_GetModuleGlobalName(__pyx_t_3, __pyx_n_s_SessionHostKeyError); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 601, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_3); __pyx_t_4 = NULL; if (CYTHON_UNPACK_METHODS && unlikely(PyMethod_Check(__pyx_t_3))) { @@ -8236,14 +8202,14 @@ static PyObject *__pyx_pf_4ssh2_7session_7Session_68hostkey(struct __pyx_obj_4ss } __pyx_t_2 = (__pyx_t_4) ? __Pyx_PyObject_Call2Args(__pyx_t_3, __pyx_t_4, __pyx_kp_s_Error_retrieving_server_host_key) : __Pyx_PyObject_CallOneArg(__pyx_t_3, __pyx_kp_s_Error_retrieving_server_host_key); __Pyx_XDECREF(__pyx_t_4); __pyx_t_4 = 0; - if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 604, __pyx_L1_error) + if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 601, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_2); __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; __Pyx_Raise(__pyx_t_2, 0, 0, 0); __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; - __PYX_ERR(0, 604, __pyx_L1_error) + __PYX_ERR(0, 601, __pyx_L1_error) - /* "ssh2/session.pyx":603 + /* "ssh2/session.pyx":600 * _key = c_ssh2.libssh2_session_hostkey( * self._session, &key_len, &key_type) * if _key is NULL: # <<<<<<<<<<<<<< @@ -8252,19 +8218,19 @@ static PyObject *__pyx_pf_4ssh2_7session_7Session_68hostkey(struct __pyx_obj_4ss */ } - /* "ssh2/session.pyx":606 + /* "ssh2/session.pyx":603 * raise SessionHostKeyError( * "Error retrieving server host key for session") * key = _key[:key_len] # <<<<<<<<<<<<<< * return key, key_type * */ - __pyx_t_2 = __Pyx_PyBytes_FromStringAndSize(__pyx_v__key + 0, __pyx_v_key_len - 0); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 606, __pyx_L1_error) + __pyx_t_2 = __Pyx_PyBytes_FromStringAndSize(__pyx_v__key + 0, __pyx_v_key_len - 0); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 603, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_2); __Pyx_DECREF_SET(__pyx_v_key, ((PyObject*)__pyx_t_2)); __pyx_t_2 = 0; - /* "ssh2/session.pyx":607 + /* "ssh2/session.pyx":604 * "Error retrieving server host key for session") * key = _key[:key_len] * return key, key_type # <<<<<<<<<<<<<< @@ -8272,9 +8238,9 @@ static PyObject *__pyx_pf_4ssh2_7session_7Session_68hostkey(struct __pyx_obj_4ss * def knownhost_init(self): */ __Pyx_XDECREF(__pyx_r); - __pyx_t_2 = __Pyx_PyInt_From_int(__pyx_v_key_type); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 607, __pyx_L1_error) + __pyx_t_2 = __Pyx_PyInt_From_int(__pyx_v_key_type); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 604, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_2); - __pyx_t_3 = PyTuple_New(2); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 607, __pyx_L1_error) + __pyx_t_3 = PyTuple_New(2); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 604, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_3); __Pyx_INCREF(__pyx_v_key); __Pyx_GIVEREF(__pyx_v_key); @@ -8286,7 +8252,7 @@ static PyObject *__pyx_pf_4ssh2_7session_7Session_68hostkey(struct __pyx_obj_4ss __pyx_t_3 = 0; goto __pyx_L0; - /* "ssh2/session.pyx":587 + /* "ssh2/session.pyx":584 * return b_hash * * def hostkey(self): # <<<<<<<<<<<<<< @@ -8308,7 +8274,7 @@ static PyObject *__pyx_pf_4ssh2_7session_7Session_68hostkey(struct __pyx_obj_4ss return __pyx_r; } -/* "ssh2/session.pyx":609 +/* "ssh2/session.pyx":606 * return key, key_type * * def knownhost_init(self): # <<<<<<<<<<<<<< @@ -8338,7 +8304,7 @@ static PyObject *__pyx_pf_4ssh2_7session_7Session_70knownhost_init(struct __pyx_ PyObject *__pyx_t_2 = NULL; __Pyx_RefNannySetupContext("knownhost_init", 0); - /* "ssh2/session.pyx":614 + /* "ssh2/session.pyx":611 * :rtype: :py:class:`ssh2.knownhost.KnownHost`""" * cdef c_ssh2.LIBSSH2_KNOWNHOSTS *known_hosts * with nogil: # <<<<<<<<<<<<<< @@ -8353,7 +8319,7 @@ static PyObject *__pyx_pf_4ssh2_7session_7Session_70knownhost_init(struct __pyx_ #endif /*try:*/ { - /* "ssh2/session.pyx":615 + /* "ssh2/session.pyx":612 * cdef c_ssh2.LIBSSH2_KNOWNHOSTS *known_hosts * with nogil: * known_hosts = c_ssh2.libssh2_knownhost_init( # <<<<<<<<<<<<<< @@ -8363,7 +8329,7 @@ static PyObject *__pyx_pf_4ssh2_7session_7Session_70knownhost_init(struct __pyx_ __pyx_v_known_hosts = libssh2_knownhost_init(__pyx_v_self->_session); } - /* "ssh2/session.pyx":614 + /* "ssh2/session.pyx":611 * :rtype: :py:class:`ssh2.knownhost.KnownHost`""" * cdef c_ssh2.LIBSSH2_KNOWNHOSTS *known_hosts * with nogil: # <<<<<<<<<<<<<< @@ -8382,7 +8348,7 @@ static PyObject *__pyx_pf_4ssh2_7session_7Session_70knownhost_init(struct __pyx_ } } - /* "ssh2/session.pyx":617 + /* "ssh2/session.pyx":614 * known_hosts = c_ssh2.libssh2_knownhost_init( * self._session) * if known_hosts is NULL: # <<<<<<<<<<<<<< @@ -8392,20 +8358,20 @@ static PyObject *__pyx_pf_4ssh2_7session_7Session_70knownhost_init(struct __pyx_ __pyx_t_1 = ((__pyx_v_known_hosts == NULL) != 0); if (unlikely(__pyx_t_1)) { - /* "ssh2/session.pyx":618 + /* "ssh2/session.pyx":615 * self._session) * if known_hosts is NULL: * raise KnownHostError # <<<<<<<<<<<<<< * return PyKnownHost(self, known_hosts) * */ - __Pyx_GetModuleGlobalName(__pyx_t_2, __pyx_n_s_KnownHostError); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 618, __pyx_L1_error) + __Pyx_GetModuleGlobalName(__pyx_t_2, __pyx_n_s_KnownHostError); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 615, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_2); __Pyx_Raise(__pyx_t_2, 0, 0, 0); __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; - __PYX_ERR(0, 618, __pyx_L1_error) + __PYX_ERR(0, 615, __pyx_L1_error) - /* "ssh2/session.pyx":617 + /* "ssh2/session.pyx":614 * known_hosts = c_ssh2.libssh2_knownhost_init( * self._session) * if known_hosts is NULL: # <<<<<<<<<<<<<< @@ -8414,7 +8380,7 @@ static PyObject *__pyx_pf_4ssh2_7session_7Session_70knownhost_init(struct __pyx_ */ } - /* "ssh2/session.pyx":619 + /* "ssh2/session.pyx":616 * if known_hosts is NULL: * raise KnownHostError * return PyKnownHost(self, known_hosts) # <<<<<<<<<<<<<< @@ -8422,13 +8388,13 @@ static PyObject *__pyx_pf_4ssh2_7session_7Session_70knownhost_init(struct __pyx_ * def keepalive_config(self, bint want_reply, unsigned interval): */ __Pyx_XDECREF(__pyx_r); - __pyx_t_2 = ((PyObject *)__pyx_f_4ssh2_9knownhost_PyKnownHost(__pyx_v_self, __pyx_v_known_hosts)); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 619, __pyx_L1_error) + __pyx_t_2 = ((PyObject *)__pyx_f_4ssh2_9knownhost_PyKnownHost(__pyx_v_self, __pyx_v_known_hosts)); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 616, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_2); __pyx_r = __pyx_t_2; __pyx_t_2 = 0; goto __pyx_L0; - /* "ssh2/session.pyx":609 + /* "ssh2/session.pyx":606 * return key, key_type * * def knownhost_init(self): # <<<<<<<<<<<<<< @@ -8447,7 +8413,7 @@ static PyObject *__pyx_pf_4ssh2_7session_7Session_70knownhost_init(struct __pyx_ return __pyx_r; } -/* "ssh2/session.pyx":621 +/* "ssh2/session.pyx":618 * return PyKnownHost(self, known_hosts) * * def keepalive_config(self, bint want_reply, unsigned interval): # <<<<<<<<<<<<<< @@ -8487,11 +8453,11 @@ static PyObject *__pyx_pw_4ssh2_7session_7Session_73keepalive_config(PyObject *_ case 1: if (likely((values[1] = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_interval)) != 0)) kw_args--; else { - __Pyx_RaiseArgtupleInvalid("keepalive_config", 1, 2, 2, 1); __PYX_ERR(0, 621, __pyx_L3_error) + __Pyx_RaiseArgtupleInvalid("keepalive_config", 1, 2, 2, 1); __PYX_ERR(0, 618, __pyx_L3_error) } } if (unlikely(kw_args > 0)) { - if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_pyargnames, 0, values, pos_args, "keepalive_config") < 0)) __PYX_ERR(0, 621, __pyx_L3_error) + if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_pyargnames, 0, values, pos_args, "keepalive_config") < 0)) __PYX_ERR(0, 618, __pyx_L3_error) } } else if (PyTuple_GET_SIZE(__pyx_args) != 2) { goto __pyx_L5_argtuple_error; @@ -8499,12 +8465,12 @@ static PyObject *__pyx_pw_4ssh2_7session_7Session_73keepalive_config(PyObject *_ values[0] = PyTuple_GET_ITEM(__pyx_args, 0); values[1] = PyTuple_GET_ITEM(__pyx_args, 1); } - __pyx_v_want_reply = __Pyx_PyObject_IsTrue(values[0]); if (unlikely((__pyx_v_want_reply == (int)-1) && PyErr_Occurred())) __PYX_ERR(0, 621, __pyx_L3_error) - __pyx_v_interval = __Pyx_PyInt_As_unsigned_int(values[1]); if (unlikely((__pyx_v_interval == (unsigned int)-1) && PyErr_Occurred())) __PYX_ERR(0, 621, __pyx_L3_error) + __pyx_v_want_reply = __Pyx_PyObject_IsTrue(values[0]); if (unlikely((__pyx_v_want_reply == (int)-1) && PyErr_Occurred())) __PYX_ERR(0, 618, __pyx_L3_error) + __pyx_v_interval = __Pyx_PyInt_As_unsigned_int(values[1]); if (unlikely((__pyx_v_interval == (unsigned int)-1) && PyErr_Occurred())) __PYX_ERR(0, 618, __pyx_L3_error) } goto __pyx_L4_argument_unpacking_done; __pyx_L5_argtuple_error:; - __Pyx_RaiseArgtupleInvalid("keepalive_config", 1, 2, 2, PyTuple_GET_SIZE(__pyx_args)); __PYX_ERR(0, 621, __pyx_L3_error) + __Pyx_RaiseArgtupleInvalid("keepalive_config", 1, 2, 2, PyTuple_GET_SIZE(__pyx_args)); __PYX_ERR(0, 618, __pyx_L3_error) __pyx_L3_error:; __Pyx_AddTraceback("ssh2.session.Session.keepalive_config", __pyx_clineno, __pyx_lineno, __pyx_filename); __Pyx_RefNannyFinishContext(); @@ -8522,7 +8488,7 @@ static PyObject *__pyx_pf_4ssh2_7session_7Session_72keepalive_config(struct __py __Pyx_RefNannyDeclarations __Pyx_RefNannySetupContext("keepalive_config", 0); - /* "ssh2/session.pyx":631 + /* "ssh2/session.pyx":628 * keepalives. * :type interval: int""" * with nogil: # <<<<<<<<<<<<<< @@ -8537,7 +8503,7 @@ static PyObject *__pyx_pf_4ssh2_7session_7Session_72keepalive_config(struct __py #endif /*try:*/ { - /* "ssh2/session.pyx":632 + /* "ssh2/session.pyx":629 * :type interval: int""" * with nogil: * c_ssh2.libssh2_keepalive_config(self._session, want_reply, interval) # <<<<<<<<<<<<<< @@ -8547,7 +8513,7 @@ static PyObject *__pyx_pf_4ssh2_7session_7Session_72keepalive_config(struct __py libssh2_keepalive_config(__pyx_v_self->_session, __pyx_v_want_reply, __pyx_v_interval); } - /* "ssh2/session.pyx":631 + /* "ssh2/session.pyx":628 * keepalives. * :type interval: int""" * with nogil: # <<<<<<<<<<<<<< @@ -8566,7 +8532,7 @@ static PyObject *__pyx_pf_4ssh2_7session_7Session_72keepalive_config(struct __py } } - /* "ssh2/session.pyx":621 + /* "ssh2/session.pyx":618 * return PyKnownHost(self, known_hosts) * * def keepalive_config(self, bint want_reply, unsigned interval): # <<<<<<<<<<<<<< @@ -8581,7 +8547,7 @@ static PyObject *__pyx_pf_4ssh2_7session_7Session_72keepalive_config(struct __py return __pyx_r; } -/* "ssh2/session.pyx":634 +/* "ssh2/session.pyx":631 * c_ssh2.libssh2_keepalive_config(self._session, want_reply, interval) * * def keepalive_send(self): # <<<<<<<<<<<<<< @@ -8613,7 +8579,7 @@ static PyObject *__pyx_pf_4ssh2_7session_7Session_74keepalive_send(struct __pyx_ PyObject *__pyx_t_2 = NULL; __Pyx_RefNannySetupContext("keepalive_send", 0); - /* "ssh2/session.pyx":640 + /* "ssh2/session.pyx":637 * * :rtype: int""" * cdef int seconds = 0 # <<<<<<<<<<<<<< @@ -8622,7 +8588,7 @@ static PyObject *__pyx_pf_4ssh2_7session_7Session_74keepalive_send(struct __pyx_ */ __pyx_v_seconds = 0; - /* "ssh2/session.pyx":641 + /* "ssh2/session.pyx":638 * :rtype: int""" * cdef int seconds = 0 * cdef int c_seconds = 0 # <<<<<<<<<<<<<< @@ -8631,7 +8597,7 @@ static PyObject *__pyx_pf_4ssh2_7session_7Session_74keepalive_send(struct __pyx_ */ __pyx_v_c_seconds = 0; - /* "ssh2/session.pyx":643 + /* "ssh2/session.pyx":640 * cdef int c_seconds = 0 * cdef int rc * with nogil: # <<<<<<<<<<<<<< @@ -8646,7 +8612,7 @@ static PyObject *__pyx_pf_4ssh2_7session_7Session_74keepalive_send(struct __pyx_ #endif /*try:*/ { - /* "ssh2/session.pyx":644 + /* "ssh2/session.pyx":641 * cdef int rc * with nogil: * rc = c_ssh2.libssh2_keepalive_send(self._session, &c_seconds) # <<<<<<<<<<<<<< @@ -8656,7 +8622,7 @@ static PyObject *__pyx_pf_4ssh2_7session_7Session_74keepalive_send(struct __pyx_ __pyx_v_rc = libssh2_keepalive_send(__pyx_v_self->_session, (&__pyx_v_c_seconds)); } - /* "ssh2/session.pyx":643 + /* "ssh2/session.pyx":640 * cdef int c_seconds = 0 * cdef int rc * with nogil: # <<<<<<<<<<<<<< @@ -8675,27 +8641,27 @@ static PyObject *__pyx_pf_4ssh2_7session_7Session_74keepalive_send(struct __pyx_ } } - /* "ssh2/session.pyx":645 + /* "ssh2/session.pyx":642 * with nogil: * rc = c_ssh2.libssh2_keepalive_send(self._session, &c_seconds) * handle_error_codes(rc) # <<<<<<<<<<<<<< * return c_seconds */ - __pyx_t_1 = __pyx_f_4ssh2_5utils_handle_error_codes(__pyx_v_rc, 0); if (unlikely(__pyx_t_1 == ((int)-1))) __PYX_ERR(0, 645, __pyx_L1_error) + __pyx_t_1 = __pyx_f_4ssh2_5utils_handle_error_codes(__pyx_v_rc, 0); if (unlikely(__pyx_t_1 == ((int)-1))) __PYX_ERR(0, 642, __pyx_L1_error) - /* "ssh2/session.pyx":646 + /* "ssh2/session.pyx":643 * rc = c_ssh2.libssh2_keepalive_send(self._session, &c_seconds) * handle_error_codes(rc) * return c_seconds # <<<<<<<<<<<<<< */ __Pyx_XDECREF(__pyx_r); - __pyx_t_2 = __Pyx_PyInt_From_int(__pyx_v_c_seconds); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 646, __pyx_L1_error) + __pyx_t_2 = __Pyx_PyInt_From_int(__pyx_v_c_seconds); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 643, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_2); __pyx_r = __pyx_t_2; __pyx_t_2 = 0; goto __pyx_L0; - /* "ssh2/session.pyx":634 + /* "ssh2/session.pyx":631 * c_ssh2.libssh2_keepalive_config(self._session, want_reply, interval) * * def keepalive_send(self): # <<<<<<<<<<<<<< @@ -9403,11 +9369,13 @@ static CYTHON_SMALL_CODE int __Pyx_check_single_interpreter(void) { } return 0; } -static CYTHON_SMALL_CODE int __Pyx_copy_spec_to_module(PyObject *spec, PyObject *moddict, const char* from_name, const char* to_name) { +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) { PyObject *value = PyObject_GetAttrString(spec, from_name); int result = 0; if (likely(value)) { - result = PyDict_SetItemString(moddict, to_name, value); + if (allow_none || value != Py_None) { + result = PyDict_SetItemString(moddict, to_name, value); + } Py_DECREF(value); } else if (PyErr_ExceptionMatches(PyExc_AttributeError)) { PyErr_Clear(); @@ -9429,10 +9397,10 @@ static CYTHON_SMALL_CODE PyObject* __pyx_pymod_create(PyObject *spec, CYTHON_UNU if (unlikely(!module)) goto bad; moddict = PyModule_GetDict(module); if (unlikely(!moddict)) goto bad; - if (unlikely(__Pyx_copy_spec_to_module(spec, moddict, "loader", "__loader__") < 0)) goto bad; - if (unlikely(__Pyx_copy_spec_to_module(spec, moddict, "origin", "__file__") < 0)) goto bad; - if (unlikely(__Pyx_copy_spec_to_module(spec, moddict, "parent", "__package__") < 0)) goto bad; - if (unlikely(__Pyx_copy_spec_to_module(spec, moddict, "submodule_search_locations", "__path__") < 0)) goto bad; + 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); @@ -10403,6 +10371,32 @@ static CYTHON_INLINE PyObject* __Pyx_PyObject_CallNoArg(PyObject *func) { } #endif +/* PyDictVersioning */ +#if CYTHON_USE_DICT_VERSIONS && CYTHON_USE_TYPE_SLOTS +static CYTHON_INLINE PY_UINT64_T __Pyx_get_tp_dict_version(PyObject *obj) { + PyObject *dict = Py_TYPE(obj)->tp_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) diff --git a/ssh2/session.pyx b/ssh2/session.pyx index 2f4444a7..5f7e129d 100644 --- a/ssh2/session.pyx +++ b/ssh2/session.pyx @@ -59,8 +59,7 @@ cdef class Session: def __dealloc__(self): if self._session is not NULL: - with nogil: - c_ssh2.libssh2_session_free(self._session) + c_ssh2.libssh2_session_free(self._session) self._session = NULL def disconnect(self): diff --git a/ssh2/sftp.c b/ssh2/sftp.c index e93c2a85..c8804a64 100644 --- a/ssh2/sftp.c +++ b/ssh2/sftp.c @@ -1,4 +1,4 @@ -/* Generated by Cython 0.29 */ +/* Generated by Cython 0.29.6 */ #define PY_SSIZE_T_CLEAN #include "Python.h" @@ -7,8 +7,8 @@ #elif PY_VERSION_HEX < 0x02060000 || (0x03000000 <= PY_VERSION_HEX && PY_VERSION_HEX < 0x03030000) #error Cython requires Python 2.6+ or Python 3.3+. #else -#define CYTHON_ABI "0_29" -#define CYTHON_HEX_VERSION 0x001D00F0 +#define CYTHON_ABI "0_29_6" +#define CYTHON_HEX_VERSION 0x001D06F0 #define CYTHON_FUTURE_DIVISION 0 #include #ifndef offsetof @@ -197,6 +197,9 @@ #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 @@ -343,26 +346,6 @@ #else #define __Pyx_PyFastCFunction_Check(func) 0 #endif -#if CYTHON_USE_DICT_VERSIONS -#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);\ - }\ - } -#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 #if CYTHON_COMPILING_IN_PYPY && !defined(PyObject_Malloc) #define PyObject_Malloc(s) PyMem_Malloc(s) #define PyObject_Free(p) PyMem_Free(p) @@ -395,7 +378,7 @@ typedef int Py_tss_t; static CYTHON_INLINE int PyThread_tss_create(Py_tss_t *key) { *key = PyThread_create_key(); - return 0; // PyThread_create_key reports success always + 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)); @@ -418,7 +401,7 @@ static CYTHON_INLINE int PyThread_tss_set(Py_tss_t *key, void *value) { static CYTHON_INLINE void * PyThread_tss_get(Py_tss_t *key) { return PyThread_get_key_value(*key); } -#endif // TSS (Thread Specific Storage) API +#endif #if CYTHON_COMPILING_IN_CPYTHON || defined(_PyDict_NewPresized) #define __Pyx_PyDict_NewPresized(n) ((n <= 8) ? PyDict_New() : _PyDict_NewPresized(n)) #else @@ -625,7 +608,8 @@ typedef struct {PyObject **p; const char *s; const Py_ssize_t n; const char* enc 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_DEFAULT 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 @@ -1046,7 +1030,7 @@ static PyObject *__Pyx_PyFunction_FastCallDict(PyObject *func, PyObject **args, #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 = PyFrame_Type.tp_basicsize - 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 @@ -1178,6 +1162,32 @@ enum __Pyx_ImportType_CheckSize { static PyTypeObject *__Pyx_ImportType(PyObject* module, const char *module_name, const char *class_name, size_t size, enum __Pyx_ImportType_CheckSize check_size); #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 + /* CLineInTraceback.proto */ #ifdef CYTHON_CLINE_IN_TRACEBACK #define __Pyx_CLineForTraceback(tstate, c_line) (((CYTHON_CLINE_IN_TRACEBACK)) ? c_line : 0) @@ -5514,11 +5524,13 @@ static CYTHON_SMALL_CODE int __Pyx_check_single_interpreter(void) { } return 0; } -static CYTHON_SMALL_CODE int __Pyx_copy_spec_to_module(PyObject *spec, PyObject *moddict, const char* from_name, const char* to_name) { +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) { PyObject *value = PyObject_GetAttrString(spec, from_name); int result = 0; if (likely(value)) { - result = PyDict_SetItemString(moddict, to_name, value); + if (allow_none || value != Py_None) { + result = PyDict_SetItemString(moddict, to_name, value); + } Py_DECREF(value); } else if (PyErr_ExceptionMatches(PyExc_AttributeError)) { PyErr_Clear(); @@ -5540,10 +5552,10 @@ static CYTHON_SMALL_CODE PyObject* __pyx_pymod_create(PyObject *spec, CYTHON_UNU if (unlikely(!module)) goto bad; moddict = PyModule_GetDict(module); if (unlikely(!moddict)) goto bad; - if (unlikely(__Pyx_copy_spec_to_module(spec, moddict, "loader", "__loader__") < 0)) goto bad; - if (unlikely(__Pyx_copy_spec_to_module(spec, moddict, "origin", "__file__") < 0)) goto bad; - if (unlikely(__Pyx_copy_spec_to_module(spec, moddict, "parent", "__package__") < 0)) goto bad; - if (unlikely(__Pyx_copy_spec_to_module(spec, moddict, "submodule_search_locations", "__path__") < 0)) goto bad; + 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); @@ -7032,6 +7044,32 @@ static PyTypeObject *__Pyx_ImportType(PyObject *module, const char *module_name, } #endif +/* PyDictVersioning */ +#if CYTHON_USE_DICT_VERSIONS && CYTHON_USE_TYPE_SLOTS +static CYTHON_INLINE PY_UINT64_T __Pyx_get_tp_dict_version(PyObject *obj) { + PyObject *dict = Py_TYPE(obj)->tp_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 + /* CLineInTraceback */ #ifndef CYTHON_CLINE_IN_TRACEBACK static int __Pyx_CLineForTraceback(PyThreadState *tstate, int c_line) { diff --git a/ssh2/sftp_handle.c b/ssh2/sftp_handle.c index 02078c33..95d55cac 100644 --- a/ssh2/sftp_handle.c +++ b/ssh2/sftp_handle.c @@ -1,4 +1,4 @@ -/* Generated by Cython 0.29 */ +/* Generated by Cython 0.29.6 */ #define PY_SSIZE_T_CLEAN #include "Python.h" @@ -7,8 +7,8 @@ #elif PY_VERSION_HEX < 0x02060000 || (0x03000000 <= PY_VERSION_HEX && PY_VERSION_HEX < 0x03030000) #error Cython requires Python 2.6+ or Python 3.3+. #else -#define CYTHON_ABI "0_29" -#define CYTHON_HEX_VERSION 0x001D00F0 +#define CYTHON_ABI "0_29_6" +#define CYTHON_HEX_VERSION 0x001D06F0 #define CYTHON_FUTURE_DIVISION 0 #include #ifndef offsetof @@ -197,6 +197,9 @@ #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 @@ -343,26 +346,6 @@ #else #define __Pyx_PyFastCFunction_Check(func) 0 #endif -#if CYTHON_USE_DICT_VERSIONS -#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);\ - }\ - } -#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 #if CYTHON_COMPILING_IN_PYPY && !defined(PyObject_Malloc) #define PyObject_Malloc(s) PyMem_Malloc(s) #define PyObject_Free(p) PyMem_Free(p) @@ -395,7 +378,7 @@ typedef int Py_tss_t; static CYTHON_INLINE int PyThread_tss_create(Py_tss_t *key) { *key = PyThread_create_key(); - return 0; // PyThread_create_key reports success always + 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)); @@ -418,7 +401,7 @@ static CYTHON_INLINE int PyThread_tss_set(Py_tss_t *key, void *value) { static CYTHON_INLINE void * PyThread_tss_get(Py_tss_t *key) { return PyThread_get_key_value(*key); } -#endif // TSS (Thread Specific Storage) API +#endif #if CYTHON_COMPILING_IN_CPYTHON || defined(_PyDict_NewPresized) #define __Pyx_PyDict_NewPresized(n) ((n <= 8) ? PyDict_New() : _PyDict_NewPresized(n)) #else @@ -625,7 +608,8 @@ typedef struct {PyObject **p; const char *s; const Py_ssize_t n; const char* enc 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_DEFAULT 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 @@ -1111,7 +1095,7 @@ static PyObject *__Pyx_PyFunction_FastCallDict(PyObject *func, PyObject **args, #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 = PyFrame_Type.tp_basicsize - 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 @@ -1222,6 +1206,32 @@ enum __Pyx_ImportType_CheckSize { static PyTypeObject *__Pyx_ImportType(PyObject* module, const char *module_name, const char *class_name, size_t size, enum __Pyx_ImportType_CheckSize check_size); #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 + /* CLineInTraceback.proto */ #ifdef CYTHON_CLINE_IN_TRACEBACK #define __Pyx_CLineForTraceback(tstate, c_line) (((CYTHON_CLINE_IN_TRACEBACK)) ? c_line : 0) @@ -9599,11 +9609,13 @@ static CYTHON_SMALL_CODE int __Pyx_check_single_interpreter(void) { } return 0; } -static CYTHON_SMALL_CODE int __Pyx_copy_spec_to_module(PyObject *spec, PyObject *moddict, const char* from_name, const char* to_name) { +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) { PyObject *value = PyObject_GetAttrString(spec, from_name); int result = 0; if (likely(value)) { - result = PyDict_SetItemString(moddict, to_name, value); + if (allow_none || value != Py_None) { + result = PyDict_SetItemString(moddict, to_name, value); + } Py_DECREF(value); } else if (PyErr_ExceptionMatches(PyExc_AttributeError)) { PyErr_Clear(); @@ -9625,10 +9637,10 @@ static CYTHON_SMALL_CODE PyObject* __pyx_pymod_create(PyObject *spec, CYTHON_UNU if (unlikely(!module)) goto bad; moddict = PyModule_GetDict(module); if (unlikely(!moddict)) goto bad; - if (unlikely(__Pyx_copy_spec_to_module(spec, moddict, "loader", "__loader__") < 0)) goto bad; - if (unlikely(__Pyx_copy_spec_to_module(spec, moddict, "origin", "__file__") < 0)) goto bad; - if (unlikely(__Pyx_copy_spec_to_module(spec, moddict, "parent", "__package__") < 0)) goto bad; - if (unlikely(__Pyx_copy_spec_to_module(spec, moddict, "submodule_search_locations", "__path__") < 0)) goto bad; + 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); @@ -10919,6 +10931,32 @@ static PyTypeObject *__Pyx_ImportType(PyObject *module, const char *module_name, } #endif +/* PyDictVersioning */ +#if CYTHON_USE_DICT_VERSIONS && CYTHON_USE_TYPE_SLOTS +static CYTHON_INLINE PY_UINT64_T __Pyx_get_tp_dict_version(PyObject *obj) { + PyObject *dict = Py_TYPE(obj)->tp_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 + /* CLineInTraceback */ #ifndef CYTHON_CLINE_IN_TRACEBACK static int __Pyx_CLineForTraceback(PyThreadState *tstate, int c_line) { @@ -12569,7 +12607,7 @@ void __Pyx_Coroutine_ExceptionClear(__Pyx_ExcInfoStruct *exc_state) { #define __Pyx_Coroutine_AlreadyRunningError(gen) (__Pyx__Coroutine_AlreadyRunningError(gen), (PyObject*)NULL) static void __Pyx__Coroutine_AlreadyRunningError(CYTHON_UNUSED __pyx_CoroutineObject *gen) { const char *msg; - if (0) { + if ((0)) { #ifdef __Pyx_Coroutine_USED } else if (__Pyx_Coroutine_Check((PyObject*)gen)) { msg = "coroutine already executing"; @@ -12586,7 +12624,7 @@ static void __Pyx__Coroutine_AlreadyRunningError(CYTHON_UNUSED __pyx_CoroutineOb #define __Pyx_Coroutine_NotStartedError(gen) (__Pyx__Coroutine_NotStartedError(gen), (PyObject*)NULL) static void __Pyx__Coroutine_NotStartedError(CYTHON_UNUSED PyObject *gen) { const char *msg; - if (0) { + if ((0)) { #ifdef __Pyx_Coroutine_USED } else if (__Pyx_Coroutine_Check(gen)) { msg = "can't send non-None value to a just-started coroutine"; diff --git a/ssh2/statinfo.c b/ssh2/statinfo.c index 3d135aa8..a1c95a5c 100644 --- a/ssh2/statinfo.c +++ b/ssh2/statinfo.c @@ -1,4 +1,4 @@ -/* Generated by Cython 0.29 */ +/* Generated by Cython 0.29.6 */ #define PY_SSIZE_T_CLEAN #include "Python.h" @@ -7,8 +7,8 @@ #elif PY_VERSION_HEX < 0x02060000 || (0x03000000 <= PY_VERSION_HEX && PY_VERSION_HEX < 0x03030000) #error Cython requires Python 2.6+ or Python 3.3+. #else -#define CYTHON_ABI "0_29" -#define CYTHON_HEX_VERSION 0x001D00F0 +#define CYTHON_ABI "0_29_6" +#define CYTHON_HEX_VERSION 0x001D06F0 #define CYTHON_FUTURE_DIVISION 0 #include #ifndef offsetof @@ -197,6 +197,9 @@ #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 @@ -343,26 +346,6 @@ #else #define __Pyx_PyFastCFunction_Check(func) 0 #endif -#if CYTHON_USE_DICT_VERSIONS -#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);\ - }\ - } -#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 #if CYTHON_COMPILING_IN_PYPY && !defined(PyObject_Malloc) #define PyObject_Malloc(s) PyMem_Malloc(s) #define PyObject_Free(p) PyMem_Free(p) @@ -395,7 +378,7 @@ typedef int Py_tss_t; static CYTHON_INLINE int PyThread_tss_create(Py_tss_t *key) { *key = PyThread_create_key(); - return 0; // PyThread_create_key reports success always + 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)); @@ -418,7 +401,7 @@ static CYTHON_INLINE int PyThread_tss_set(Py_tss_t *key, void *value) { static CYTHON_INLINE void * PyThread_tss_get(Py_tss_t *key) { return PyThread_get_key_value(*key); } -#endif // TSS (Thread Specific Storage) API +#endif #if CYTHON_COMPILING_IN_CPYTHON || defined(_PyDict_NewPresized) #define __Pyx_PyDict_NewPresized(n) ((n <= 8) ? PyDict_New() : _PyDict_NewPresized(n)) #else @@ -623,7 +606,8 @@ typedef struct {PyObject **p; const char *s; const Py_ssize_t n; const char* enc 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_DEFAULT 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 @@ -994,6 +978,32 @@ static PyObject* __Pyx_PyObject_GenericGetAttr(PyObject* obj, PyObject* attr_nam /* SetupReduce.proto */ static int __Pyx_setup_reduce(PyObject* type_obj); +/* 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 + /* CLineInTraceback.proto */ #ifdef CYTHON_CLINE_IN_TRACEBACK #define __Pyx_CLineForTraceback(tstate, c_line) (((CYTHON_CLINE_IN_TRACEBACK)) ? c_line : 0) @@ -2567,11 +2577,13 @@ static CYTHON_SMALL_CODE int __Pyx_check_single_interpreter(void) { } return 0; } -static CYTHON_SMALL_CODE int __Pyx_copy_spec_to_module(PyObject *spec, PyObject *moddict, const char* from_name, const char* to_name) { +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) { PyObject *value = PyObject_GetAttrString(spec, from_name); int result = 0; if (likely(value)) { - result = PyDict_SetItemString(moddict, to_name, value); + if (allow_none || value != Py_None) { + result = PyDict_SetItemString(moddict, to_name, value); + } Py_DECREF(value); } else if (PyErr_ExceptionMatches(PyExc_AttributeError)) { PyErr_Clear(); @@ -2593,10 +2605,10 @@ static CYTHON_SMALL_CODE PyObject* __pyx_pymod_create(PyObject *spec, CYTHON_UNU if (unlikely(!module)) goto bad; moddict = PyModule_GetDict(module); if (unlikely(!moddict)) goto bad; - if (unlikely(__Pyx_copy_spec_to_module(spec, moddict, "loader", "__loader__") < 0)) goto bad; - if (unlikely(__Pyx_copy_spec_to_module(spec, moddict, "origin", "__file__") < 0)) goto bad; - if (unlikely(__Pyx_copy_spec_to_module(spec, moddict, "parent", "__package__") < 0)) goto bad; - if (unlikely(__Pyx_copy_spec_to_module(spec, moddict, "submodule_search_locations", "__path__") < 0)) goto bad; + 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); @@ -3189,6 +3201,32 @@ static int __Pyx_setup_reduce(PyObject* type_obj) { return ret; } +/* PyDictVersioning */ +#if CYTHON_USE_DICT_VERSIONS && CYTHON_USE_TYPE_SLOTS +static CYTHON_INLINE PY_UINT64_T __Pyx_get_tp_dict_version(PyObject *obj) { + PyObject *dict = Py_TYPE(obj)->tp_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 + /* CLineInTraceback */ #ifndef CYTHON_CLINE_IN_TRACEBACK static int __Pyx_CLineForTraceback(PyThreadState *tstate, int c_line) { diff --git a/ssh2/utils.c b/ssh2/utils.c index a1745d8b..4e29b3dd 100644 --- a/ssh2/utils.c +++ b/ssh2/utils.c @@ -1,4 +1,4 @@ -/* Generated by Cython 0.29 */ +/* Generated by Cython 0.29.6 */ #define PY_SSIZE_T_CLEAN #include "Python.h" @@ -7,8 +7,8 @@ #elif PY_VERSION_HEX < 0x02060000 || (0x03000000 <= PY_VERSION_HEX && PY_VERSION_HEX < 0x03030000) #error Cython requires Python 2.6+ or Python 3.3+. #else -#define CYTHON_ABI "0_29" -#define CYTHON_HEX_VERSION 0x001D00F0 +#define CYTHON_ABI "0_29_6" +#define CYTHON_HEX_VERSION 0x001D06F0 #define CYTHON_FUTURE_DIVISION 0 #include #ifndef offsetof @@ -197,6 +197,9 @@ #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 @@ -343,26 +346,6 @@ #else #define __Pyx_PyFastCFunction_Check(func) 0 #endif -#if CYTHON_USE_DICT_VERSIONS -#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);\ - }\ - } -#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 #if CYTHON_COMPILING_IN_PYPY && !defined(PyObject_Malloc) #define PyObject_Malloc(s) PyMem_Malloc(s) #define PyObject_Free(p) PyMem_Free(p) @@ -395,7 +378,7 @@ typedef int Py_tss_t; static CYTHON_INLINE int PyThread_tss_create(Py_tss_t *key) { *key = PyThread_create_key(); - return 0; // PyThread_create_key reports success always + 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)); @@ -418,7 +401,7 @@ static CYTHON_INLINE int PyThread_tss_set(Py_tss_t *key, void *value) { static CYTHON_INLINE void * PyThread_tss_get(Py_tss_t *key) { return PyThread_get_key_value(*key); } -#endif // TSS (Thread Specific Storage) API +#endif #if CYTHON_COMPILING_IN_CPYTHON || defined(_PyDict_NewPresized) #define __Pyx_PyDict_NewPresized(n) ((n <= 8) ? PyDict_New() : _PyDict_NewPresized(n)) #else @@ -622,7 +605,8 @@ typedef struct {PyObject **p; const char *s; const Py_ssize_t n; const char* enc 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_DEFAULT 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 @@ -925,6 +909,32 @@ static CYTHON_INLINE PyObject* __Pyx_PyObject_GetAttrStr(PyObject* obj, PyObject /* GetBuiltinName.proto */ static PyObject *__Pyx_GetBuiltinName(PyObject *name); +/* 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) {\ @@ -971,7 +981,7 @@ static PyObject *__Pyx_PyFunction_FastCallDict(PyObject *func, PyObject **args, #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 = PyFrame_Type.tp_basicsize - 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 @@ -3878,11 +3888,13 @@ static CYTHON_SMALL_CODE int __Pyx_check_single_interpreter(void) { } return 0; } -static CYTHON_SMALL_CODE int __Pyx_copy_spec_to_module(PyObject *spec, PyObject *moddict, const char* from_name, const char* to_name) { +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) { PyObject *value = PyObject_GetAttrString(spec, from_name); int result = 0; if (likely(value)) { - result = PyDict_SetItemString(moddict, to_name, value); + if (allow_none || value != Py_None) { + result = PyDict_SetItemString(moddict, to_name, value); + } Py_DECREF(value); } else if (PyErr_ExceptionMatches(PyExc_AttributeError)) { PyErr_Clear(); @@ -3904,10 +3916,10 @@ static CYTHON_SMALL_CODE PyObject* __pyx_pymod_create(PyObject *spec, CYTHON_UNU if (unlikely(!module)) goto bad; moddict = PyModule_GetDict(module); if (unlikely(!moddict)) goto bad; - if (unlikely(__Pyx_copy_spec_to_module(spec, moddict, "loader", "__loader__") < 0)) goto bad; - if (unlikely(__Pyx_copy_spec_to_module(spec, moddict, "origin", "__file__") < 0)) goto bad; - if (unlikely(__Pyx_copy_spec_to_module(spec, moddict, "parent", "__package__") < 0)) goto bad; - if (unlikely(__Pyx_copy_spec_to_module(spec, moddict, "submodule_search_locations", "__path__") < 0)) goto bad; + 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); @@ -4185,6 +4197,32 @@ static PyObject *__Pyx_GetBuiltinName(PyObject *name) { return result; } +/* PyDictVersioning */ +#if CYTHON_USE_DICT_VERSIONS && CYTHON_USE_TYPE_SLOTS +static CYTHON_INLINE PY_UINT64_T __Pyx_get_tp_dict_version(PyObject *obj) { + PyObject *dict = Py_TYPE(obj)->tp_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) From 76dc46039431f7ab9f22507a3392fa7ae0092fb1 Mon Sep 17 00:00:00 2001 From: Pan Date: Wed, 6 Mar 2019 18:19:33 +0000 Subject: [PATCH 2/4] Migrated manylinux wheel builds to openssl 1.1. Migrated Windows builds to openssl 1.1. --- .appveyor.yml | 22 ++++-------------- .gitattributes | 2 ++ ci/appveyor/build_ssh2.bat | 11 ++++----- ci/appveyor/openssl-1.1.0h-x32-VC2017.zip | 3 +++ ci/appveyor/openssl-1.1.0h-x64-VC2017.zip | 3 +++ ci/docker/manylinux/Dockerfile | 18 +++++++++----- .../manylinux/cmake-2.8.11.1-5.4.x86_64.rpm | Bin 11308385 -> 133 bytes .../local-perl-5.10.0-62.ep.x86_64.rpm | 3 +++ ...erl-Module-Pluggable-3.60-62.ep.x86_64.rpm | 3 +++ ...cal-perl-Pod-Escapes-1.04-62.ep.x86_64.rpm | 3 +++ ...ocal-perl-Pod-Simple-3.07-62.ep.x86_64.rpm | 3 +++ .../local-perl-XSLoader-0.10-1.noarch.rpm | 3 +++ .../local-perl-libs-5.10.0-62.ep.x86_64.rpm | 3 +++ .../local-perl-version-0.74-62.ep.x86_64.rpm | 3 +++ ci/docker/manylinux/openssl-1.1.1b.tar.gz | 3 +++ setup.py | 6 ++--- 16 files changed, 56 insertions(+), 33 deletions(-) create mode 100644 ci/appveyor/openssl-1.1.0h-x32-VC2017.zip create mode 100644 ci/appveyor/openssl-1.1.0h-x64-VC2017.zip create mode 100644 ci/docker/manylinux/local-perl-5.10.0-62.ep.x86_64.rpm create mode 100644 ci/docker/manylinux/local-perl-Module-Pluggable-3.60-62.ep.x86_64.rpm create mode 100644 ci/docker/manylinux/local-perl-Pod-Escapes-1.04-62.ep.x86_64.rpm create mode 100644 ci/docker/manylinux/local-perl-Pod-Simple-3.07-62.ep.x86_64.rpm create mode 100644 ci/docker/manylinux/local-perl-XSLoader-0.10-1.noarch.rpm create mode 100644 ci/docker/manylinux/local-perl-libs-5.10.0-62.ep.x86_64.rpm create mode 100644 ci/docker/manylinux/local-perl-version-0.74-62.ep.x86_64.rpm create mode 100644 ci/docker/manylinux/openssl-1.1.1b.tar.gz diff --git a/.appveyor.yml b/.appveyor.yml index 6ab50cf5..3b1ab055 100644 --- a/.appveyor.yml +++ b/.appveyor.yml @@ -6,7 +6,7 @@ environment: CMD_IN_ENV: "cmd /E:ON /V:ON /C %APPVEYOR_BUILD_FOLDER%\\ci\\appveyor\\run_with_env.cmd" PYTHONUNBUFFERED: 1 EMBEDDED_LIB: 1 - OPENSSL_VER: 1.0.2q + OPENSSL_VER: 1.1.0h PYPI_USER: secure: 2m0jy6JD/R9RExIosOT6YA== PYPI_PASS: @@ -26,20 +26,6 @@ environment: ARCH: x64_86 SYSTEM_LIBSSH2: 1 - - PYTHON: "C:\\Python34" - PYTHON_VERSION: "3.4" - PYTHON_ARCH: "32" - MSVC: "Visual Studio 10" - ARCH: i386 - SYSTEM_LIBSSH2: 1 - - - PYTHON: "C:\\Python34-x64" - PYTHON_VERSION: "3.4" - PYTHON_ARCH: "64" - MSVC: "Visual Studio 10 Win64" - ARCH: x64_86 - SYSTEM_LIBSSH2: 1 - - PYTHON: "C:\\Python35" PYTHON_VERSION: "3.5" PYTHON_ARCH: "32" @@ -123,9 +109,9 @@ install: - python ci/appveyor/fix_version.py . - mv -f .git .git.bak - 7z x ci\appveyor\zlib1211.zip - - 7z x ci\appveyor\openssl-%OPENSSL_VER%-%ARCH%-win%PYTHON_ARCH%.zip - - cp ssleay32.dll ssh2\ - - cp libeay32.dll ssh2\ + - 7z x ci\appveyor\openssl-%OPENSSL_VER%-x%PYTHON_ARCH%-VC2017.zip + - cp openssl-%OPENSSL_VER%-x%PYTHON_ARCH%-VC2017\libssl-1_1-x%PYTHON_ARCH%.dll ssh2\ || cp openssl-%OPENSSL_VER%-x%PYTHON_ARCH%-VC2017\libssl-1_1.dll ssh2\ + - cp openssl-%OPENSSL_VER%-x%PYTHON_ARCH%-VC2017\libcrypto-1_1-x%PYTHON_ARCH%.dll ssh2\ || cp openssl-%OPENSSL_VER%-x%PYTHON_ARCH%-VC2017\libcrypto-1_1.dll ssh2\ - ps: ls ssh2 build_script: - "%CMD_IN_ENV% ci\\appveyor\\build_zlib.bat" diff --git a/.gitattributes b/.gitattributes index 5dc33815..28ae93f6 100644 --- a/.gitattributes +++ b/.gitattributes @@ -2,3 +2,5 @@ openssl-1.0.2q-i386-win32.zip filter=lfs diff=lfs merge=lfs -text openssl-1.0.2q-x64_86-win64.zip filter=lfs diff=lfs merge=lfs -text zlib1211.zip filter=lfs diff=lfs merge=lfs -text *.tar.gz filter=lfs diff=lfs merge=lfs -text +*.zip filter=lfs diff=lfs merge=lfs -text +*.rpm filter=lfs diff=lfs merge=lfs -text diff --git a/ci/appveyor/build_ssh2.bat b/ci/appveyor/build_ssh2.bat index 518d76f1..6246f879 100755 --- a/ci/appveyor/build_ssh2.bat +++ b/ci/appveyor/build_ssh2.bat @@ -2,9 +2,9 @@ mkdir src cd src IF "%PYTHON_ARCH%" == "32" ( - set OPENSSL_DIR="C:\OpenSSL-Win32" + set OPENSSL_DIR="C:\OpenSSL-v11-Win32" ) ELSE ( - set OPENSSL_DIR="C:\OpenSSL-Win64" + set OPENSSL_DIR="C:\OpenSSL-v11-Win64" ) ls %OPENSSL_DIR%\lib @@ -42,10 +42,9 @@ REM -DOPENSSL_MSVC_STATIC_RT=TRUE REM -DOPENSSL_USE_STATIC_LIBS=TRUE ) -cp %OPENSSL_DIR%\lib\VC\libeay32MD.lib %APPVEYOR_BUILD_FOLDER% -cp %OPENSSL_DIR%\lib\VC\ssleay32MD.lib %APPVEYOR_BUILD_FOLDER% -REM cp %OPENSSL_DIR%\libeay32.dll %APPVEYOR_BUILD_FOLDER%\ssh2\ -REM cp %OPENSSL_DIR%\ssleay32.dll %APPVEYOR_BUILD_FOLDER%\ssh2\ + +cp %OPENSSL_DIR%\lib\VC\libcrypto%PYTHON_ARCH%MD.lib %APPVEYOR_BUILD_FOLDER% +cp %OPENSSL_DIR%\lib\VC\libssl%PYTHON_ARCH%MD.lib %APPVEYOR_BUILD_FOLDER% cmake --build . --config Release cd .. diff --git a/ci/appveyor/openssl-1.1.0h-x32-VC2017.zip b/ci/appveyor/openssl-1.1.0h-x32-VC2017.zip new file mode 100644 index 00000000..a23cd96c --- /dev/null +++ b/ci/appveyor/openssl-1.1.0h-x32-VC2017.zip @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:3ce4b05192d1b62efb529e8c51da0bce26614c8cde47a3e397fd1c19b2403eb1 +size 1695059 diff --git a/ci/appveyor/openssl-1.1.0h-x64-VC2017.zip b/ci/appveyor/openssl-1.1.0h-x64-VC2017.zip new file mode 100644 index 00000000..55570d66 --- /dev/null +++ b/ci/appveyor/openssl-1.1.0h-x64-VC2017.zip @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:c3592481c530ec3a74cf9e3f436a629ad50eeb820173482782e7bfee0bebc69f +size 1806520 diff --git a/ci/docker/manylinux/Dockerfile b/ci/docker/manylinux/Dockerfile index 60370986..a6f4f2b3 100644 --- a/ci/docker/manylinux/Dockerfile +++ b/ci/docker/manylinux/Dockerfile @@ -1,20 +1,26 @@ FROM quay.io/pypa/manylinux1_x86_64 ENV CMAKE cmake-2.8.11.1-5.4.x86_64 -ENV OPENSSL openssl-1.0.2p +ENV OPENSSL openssl-1.1.1b ENV SYSTEM_LIBSSH2 1 RUN yum install zlib-devel -y ADD libssh2.tar.gz libssh2.tar.gz ADD ${CMAKE}.rpm cmake.rpm -ADD http://www.openssl.org/source/${OPENSSL}.tar.gz ${OPENSSL}.tar.gz +ADD ${OPENSSL}.tar.gz ${OPENSSL}.tar.gz +ADD local-perl-5.10.0-62.ep.x86_64.rpm local-perl.rpm +ADD local-perl-Pod-Simple-3.07-62.ep.x86_64.rpm local-perl-Pod-Simple.rpm +ADD local-perl-Module-Pluggable-3.60-62.ep.x86_64.rpm local-perl-Module-Pluggable.rpm +ADD local-perl-XSLoader-0.10-1.noarch.rpm local-perl-XSLoader.rpm +ADD local-perl-version-0.74-62.ep.x86_64.rpm local-perl-version.rpm +ADD local-perl-libs-5.10.0-62.ep.x86_64.rpm local-perl-libs.rpm +ADD local-perl-Pod-Escapes-1.04-62.ep.x86_64.rpm local-perl-Pod-Escapes.rpm -RUN rpm -i cmake.rpm +RUN rpm -i cmake.rpm local-perl-Module-Pluggable.rpm local-perl-Pod-Escapes.rpm local-perl-Pod-Simple.rpm local-perl-XSLoader.rpm local-perl-version.rpm local-perl-libs.rpm local-perl.rpm # Openssl -RUN tar -xzf ${OPENSSL}.tar.gz && \ - cd ${OPENSSL} && \ +RUN cd ${OPENSSL}.tar.gz/${OPENSSL} && \ ./config --prefix=/usr --openssldir=/usr/openssl threads shared && \ make -j4 && make install @@ -24,6 +30,6 @@ RUN mkdir -p build_libssh2 && cd build_libssh2 && \ -DENABLE_CRYPT_NONE=ON -DENABLE_MAC_NONE=ON -DCMAKE_INSTALL_PREFIX=/usr && \ cmake --build . --config Release --target install -RUN rm -rf ${OPENSSL}* build_libssh2 +RUN rm -rf ${OPENSSL}* build_libssh2 libssh2.tar.gz VOLUME /var/cache diff --git a/ci/docker/manylinux/cmake-2.8.11.1-5.4.x86_64.rpm b/ci/docker/manylinux/cmake-2.8.11.1-5.4.x86_64.rpm index e46d896bce71f9c32c90359f2e8296ae11d7fa0f..aad454c5aa1effbf58bad52aab7346bdc06456c3 100644 GIT binary patch literal 133 zcmWN?Q4+%t5CG7Br*MG=yRyh_2+B-bnXcrcr*D4VyULgQ_{cWr!JAUgJ|C~j%Y8f3 zvX8goqwMN3V)QJzMObNr7&3stP#h&~0z$OO#aqG}y$>F&b~U3*WV27HLMDPeS42$_ O1ovN&#-R4-SMdix5+|7e literal 11308385 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%0AEh4~C*suUM88B>!*e{0 z|Ma0`<5a_n$F47G{`r1na6kCOU;EYld?ja4(wF716XUgdMqO3`9?XO&8xE*7BS9YT=!MvWLVybR~x6z{smZU=ABY-d>@UPlutJR?;AZhcf}sW z;{223mQqCpaB1xg@$R&Jv2Xky`P9ABp8ANRLFECL*$>=E5k152Jox@|q64wUAKPG= zz@Kg{TlzSV+JW_z%?$1uzmmf1O2F&O`PAoTc4HpzIS*UR#}q$?>pW6hhp&c|fP+Sl z@{og(+m75LK*-;J2|L+(>&fubOvgYdK5~$k^!!pa{uWdiG7GyYvFcA&ata*O&1)gt z87>&hA3q-OX!gW{jt+(dzO~tme|k#hHs_G>vDFs%pP?=wzG7;8xT3tEdpRXE{wtb& zsc|Yvc;V)D%21X_LmvGpf1qA{;Zof}=KG!dVh!m!;@=Q=ew^TZxIWf-nzG&?&RP3O zGvt?nZ-Fw!6nFIrhtROBY1WNfak=z;T|vjNMhxc1I9g^&xq|kS+=82!jZ}{vCK?k> zd}f25hB5vr2d5%oYaW!hy{Y-PoWUs<0>jBK1_f?+%9N!FdfFm3GY(TZE}NH^>VfZa ztsi=o%x{}yr?mP#J6_56Nj$N#KD`6PtlxPzAno->x{v;D7qX@_8S;v3Ie*CKDUxZ< z84vlANmm2F&%B3tt$G|uWU))2)M%36xek}!KfN2D(Y?Hera#d)LwJ7sDIAkUwT`~t2|2_oCDXB!C zp4bNvHd^H=v-6ZZuS=xWQ^_dFdjAodk(9#Ems0qe#d+O7SGog#=$Z-g23<@SLx}bV zpkp5Eyy>tOe{|L(vBlAeobb}f%>T-l(>@-6&V{VYrNQtXpm2wYo^_v-;19;sJJv(U zNM=apBeZUy==zB3G^>E}BESO(_&G%%M2d&jy&vi|m|D&DxF{Ne8UhTZ|Z*#F+=)ik|y{K=@OiLc(U8}H9KOLufJ5ZGqPDNu7x zCXu(rt~+L&38jpKk$&;^7wD(7(`&gFoi7~^b;`II6(c>7%AJUbmR{o8CNLDg!iBZ7 zufZ2PWDH`Ns$qe|Sc>}dA75$;M-TT}JQK#c$)g3Bu@%f5pwpsy?`MKEsp%*sA_4J@ zpl7#1H|~@do2g@}YLs~<|60kNk-yb**BxHYdbI9#)3YRfr$%_Mdy)iqvE8o$I-51K zh#jslq1n4?a$Bzop~jqVa2q~pQMXU}1ILCNB)bQP# zECJ;iN6)hVyh<}G4JS?WI;0B>g5|}#KpPr&t3_MZ>*KX1EPB|IQ=Aqr?i*}NPoqZg zh}fNv`Ac)}uH|)^%m=A(>z^GVgg{iuMDAAode*Fo>hBPB*QjoLaVQS*LfObnTbH znr8{&k2}S#;-{dA0L$}YU~9!_uL`e&Sf9yobUDIzB04;wsp$A$sK*07ridB84CC@i z70ItJNh!NW$7iI*CtX^ko>Pz#OSONV|Ld31rAzJ}*rK3h*t__ocPT5Wcni&VHynk= zCV(}n$G9wZ=@?^YCCr6P+P**RHZEU7r=g#WSA>z9s_AOuZ*UduCTIuoIfQfSmr%l^ zW3=t&G)2NEHEz@kY+L);M8%xzJrcT*w%Tt`BjkB!(IfctyQ=LUw_kCG5+w_bfTUK) zlG0^u8leoguaaJJSvw`A5U3`e^>qKHE*$ok4;e6PQ#D>MrQYue%0+D1XUI#cGl~ZB zY+D6R_tnm*!n$ePEN`$@s;lo$-xJC2|HHcOyj;lmz!KORNB$f~>jXRGlpdY*^^XyYhK^ru_uNV+q%IawfSBo8YYAweQcCkH_ydxzSsQMmHBST)VQi!b3C` z_%~B1tV#3v1h4s^2B;Xm?rW6MM4;fe(u#*NOz$kG2zv2&#>Q*U>ImMk6Aea62{Vju zP}JF>dt7$Ytz_o#)~P=w3G}eO^hH)4RTVSt$&39bQtv=GdREI}dQfusdMWnJET?Z7 z8%lJ`m+WlYf>3dak;E@6&BZFa6YsEn?o5cz2M{yNnLHGl*`1n#QrpH0SvF!~JgALC zd*JAeJz-^dvWz$79W6%I)B<3fA!H1zy*%9C!#TorgC`T2rD2*7TMXlfJv2w-*E5Nk z9pbCAM%yId?=H%nW|mx`LG*&wmg3qXTd)aS0DczNoqzRHw|?DxQ-E*zw7yMDx6ze} zLr9%la~`gZu2B4MUi)u>Ug>$UDe`z?7>bSwD8;pN{p;nLp_|%m%mQBiOvscYY3pF* z>!lF3?=`={m~{28!A>8pqjlq(QO&Iy>0yzOtpfi{gRQd*xW`(Up2D}(P4(l>VYg^m zr?S(}pY`YXEdZ#rq)7BvPG=hGFS8HlpEhJ6TT}7fhcSAg)rD@gA0%FU*{aZz0<(6Y zwM7np%NIoZ9VC~2)+AV!QL9&mJ&fkGWH}jyvC5eaq0WGH7lAv_RC6NnyGEGn*KP@y zW`^0>^Vdti%et8F1rD9>tuRx@(l#B{_j{!je(`m5E`*%TE#hydw-8syGG;PL#-=2# zh@$bUiv9&zqtoDFTJ75es3~FPT~dN=XiQ;MB>Js3a~e*2>?zsMxaT#?iq+7k#0lz) zBX0X0GaPyh<75iK2VO}n%mdh0El!SGZZHQBCE|cDwEB!P%5s*Np>Tc7f5x;(d?H{> zKQsN)vZ3>Ojd)l@>A<*Yj$mU~xyWNs5&XcO!fw#%#RwO*B=8_t%;=q6*vrHs@attv z3wZ`MV%@Gb!Z;LQH~EGYSVAQe>5Y3kFK(&Jw(#q{KN}m~+AgU$OfCar*n+tpH$LCja{# z9Ag<{j(*^#_jc^txyRrpNCw~WbQE?n&QH)uiMF`~+*NK;Nt!BS2$x%TPXGZ=K`11TwLe?+!7)}a*`0N%jG+MFLR!4A0 z39U@7_2LQ9jb{Cj9nz-+^Sho9f1x$Dmf{ND_5YoIy9MT9n2ggC?x;N)aWo-J?jq9k z6U(_8br|efbms#2aj#iXpt&0<$~6u|$C#%lw0dgbU(4VV4gKcw&csbX0z?$~WiaUC zvPzs%-C#0nKzuuNa%cwZzcxP&E@Z;l3O)bv&(2J*SsdU>Itx#nOm*3{-P}IkfK0i& z;pn)*srObav;HQ>te(uetZ#WLDz>L`EW8J)o}xmhxEt*Lxw|)H@9YTmOEp$&v9U|h zPk64gqUEym)1Ej6p=~rwiB-{wgb2=#ekanDzMX45`G&6Om1jYCslv29XThy~{6W&# zmo2h|zObzY-m9NkuWz3Lny<~Di^R@<()Yf(FHYe#$(?vk!UAq}gzWIe)U8u%XQ=z< z3nj*|>KM$%ISdy~#Va2^J~2Laqx6%~)m*OjbMd_*R0pqi&8T-&Nhh&KkE)GLf4+Wk zukz4DmAR|UqBo#33Q%+Y*2Y+W@Dx$1%Nd;Oy9^bOm8-dwDA!vkO87UBF!NsP?Iq~A zX2$eW*}Epfal_7eA7;V>>G0I$G&8F-c&~Sp!Rfuy0#PF$m@JdTF5u0^Q^l%=s9MKj zTy`vz*hwSl;?})ndEX6G!5z-JsnL9jiDwxhzB}5{e`1**QF;e;R0&*K2BW z?bKfqh@A0%X7#^Sbe7)kZ=w)+8CZ3gUYb_tr8Mjx={fhm=o$5r2R5Yg&l|JCh*ZP_ zrz9ti3_}z&EkARNa>TH@Nq~UvQ$9euUs$1@P>#&3|mi=}E53pu*PhEn@8~ z64fosXy#t*!f`##7F)88|MCCKMt?yUKM`MPvo)aTJq`f$xD)<*9b|8+3U9bZ>)m&p z_ZYi;E#4tsa)Aoek6alZtfbNg&c3rfZ*=4paM$7D#-P1cX3qW@QZvXJk)hcS7)DO( zCKP`0Z7!2yzJJ9LrGdT=d|o>dJ#z@)ks&$Sv=jVIqvSOEo_>2=Td8QsT&>-`KYjeQ zG9Rf8dmpQXh*V zU<~m9*I3s}d9JpJrT(A07`3`@C&0f_Hx`<|LETn$-Xlc>`5#0Gxa4}pzw{!;`K@37 zAxVSbW4#XRb9P9(^|Kjtt^a*kp+-EKrO>yN>JC51vr=EF_;!tE;mwZlIrGWDSpaao zda5e$4X=;Xh*AGmvPeSU{6_kF^lHgJIuQ%Gj|-7kBt}>&Lq9j)Ts9z^R3zYAsLWj^@l zd?>Y+@D)tnWEpm!;N*tAgn}&Pn^Gv(t0}421QJL>R+6iT+FtWcOi$V#>A{v9t3NB# zgfd^PdP57UNKiz5tU4dC>eU`>hTk7S2-OzZ!N)#DL3&;@#&_PdX*#ayUOdNCa>cV$ z7Wj=>wA3IkQDWb!8ng7h&jHp^gO0!yF7M#PyYsCn;0FsDsOZ^JH1%F-Vwmp3HPdUV z;o#o?`DnCB1AGn`zt;}Lm{w8iyA{7c2yYr>(s(&rCGQGHze()$=LnH=Ww}ypy@3J# zUGvuy*W~H9$jX%KGWrJcFnLSXgouegfWEO#tGFeBk$l9roUR406{WPgJ-n1M0UkTS zM)(M4eBZk8du$dofQE&f5}ihd(UbUO3{Zt zXB}i;3-n;GjU7eJi)TpZZrSi}2P71dY3%*2&b6h7Ja;s4K@`jXe@^J4>Td2S7!D&( zb(YC8fDYY~V9S(b&^)Szh|yk&$&b8ip1qYvQvC}!}|52FcBjK`8> zb8T>oa~5G^*@{~X{P|4!=irmXhrOW4ozX`^JzcDe3#|LBPTU;oCuZXuQE8_Bc35aH zqc>(9QeH&8ww6ju;P}P2MULg~g=k(Z<7pw=vrs;wpe>`)SVar;k51%*l!T7n)RA4< zcdA%{VT5c|*=H6w5IaYAZ_SDki=5z?4HA{8A&PqI4L}TNp-au6i`yetGQ$6Z`$%bK zU+h6^3BM{c$4Z=*;i-Eo{_ycORb0SNi^$M5w+>B!Lbc*O`j>kpQvNEMuerK@F#I(N z%&YggHU!8xYsGmQc4zZH!5UuGt|*GxriYc}kW^<+^c1&*s5C@^F~7$>ZA-wWtZTnnJ2yX#!T(GC0cHsF4iqmErLpR`Mln$o#(dyI)2hud{~Dv64g|q1h*K19Js* zyw)8*V4WfgZnse}Q0Y^1`o=5PC}KBvn17S=>eqCO237cTP3|n%s38qlP7P3lReK4e z`r&UW_JQsQsHq%L{1GBqcH%JfRsy2|BV;c7(sGDDhWKgS9k`H7z9T1Wnjn_W`z{|$ zcd$WU2_Ak6^3bGsCkwF8fb#r^x*b_&>{_;+pY%}Rgwu^HTZ74GE$lE_KVk>K&*nc2 zdR+~Cs2yrWv1-ITFuB%>TaC)~op{T*T&nj-W7RmrH`fm=Byn>*w7K)ZCOAi|39Ou{ zUouEk-D)639{9@-MwamxyR^A^0wbPPTNPJ~CPyCbebZ(Y-BZj~E+p(+=J#9pp;Mlf>tvv@%)^Zpx^mXOCJ!O;0?SruPpwwA*&>kFQuQxI5O&@V5X7; zROYs#Ly5)ngi|B8*NasB!SGX#>uA_PPKw7gAlg9~?0X!}&9TmY;5~5WPynL+e+Sw8 zb)DBc{cNEjgUi9&1@Xv&tzqr))0X~aPBHqW4wKnq+V(`{K<^+cRs&~qpVf0wAM)X+ z(|V&0(op{77f79jv(rWb`hP>QUGtzyvgrk)i2bN_?w}BOK|@4|y;d*Dd46U0-dmpI z?MGR7O<%6r^<>#7!3tEDlob~?!wn-sM z?6L`MFL5|`=p-+^84Nvt$Qb-ZaCSMofnQKOAgnP{2gnJtG0T!S-6=sU?Xnhyzu*Et z;0#3BD@7TiQXeCN4RNAhX~8iOSj&SjjgMrAWCw zfPHeD?EcK{5w2b~`6&IuZ%17{0r1Of>$!$4P*YVAR~hCo;y5w)`l*n*nzQ<6e7X!Y zjB}-DtAD(shq%3JK^dPvdu!+GhDtug^*1ZYaqw}eJVJ=5lfg&>QdEs8zL$Eg1zbea%_O@+`X6+# z@)bh-$;djfGb-qOj*Hv^&Nyv*iahp+S)s$ML{FM%MC#PI|CtvpDU~4QI}y`rg=}KK z?10TAIYV1wGpY^aZ@CL4p2WF#2AdU0HuAYWb6H!qyRuV+P@`Hi(!?BRKJP`ZoAir_ z($m&`*JG8z`{V#uY`n1il1{jM;htvumPx~$v+uJQ|0R%|F!%XVH;Yod?eD60t5g+_ z4-(w{c6U1B1wSQtb}}S$#wmKgD5!e$-f0LNe+c2DkfpLDQ>vY4m`QM!7*}$gzZ(nA z-yPD2%!hj|jca=N%%217R-d}bA5NujH;{urzW0!;`>aAT5Ee_>b{q8>>TB6^RFe3* zdET2nJx8~PSLe*1dBgFp!t3W zQO|7-4jBOaRdM(lh{qsA8BKp`*-K=cC4}Gx+F0lRU3a~sTDbR+<8#NiMAA6m7$?O} z>(lgmdTA7BLYv2joU9H?F?jboemISHnbhPA_;=wr4fUfpYx}SeXZauf0+j8WT9P?2vvF`~)_*9LT}aboaZi~JF?bX18nc$50g~~L zk)`{&{w(mB0<ntZPV9GDntaOI&hF3FEL2)O0zIy<^5I+o-eMG@Uk$ zcYTl9yWR=iaWcaAjq5w3!P*NAhT*hju@uy8w}-Ci^n`9j^T()u{^f1AxLRV(kDGf} zbQsq|00+U2S-+V{Iw1-G=4A#0I`$R&B~X*UR%$^dPd42Pa!p!p;;Zjnx;GITaC~>@ zmKL-WnYeXt$YVS_e*d=YB)XISw!x30O`L)RxL@9GRQXD=bFnJ+Ye26bqs4Zo<$z|f zTR&CtpMKt*{wsNosQus4Eww`=NSnaduYU0=N)5cp!Q|m*Gz*R{w}g77T{zj*%1Ovz zbx0O5`LGQZeSRId>w_pt&AEEA!zjbpeL!vrdM*(#-z{^I13+K#Y=c4pH| zuLMQ7JsDiagk(sc`NJdolCGoipAvJfElqL-$fXWbY|C_PWZuuH5!evv>CP zs|2Z6?%>m=Q_?3I9TlQZs`$)&#RQISbiUt_*Rx(%Hd6k})3e0oPnBf+B46_^EfLZZFsvhDgTn`+DMBNZ6u4)ST?df)rGw&2~Su&)V~u<}0_cUVR>ikH+gUdpY>*vkF1!Tr^AEXhlZHv->4ueke6B*2cF9;Ru1 zTpoesTFB;0&GZ}oiNPNkeaq#mg^dt&HXl@0w@9d@(HKe)ch6Y54YHIFw(G*azaTY8 zN=J$lrI~?;7BRO|6aX36s|m7dCTlju$WB~7{^5EC{Pjt`W7^&;Un`ddCC^T;>L)}) z{)d4I15LTjomU+YovJ8s=7r$PKHnp0wW92MHD|R5BB*SE;V-Ej&QHgpikQ}N2PjML zkLCdL=Uy(BX0+;us<7QrTVe5hh}cI%b8*6tZc zN;z1UePZ?pt``XZ#}r z&z-o#NijOknfD|Gi~8neul@KYMl)vP1;El7HyC!d+$a9}q(MRvMQ-R|*28lQ#>e8n z^iw@swYo>PEt?J}LM0!7HzhKZ*M2knZ;wRz*n_RV2aaFa)|J0OMOU3bPS3tJwC4xy zsKrFjAiU3Ra(;gRQ_VbF0+msrc*~Ul5#};JiPh1L1>$;cNV3U>#woKwPDYtIC67-I zl7sfOwa>Z{viEAnb#6z2y#P-$-=Fc!7PdaZtJoAYLnepaaw&0J@jJY^@Zr-P*1@il zvZz-XZ_4b?Jo+se>FAr@#8@0pzwY~uJZE5n*NfyO`BF#4PuHjL^(OTKpWN-!0wn0^@*KG@c#I#H#l;@81^-jn4nwkC5Xd&6mMR>AZblr7Tnn>+Wg`>eiYc)%qacV5GXRg4t2a**QSq36M3hleCHwu1v{vvT z{tIaev;KWLB9Us9zb6y-@GsMS)ta0z*&2yI)o2*sS%MvdR`5!pj(%8lOv4WpuKWGTgfk$=O)Oprrbcp)XRy0~*@KJk z;+`aFY#g^T_9Jb7rMPN*1yZ+tr!hxBU!0U*9bL-gri_#<4juq&4^TxUKE~E5fxey2(gL)FVi&s|iE{&$H^rd$7j-^;Cbs_Du(xlMkZAH9rDQJZ4xXco?J%#@CA3P-jHkbwBlP8YUgsw~ z5ctLa0UA6EP>NmQwb?AFRn*?4;ck@Sn)BY-{`+z+;DpP*zFr`?5=TCQ{oFrsbG;D* zKS{L5MI)Vb&A*4bMa#`j&s3hP%L__3Je6naYDeq!J+w78hVKQ`h$7e8zCmD#+LOgZy2wF94-W+LuYued~n5RB#2Tt6keJ>4l-AP(@ zzx>KXuD@3$aRokcV77j$Hd+()NfoZ`NDHm}i(wq4N=Q76-fL9;4e^QM zO1p1nCW+WU*7EWpuDeGz0>=ia{J(cpeJ?V)_A2?pRb5erb1<-&Z zn?AM&P_~S_$}a7oYV9^w+EE;bBgw}g)Q1N>aa7{KxOFzv0ts;d9?J>F~-2 zOWNN9TV(C`L>oVF*CD3wdcM-e0*sVVD3@AtUc_YjJl(S+k#r0~sp|=&XCPQE?@A1A` z=^ia%aEfQo4oj@BEyw*)p$5|Nz2Nj&SSoP}T_ShJa=)DnillN&xl}@t+-6HENeG2<3zZ_*x$joQa=#VHWfTdyCAn|O{W`hJWpkbDHa51| z?Yr*}`wRBo-sikt&*$Ueo458kZKW|+@rH${O_&9~KagU2Pk4FCiaO^a>IFdDXI!@G zq%`ZN>B$A`yqks;%2{@k5l$;r9OL}jhse&!U#ZA(+95>dA@~caHrPY(A=niC#rY+# z1Ik9eA79Kvqasw~=_2EX9U3TL?v@*NDViV+Ts>;EZkd~;`@7eT(jB0UrwFbDlb(vh z$ve*n1x$hiFv~fT1Em#&_+rk_W)!)n$Gwq~FFa7Sa)DLq<50=F5QrIBazu#tVjRxsA~e>C=NC*fOT3FZdr z!-X&Tog-`$p7qL`(Ppd8fa?rznt2P~{sRG={tr=!?B{N#;Me~n2~%6^kxzt+c8OsU ztY>nMe$r&WK`ww4;GQ1!xvuWu4ZJmK%g*50f+KMEIB9LgIlfQeebKCKzx~W`=z1YPe2#ZiNJw6 zmAuGY!Ev-BB7yvm@_H$xT%O^IdhT5B97Qt_aV{KcJvLR~V(<6pA?VrIa|+}ighKS+ zk{%B(R_6TIvWVUYigdi1Fb_>`o>ncI@{`4ILQVjufm)Ew}`)L5Mu&}lw33pmO=J#4*J@#!*Xv(Ii2><_L_K|rcc zVCk3Ge%hU#4Pe^ZVe@Pw{J|ivYnf&jDn^R5=hG3l>gYLA@E@TyiyqoRWC7wE{I&y1 z99hmgjQnC@dGqb`2k?RjJZrN99w&Tp&iQ%fYxWi)4Mswm_ImOa=gWxc;na1bp zb3L>3wN1p(SGZdY^;Tr+JN!K4Oi^%asKxxH)y8RBJn>Om)}QhZK_dCUIN$TTHs?c| z%pS6d@Fm``6)z;bIPSb$5J`4yT$^7K{syt8%Zc9#8_ktn>&dP-xm~OAh#=!~ZyEY* zW|I~S4Xm>@mH2wQMe)|L-Tcw~Oy9al8>4weEP5EyV&2{Jm(DrEt3vuwvkSl)s& zVhKWq50Q>^=?UH~QP9Nf^N8xAOemxB;zj^NC%f@e$Yg;QDJ0Ej4mJvG{LvF3;(r>p zb8Ch0*WT}9c>iZu;J8eS!RUw$Tq2uT>#b|yr7uEUdXah)rg=^#{L7Q4=a)=CO|Pd# zE7mOV&o1tyU-<+I$$0^+9ie?_g1m12*pTQi5Prf9J;ev3#A2c-jhAL|3eX3hXE}d| zR0=m(Qp;Jy{`wTYts>HeJAaVOyEu_gbciw%`K}wZZok6>>cv;=Y zPlS=cstv%V68{?{vRrqE`|jrR^Al8wkc>B$p7?ELQ1M(exdGIgw1S+o>?W$aIi_&n z1m0V8rWrnK;T>K!wP$Cal-OK|UEhupv~2w_a+?!4B27ypJGm+ZnamyvBqcmPtRBmU zmW9Ev1q7xMe3yRWy%~N`m7#TI4O+-$TJgtLt&+PDaeQTSV+n&Q)ne#3$8@vR5R`v; zcwFmyRkU*gaQ@cr){I4_ZxAkHER!k|XrTMf-^^3;4(7+PDX-oanP%(D=38rrEHqJ0 z6247e&uvY~$p~NG{td$O{_OCo$#c-4^&h#J=>0tE6OA#nl#UxOp;L=wlo861)cX`R z-!hh$HC%dq8yb{A!Nd`=*&iD@`{mh$Hf0_RFQ$^>_tgUvQj;+qe zyIYI3yc_ZecFy{ZGU0B=*K2>@BUe>-el`RAFtZeiT$g)P1x!yWcQ5;rOX?Tf{kj=l z7aV!t7vhQXVgZI9sXp$REP}B=xx~O<{X@_kx|Hb%mn~E$)%wL!1LF^(3p|&P_5J+7 z9)MZSBYU+7X=F~?9TI3QVqgybkw+AZo~3B{^KXWe;w+spns76<6*L7{+~ZyO@S8X` zJFNj$IYRu{^h9VW1IyX357kIK8>WGan0ET!3s(hc7U{ZQUZ~4u#6#au16OBxlO7qc??}atNSbSh)L=E+>gZC2wAxL_tNQz3x{mCG zw}QI#o-xM^Os5>}dz}!dDh2f3P+ozINBaXeYug#>th+#Z)40jRIbJs~gLqGdUHiME z`vJXlL460IJdK;EJ-zt(2kiozBJK6tr6EiJR_<57NqhoUG9eBbUUgi?kt$mKKg9TM zVXz}#N>~|Nz7x2&tJ8E@e}}cX9b;3TM?x~JS%_SPhcjpAx(j&17SZ4*7a{t`XAWmX zRzwgr%Y9=scKJ!L^-+B@=xQA2@R|CP81e9P%Gp~JXp;pvz+B$uuMJK6D(TaofSdz} zJ7uxN!%2U4uCURyY9~YHN0AfAH|}TKUH>&lg7oTAw?6Y;y@k}LwbMyy=MKu>8_v-0 zy+N_Ot%YfcIi*{HQIEH?B_&`^)@C|tjAJzhyxw%poMDzr*SM=bwjk8DD>G(RNIrcgw$Clz)`KhxIVZUI9 zt~dbwlo21)^uXyZINNvf_{7%OXW{5e$z0NCOCb6%EJD|HLU=_&I0j{KSnS?&;Y2MN zTm+mpC1Vu65x#$M$%y#$vj=~nqhh0lIv;RsxBA-YZG(F=@{xY(pxJoniJuQCdSpMK z%6ITu<6Rls`*JNipp8Fq`dc(u=aX!AThpUukhw#TE9P9Vnu^=K%Ys`(8R2@v<~6?=C&+Bgf3H_iq($m+87#8stXS zZ4opQt4C+Ig*q0Y?Q`_oB>F|D9qsR=&F2(nW%==I944%!^_Eb1(GR(J$lrAlX1`4^OmcTJ@EUb{XS`_KVvx;H}e#5S5qioMo=5>;Mztb!Z>H2Xi-1Y}^bQ z8o|R!1~eP}ai_ShVHKX5$Z4nUO)+0pj9)!ae#dA?bGy-Y>^8gqk(SPIjnpn$GiIy8 z)2w?uK^n6-jwI@=jlOL%2w7rrF^?-<3WraU-RcOOf4G(b;hw$Gr(&-VnmFGE z-F=80n{zLIg&Z~sX`qq2;E(=7xY8S)b>b`4Hr;>Ki_h(e1pA?Y$TVe0&6s9lUS-4X{LxG-5VNFkE&+l9tj|V)0i4y3IaQl3>v#Uq}7mA=(DRfH91ZdOlnWs z>KPJrnJ?*UzYiD9gwA!6k{h1Y;5zK8aHD3Yz`HA#V7}xa*G1nDGZd)%1EW5*^Rd_< zF^W~srN$9-CAH^RPwI|gO7E{tzvsU4I}CGXNUG!(lR{)Gafd|H?pQ!)P)^s*FSB~v zwIig#pEz&-S^Hk@z7UHDAuF=WcY+yujY?cSPlJK+8;rX%y+U2^YWoFwXEhXO2ZjQ* zm0ep0&_9SW zZqhnLZ~J1yg8p;IH@fD~sQ%7hR6KaIU({zsh1DbZW$Qu?0#~IqvW? zAtCzP%?ohxl_ysx(rEWse>KULkzQNj1_P=~wR#UMN9TZyxs>N(&+%|Zxk>4yOPTwB z^@Evm=IoajAv*f_H^>(k{Wk`$b%kuWELqUUZ2nRJwMXW4onKWh!uKG}d#6{CTk<&m zd6E2tKJH1WARTgkb{qQDqbuY)7707B>d+f*jZW@hN=-R#fOUjeO=p7D=1+}jAUeWg z<8`~t_F#-s?8F+; zoG$9BeS)pLH;Ztni&*mSab3&`|IeZ~2}(LdbDhz0&HmXP;{2_+b@hwGPd70RvOt^V-6U-r4Q+S>MNN^FEF172&?swJsf~8;8B; zyodh|nH*bg>So>^y^TqJ=A?M4!tM z>nb{&1I>mnfnyi$Z%^G{E)yY@4++#qe0f$Cu^^oRj?C53=^U(Ynn<8;T0+1h9VlyD zwJb699KvoPSQB71PwCNUsFTKN+0DVDAhQI!4g5&*RxKadhS9u8z?apF2D^ryp?Rdn z@~{%qLB+raESHlW=c%W~SD4Ex)R-=iZ5p`$+ zA)6e|3NV*p&H4eyPs!d3n|K@?9+7q2czsc)m6{4ZaEB-JSl$1Z`6Uze2q;=nx3HxA zN$*oiK0f{Owg6-y4=kS$DbwCf%~#!m?bs#?90@RzeHmkUnknE8sYGXeVqhJl7*hsE zfTn1BV6@9quRe$x(XoYo0+*-){#9SpXBD)7h(&p%SiTCHjbltMC5%X(q&UV1vRY6f zfePa-e`=i`n}QiOiD+NwKJaDO6PdsH9v5jHVjj8FIzr)eXRq?Gq3XT0ls=5fF^1KnbGgCEMdxf zKUA78oR^VKOUl!y8tL2f7Fr&)`3mPo%J*D_=vYkurWQY+CYB?Q;Tz}qHiL3;093yQ zuuzI4?`yUiOx!vgeZmO)tZa_Kd*j5Isre-XXmT{(AcS^!GnzFqz10Te!?%@8XM?95 zAA8K$W@2CA7?g!y1jiplKT!B}MHhq(O8Lc$7^&;yYVh6u} z0?U7zRJk!_i5&Z1PxWRhP1l+&yR#1jS^ka8l?m`vUZxUxzGC>uz(UYjZ6z9>W?1W7`~mfLp_{{@+n?Dmvy%8o(t9w(L}l$ zhn#36daZy$!_bsa&tgZ!)xEN5l8K)L!oij`_Wfn7ryH6rq)gUG4trzC5|R1l(e|^-w0=~vkK!qAwvAIdcL!?Ob|8sCzE*2 z@mi|>^%yNx@I`$=hm(ky|^;4Ur}nSyb_DZjbAu6Bp0ytt(^AZ+g|3r@6|7l z@eLZhSLZ@Ce4RqY+|xYsuvsHc<2Kt9C&-p1Z9C20&*wvO4x(&E-A}R)fS9?x0dyz7 z%O#%6r`u}Y*S}n4IBOSS+<#E0sw0tGOy1VbM7{JApmTd9QxR- zd{|^AnggEd-RYLDp5tZt{%H1&JydGHXsUZK?HDG&WPXIOF5IIkyaQaFNc5 z>sG|7X%))lC9f0doCuD*^lv)8yv9#MH+VlWz-rXa%(3txV&CLegz_NDuF((4v2DSY zslh#Zu(74_oRIk4ygHklF~&^xzZH+{eD?3qu8g3w!(lwf5#P{;GwO!-7Ttb(Y*6j5 zjeA=>RthcYn8y3Fe)Y9_%Nhqy7d4D{ZMyBfdJ(Z>bG5GjjUE9fX{blO_Lu>zdq?-p zR-rmqv>l!KXK=%};tmn&()m0Tto3QV)a%}F#K1%19uFTor{nypjs9Y0fud^L7v=a3 zf%7u?4N!S}#d*v37C(V}Bo{fduCrpyIVXb;m9#Nm^t!O>-OHC2JL=&p$ak_^NRlio z^!#FOc}vv!?}xw&bAlDa1LDC2FKo`{u&x;ZvAT+%XsyPL`qnBk*RiYsp@Guh$3E0L z-PCBdSJizbUc@<88}mU=BX!&c?t0F+9U0mhD%hxq#arn_EdF#mFi^-O2o5HdAkLg% zVS%q%e-Q8^dl{Ao;SbPI(t(xMMdf%pH1sUZ^`)GmMZd|57q3|lbXp$T5VfBa5)PO@ z;jR7Ft2+1h&4Y@dl53b+-ALx;#sk5VO+qwNOi9L_7X8ezCc;UDLH3>}rU zfGIIG%TtkJzoF`%2?tT^V!kB00&6AtE7P3XsADdxYSB%)FW0hz3gvqoZIFmcz^=rp zC9@qnG*ZYg&33+itrI47#4z2vgG)WDx+2=C*pX)W@sh4&<4NA4zxaR><=aJwYih#@RBb@ zu<#}z_Ub9JL1DD@%&Kxr{aSwO78*LFAs?zAGlq2&2oFDT+1YL50mXC_)2BjB>e<_T zq+uTTrm3;8T3-C`ezxOP@M}`9m2jb4XsOhau>4&xx!D3HuSW%}oM=j=azCsSWTeNJ zxbMJpH_mQkCU;+;ka}gtADER2N(D8F|?@>D(W8`5UG=ycQl z$kPOeIKylm9p|^imnTTaag$1n2Kv2FUcbj{v8aYafnaSl6T|vy5b50bd)}ZR8#t%6 z&a6C7@klqsM@APczzs7k3mC2x)j{ecUSSa>Pl{s)Z8qq($mF-aE6tD57(lLwH_G5YUvD7KwicNM)IyD#d|96PM1)pj&zb;&RLt4|pp2uqyD8J# zd$l{MEo#r&aenAxraY(fUg~gCxn@P>3A*s;fBbO#m1*o4?dJ$GcaE8L%q|72sby9K zZ8?1|oAniy|Gi>yx&k2f1-b=}aM%vJ*eNND|D*TSbJY%tUXk&DSMrX`o(XcnJ?%+%n;+3^kl`7qs)PQq!b{8-f^k~M+(5NGt>7us!rJ_5m zRmM2mH%bV({qXP#`P-_Fqe>k~6>`E_b|dkFIDbvGu-3$FPGmi~Q>DsO6N#@xH>YD1 zlRU%-jekhjE%kZdq$Hc+Z#PpAr*~asByVnO`+;_;2yI>SIewT=xDj|;3td&zSFHE5 zGi|%xM&pK@{Hypg$O=9-4^lh2K}Xap>x%d4suOJlf+syQ2%Q)8WL23_{g~q!6Il81 zOaIi<2fPwg7JHqycfiXov3$TAhn*sTX|v+jgIFKZ@5t6w@eM*w-U3*+-nJ)uo_YLKrnDe=&pPB)C`bFoa*Taf_&PyeBZ=JBy8D^$LoL zd6an$f`1)~Q5;XV;fuXOmQ|^O;sB;Bz2(j-YWvl@9q-zO=T~mg@=f8H8AUB@8DEK9hd}S6 zG;fkaE_PMdd^ve`IZWx?^X{fUlN;copg+v;cz0++0Uz7zxhxPp8JT-)C)A=P%1LwF zKsk0>uuKrwe`C+~fn4Py0X9iw6>Yuytf{##Ym8v^stmw2<%_iS%hx0j8BC*yd*5h% z;xWD+^k=*^Fkn!nKYhm@0$JG<4*HGKI-X0hq&VDjj`aC(lSkZr%?_u#hfOyNVHZR$Q22bIU#*3oL~;%4>bW8@N;Ymw=Pg4mEIazD9@G{ z*AN{NM8_AmY*pRLuVf`CWM(B?ro-wzBxqBx91HS~Dy|;DBwl7T`&0vvP4y2P31$sNP=H$am{KKj9TZXg_-KS^nb8wu4`e->A_y%h02T5clima~mm*6_8W7 zun?ies-H0$ORnI5MjD2?-SlHD6>Fk0{Cr9I%f#YERqfD$EKNoAtGVlY^POGI#%$9M zCeV@NtSxNI?mSe!m^DNYutOe1h@^)>E&`?k!K6ps8U?e?>OZG!BSDhQl@XsZJOhr0 zYr@y>ZA+-%%`Nvc;3GIvZGO!=_Q=+0JfC^ALHzPOcP2o!%dVUD8 zd~Dgeg7JRAs*HO83mY!rEzK#jq~Z#P4yPvXJt1$8VI5nK_O`VjikoWRL)n0AX9D8 zIK-*#Hpm>eNn`EYW+_-qY#E>V>x%zxqUI$1>Nfs6qFB97zvcM&rneCCVTIDL-cMuM zRn<9A#aquj9zr9LE_UabK~|S8`b(C8aG!akJcf*rB}}|}bUUcpd)Ji%Gv|d4-C1cZ z)(D$*EXt3FwA1*sW~T~|$T1ubRv*QUglp90ade%n_(iPRjRe;A(|Y-YMs>*HrxvBL zBGuO^^sdc&T;h@!lmM;PD zU=6hO3t_M7P7|TpAE_a8=6QB%H|lch@5*jjUWKe*8;wSjo#YWU`4m^-Vv&D&nGQNj zx(t=lZO3qM{t33duc$@4m}QFuWv*V@w(6aMIXt>2O=gLxal9$zlZ+1IjBeTq4?W+} zl`?`=;1X;y3)WU~4_0KIa~tI@?lMZN_lT1NY5A&exh6n#=}@mpImuZe-h+N3Y^+k9 zfLfG{Z@1%Ck z3Uiue^^$Idn1j?195QD!SRbf~dpJp#+pE0vas7wPfRXz2Q|Ib!V{WKW^J9dYLJpY` z*fo<+{@w{<$HGAY(Y&KdoD!D;`TifyXP5jRA8ZAGKNhX=5bhA}t6)-!4REBtkz4dW?mTru$;6210e@? zSLZtFoL|lu)nZsDHMXV@nP`U@^n8P=Zwpda6Sd_rE7(Jh_5=SV?lHBQ|)O}L~oIx$NQv57M*26_T(a{L$Y5o9coVyYc?fW&C6ng0C&Faq;V^K z5an$-A0mly`%D0;eB6SM{m^7ww%4-k+&nQBl6|0A-$`tH&5DsQDL1V#NKYnA(eHkS z+iGO6AM9tVj(X^j`Ta7%aXaK+6v%O|ljTSdGNjD8lv^6?9@)L(Ew!j>zmmLnd)wd- z>Tco@>pYZjZDj5PIKN^W3qREdS#q1HO1$;_jVE74 z$0mP#A~yWnc#DM-6faI5FHf{Nuy_R~v@nDN9l&f`5cEJiauP3tr^X09yj{%x{G2gs z`$fDPgH2&-GFx$KT@2;~KKh#GrOTXV(jreT|3@`m+sqYmjq}- zoZj=7yBMyB2x-7RcQzL3YBX12=;20K5v;|}Er-b3*2|kD0+f!^c_Q`6;tgKYa#X>x zm7K0r1^Rw68ln-r$QqxR6&Fr!IHNSq;U2}#3oNXICRLcE&zbK5k24dYKl}OU4gsgE z2+-<>Q@HwJxhj`p%yD1#pco6N7#dSD%Se~oFpK|M{+pn^vb!jalTSJ%%nMYF&h^!x zWoDyx+=C%GYuV2Rq0fv4Q5F{m&V-)6-A-Br+p9++R;=FNB>un~Gt|1`=B1|!oU809 z!^d-ora6mKYcMQ{YPxqWT+!O;QPT1|;qs4$NhIu?(Gah^H#omqZ`T)gE@ocb1AZ*y z-39wQh%b*0k7=Y}@>kbnknJIARTM?e@ak*AZ&YJ|)1XrELO;Ebs*eE#>={P0N@&D5 zS(y*l$##t>Vp2Qaw$2hSKi8OAAaA?HtQHz971a*kN$XQ-XthMZFV%ZU(FxLe zjX2-4&`?(n=by`^a78{T@1UGihv^JER(f9ysbeR!Sz{im^;J`DmF*m{9*SD{Ip$tS zej>48a?5@}CJo`{cxhOGG6i8la;u1tuAnh}Qbp3q17Wbsk;Ersn+NozA3TGG^A~)i zwcqL+5Bw{)+&sJp&XhYVO>8L&HDas@jfkEgrdnA&^)UDs3qD8v`Y?M~PcXnkGli;* zUG8dnyAqH#mJK@SB0i`l9Eaqw@zN3v#nj^o@Rp;_S$vctwrk z709yqK$T|za564301fyqv=B*eY#7MK9FnDq^nhRqD@& zj5@NCgogO89%`l8VMVcP$+*I;fQ?Rt4_iQL1jUJLQi;{4H8LbQp6 z{cGv#9zyX(PLFJr`750C(4gI(^F5JuNw1xLrRur$B;tNVI;||DZ*D)UIT^lc1SWwS zROyYf<`e2NtFicguhVxC+dWTK<_4tdG#K9nX}e3Wb^*Ac+i0?n5`H+R$)2Xc! zfPPr(Z!&)z;&xV=oA?&PBf(7(6R&#*hzy45@-7v~44Y+FA6XpFz+B%*I$3XC(P6@>G(s?sRq%`mb7S``b8CSK6s$?llB2Va@B zvX&ZrWH}6G(UjQPbEkQ`2=_rS`}XORID<}Wcxo} zjymOXr|MObAj9)TsE(H^>B#mcKhX_ov*>Cz+vDo}Q zW8-3pJ9l>Tb)BPW?ZOtW*>41ynlAQ{xaw&$Ki@H9i}8}ZY`ze$_DFyBg_a3(^c_%mC;y0gn&?7kGEh-Yvx0@OHS7yi4fQfsv&E^HjmiJ^V$cw_BR18VY@X*V% zES20J=<8Xt4?6{#$e@kpRyLT~wfA3x2WRX6I~ezoSRsk+Xs%&M&T1TQB&+UpxC%_**E2=*JuZ1n zHzjEDKHEp4@MQ;ZBGJ)lJSN_%rDm`%?5F(M9ruukcL1-bR;r# zcYW_66d^L)#Lv*_`!N~Hjue&f+{r@?=DavE%Sn)a<}v$TJ7CtsACuJsT$SO4o`s*9 zC!R+x+>n|ObP^ae>bDt`eN7j!^pma0l%{>KGTY7Q$c~VGwew#v*pAlMjrBv)U;>=_ z+e?w*t+-d@-|SOEV(Wm4(|6g!gK}(S*J;@7jeaftHw-^dJyQEpK$6eqK8&V*FH0v^ z#E{vQ&Waf-ko(bzCbaTKLQJ#4IKvncAB#0P1FDh_ zea`T#O95TYV5WjV@r`mjht|mnMCQ1_ni>3-7|!>i{A;4R>;9iOZ<}YclQ#h2Jc?lq z;K4%Zb`?3IVx=S8{pl52a8(p|vc}Fs$;GyfnW*3<_3tnOvpsxmsTKKaJtiJ^O3$VC zC=jRGR$t1^DbrFYVy2zcAry?HoQ6j?U3w5&9Wi{;ZXC5jJ}#oa&iEn!0)7Ce61cE8 zF}SZPOKAh3Q?=h^^xAk=`@SafgB-F5w!3NPN|kdP%Dw0eU;?Kfwem%3Kj;W_fJPTP z$eCg5@w^5PY&+~mQ(qf6&&zC%`(+OfoS*^iP@K}i$h<6b7fc4+$I6tEOl^8-Cg^)P z1NY2DaIAPbZT(`!ILf(yt#jum>PNnC;HPaC@uGr7?$RftfWH^yXz{}YF?e0%4riST z>5cq7S;y5{EB5TBN5(*Kl< zc}X!LN<7!Q4%ud(%1`lf67)qpYg$TAV?C?6lBZtIHey1zVtdb!3VhQH%Mgu)$m z^nQKQ;Mj6*T*wWkRE=m$R)c)u0>Qk#eT>oOHWG|1*qHVN$L$VX&1m{wtXf)q5(h>T z>TJHWB;$*5dM=M}|M^$O>Y16!LAWX0o?Ae>zr(lvx(nnUj%LlAj3Ca45kiWJA=v-w z5rfI=0lqW)IH(tX)gCVU4TqtZeH_^K6SA!f*{B4(Fw7}ye{Yw|KPx^bL}jB(bO~TK zTc2mhn&VCW;Y~k4t=12mVy{vpF8zCXi+7eLkpBMCIek8UyRg_ij8FZ_t4OW&M{*h$ zG{+|-KNoRZpyxLgW~n!gw)_Xe5j62O_0YN;7}`I|kddOU!bmud6J;26Kf8X&v< zmH4i-E$}(kZA5TO#l3!3IrKcH)KLPpp?83s@z@_rCD&9U-OZi6oEr$;O-n37IVAZ@ zSHP}sugICC#4mc~BNi8vei`jS}C z#aKE{_e$=><1MOc6Z{1S;6(66i{zMubHh{ml9Iz<#k**T zeyz)&NOvCx@I#-p3li+3&pgh3ye05fbMl{n!t%NA0TWAVb$-jHPq7gaO3owEOU(<=LABo41+}lZXQTo!qX7F|o_HW! z&ftVGJ&`F)frTqBfK|wyb7R(_Dxs zPxjMObZoD8O1%@@9-qEz1beAPWKiCULWG`+=n6jY24OqK+Kd1>vq}< z@7l?AMx$op+its66U+g_JU`q(Q#(SenZOFI`S*J`m`c$5Ftz?$OvsBiRNX#=R${2F zO(%__WHxu6VH>PE!@o%k_qCH0>M|@ov1dkv80yk3WNX?zjVRu5$w6AS+MdFy*mewb zfzWyFJyELw{Ea@R_yc=QFQU}8J7>P3)#J~sTId_rDo7HL9S`+n_OFbT_rON9S;pyl!d3TSe9j3#CUGS95Pm><$nopTfm zZbP`;#5gKdaPHaY1gOZ+^nM+Ll`hjI&G+%Imy3EIyev)~8o0J#Aes}iBfId?w-(dN z8jkx2s(x%-LGo?kM#Dn}t9=83?K*mt@9(r``M5kYQYB{cVXQube_b+==iO6>S7?3scI%$?`kP)dU5R#J77h z|ID72qrP(cTco&UkGvPdivDwv6ajf}9|3H~&8ByOw5jTL({Hkuz2+q=sJ{XJ!Y56> zHHu(*SH*D>O;dN5X@+ji;rTgyUdXauuKYW)zDj8HUFUg|yKpP_j#{SKaev*WkqU4Yz zqzFlJ+96abAtV*HM5&ZvISku!PK1)=v?)o>q;lSJobyCZ8FQZV#>U1@U;n}V!~5~R zulu^5*YjoOFswt?)}2N*Bc72qExr&f4f6fJvTPQ>)11f#gIN|uvNUw@-^F?Q?BzcY zqaRINv|ej6Oz{lLH2?V>t4$q3x>$oJ&((mutg$e2=uK$jMHKPjE+78^Vs%;A)5{Q{ z!XsVjP8(*hdFueG{k|e40C_Z`cca#Gyw;3;DaB+^%V<;QeIl-C zC*?nel3M<{tN+ZI#rX4H{Lv@imB|zrm>kxYlE}^#PMS`wb}`&yE_Wj|Z%2^T*e@YZ zRaifLA_l$(=x#&3G+;~i@iPYoRVI})VFx}V!xpu+##6{e*VQO$=hCi&6DVRr$o}mf z)P>k-vamRkNPFHEoLVMI{HuTN)q?Q)QV~?_G9T-T4ssnuhUzAr2e6cm{pnly!+JrroZtR*{D8blpl*42prUR?@Eu?&QjJ zcqDo9vA@Lpt;-^UiFxhRdf63U@~_~e>5dSv#Bv!UHgPTYOM`Ke4GncuH~nwKT0yM28Nnn*s8$)bvi8l#l5~bKSF8oS}lX< zwMFB3{WvyD&4I8z;9Un{NnI=QP`=>e!`?+J;JqXkQPmNHiI!DsRF zE{*7)_4~|n=2<$TWHpq&IWAnQtf0U48mLlWF)hu8nDbSP`X`#RCWi${MU3l!1COwD zzmKzJo~4dcU$-C$$XlAYxzPadEWBS<@UF>eStIQEmehEG9bxED`WU#S`c;+Bq;S6X zK4dMI#^CqpiW4#g+=13H}U2eF8;sZwHY!mf%>lz{`xP& z_8+8?-m@}dd*NRMIswufd=k|hmF7AR|I4(oQl){*6k>{hG>6i^?p&1KO_mm< zUkxB1Hgv~298#c_>|7qfPs99_p=*aGvi3v2Bj~Pst$N2IryI2bgH@ik^H*U9%axvp z3ts5{T8$bHo*}V|se7_=wZ+Z<8XbNvWpZHUkTvZw6SXi{aoZJ}&X)1tzk95$)ksbQ z+n(}8!iaulFAtB>efyr+qX1hc3VzFytD)upe6w;<=%Yd2yOu+zB5PxM_yg!NxKNz~ z1$lX$Ke+tj=^mluR2(`~m(xvT&;gPY;}xG}mgGa;|Hn-yd|-y=dlG)exGAsB)IaUB z<6lKA3H2&fmi>-|HQ|Yf1N;K7W{fSqjRBRk%3;nXuJ>cM_M8B2&P zWr;r7P}h@xK-J{5I0FBS>ZMHRuM^*h6?Iu-V)G!D~JlA0#;N>{Z*&u6382mpL^Zg?X(I@9EqkUl^jQ{8) zvd5>mN?uLW?#h~DfNdtIQLyvaw`7LhSoZPErj21zScNtVyZ!*%A1f8Xwf8z`dgW-EoQO>u(v1vY@*^`ZW@Sg%^@k7z9C#RCxO zA-cSG*@H$O|VE)Hb4{>ofsjaqM@A{X>Nt=_7Tv72R&`lVM6m^qNH z=ilYUqgvnY);y%PIdFTLBpcY3=yW@v?X1Cy z^$)R`J)5|_bw4;#>_!+TkzZ)4A2%I;K`BR=ZM3&*`852uU93`c|JmA3N%<#FQEDlr;Mi{B4Y(L`UBb z5?Tg{Yx8yeP$W5N$LWTYr}PgqW^T6OL1L{e)mt8Os||Ix30aMWhofy7(;Rl)U$s)U zyBSI!h?&_u-ZpN^-?#kie)rbXDaVD#Rne)M6dtV7?Hob?dcV=|Rdb3smwFb67M@Ec zrvhZ3VA!K0W&YS0-!4 znm$@}bop=96r_V?d7|oRLMD4FP&7_*PrG0*L1rQ_{>h6{(%p-8fi`U@XJ-4s2(_Is z8S-hw&v1}r##vjB-+IAz?_^0`t(ESyk|X};%8gUS1H*=KD}_kA;!5gR+%2QK<98X~ zqN|)2YaYtrGKCBcsIXaj0rgae0OYDff`u$en)}XmaBE?`=C~f|UX$SOs~Jo=)4eT% z+>NoF_nN9IX=d9`A0HXh&PCx$3uniQ5))O;?y4Q&t|ceZ#I>Np|8a4*&7!9}wYUtd zyb*1al7fj0E1+xFu}Ak&1Dqp?Zq4$3AM8)BESbldnSw3}e@7ooCT4JZB|n((A&o!i zSNh@ij9+v666G#R=goIFhn_W`pEKmE?>J4tM+1LDvgYawf{O z`M)9Z)l>rIT(PFRvCo}W`Xe1q)Db()el%NMjtsob%!5og7k#SA%P@(EsEok+q+VyY zw!xYPJiE~^%T&yzHP3IZS45WUZS`i+@K05do{d>lYu|%df1R%UIRHh^P`6^dlB&uK z+T;j#^yISaNHRT*#Zy=%|=S4H%~*RSPlJvC*AzdGrV#lA;?&05~8zoW=AsF z>Ygrpd;y%yjP0!svUrajv-Q>b?zRX+>ipLmhm$3z;zwU1f9PazvA@QyQ`-;2$n{`O zY13x6*%RuaEln1P){%l#r4?%=kl}Dnv>sYQ&E!W#1ll&U$M|e-rfO9}fNL5Nt+c~b zJ(s@1cvQd^g^1^v1~Y6ZL-KwvrafY%hlL*09hu@nR?Hup4)b+j!yddb?4Rb?h_a2|5A=8i{!4=b zX6tUQEp}PGo){oMRFzs#?lG^@?d|&l#0!^D7=DjCnTTIpUPR(RZgcv&LH;=WECrv2 z=a0j4S5{?a^#eVdo5~J{8e$}-S&|bY)YD6_1##>dw*F9V@Xth_w0i!19Pov9+wP{r zM=y6ewO{CJgj;!9vR1C-<5UfGr#ipQ?=CCg(TqGs?23RR^3jqZ8%KGcMMB~`CMHli z{Ht%XXm|C+LzWNjs?k;TZF$Uu`x{=@OQw?Mo^mcy-?Rz`z0=J7`hF)dpa|N1{)HvM zG0D0=^aIRytRzy_dzbaFPO^Ll<%MWLSpn)=ZfLnk5G~qKdHlJ|N?SlcA(i#4_KaP_4dC((F9Cb>U0Fq&Kt$FjcjD(i6K8a1{YS2tq<@YQ#k zhn1<@6IdHIe`NJ~XB3hw;L91zZ)OR}!6a>!Ip380VU&jCg%}=iIG^aK>3PJc*q=*e+Zqz2M%;k-5 zXC16Y3$vj}C^Ne{ZezzdjNL#jn%iv!&;+~!8$b9Rs0ZO6%#Kmdtx?}W&);NOw|q6A zU*jH|EYO$5-r3Xxr`FU*-GLSkkDWQ9;+2kduHSc=tPVWd>t{80sh;)*!p@cUk7x*4 zO24>4O#g2isFZqjYxbHdD~zJLHn0GD1^E!PDq|<*M7!k+tz}OI59I+Sa)o_wxbd~u z;5Rkr2Uo|Aggji2;qtKKV#3vj$zt2FY;N_a<->9>XV3H@DE zW2Llk*=NE`H=7q-N!Otl2?2W-$wk}2KABx1KmUqvgq=qIT%xp!PS%~1|BhAK72#yaq+@&DhdC`5%vN|Xg)twW(|L_EYC$#Q5(XluNKKNW_t0?Ea zpT~)=``JEs6Yvz~hi*NDJ8sl0+QIo)+h)eXWe)LfbIRgGw?Z6p*nUUq7Qg+w=KSg6 zjK{tv^If3J>RWyhBZGWe4&Y?NQJ~(4GFOS4G4oz`-8i4${pc;;Bus0*nmO!8DKyjO z{Ym)<|7oq)-dG=glBmwFNGu7SsOks&a$d21op%nJmo&!5el1$p}QxIA*y$Yf|7qJPY`YWDP${PkOcWg}X54+xQ85 zN>Yx@B3>srx7rLx1)C)0wazhgo$^4{A;vfBZ623Q=^vd*sS48|rtS|eQX3}`f)!!*(C zDw6VDEjwV_@Ixy2_|m^=cLe)aVD`E*w;SksNT;DJ0OFU@mhcz)#JCzVwgYUIiMp{= zJ*jNyvScMdtsvWJgcz}3R!0chr^A_1?rLAK!7)HEvC1X*EY)8H@gcY6k0pAM9rE+O zv(27Sz>A-0sOF_&09mp^fKhaP+X?yRc+~D%F8z6CB0FKk;LVC%`s0O9Z>;ysF_YL$ z1g~xNKDtQ#R1$d1Fm2=Pm4_9$`@1Tbi@=>HTEQ=uco#l!N_+1)hhV2Qi;>aAj#Ec( zDT;F+y*-^OqgP3pl`ok_!cA%J< z+|IaU@_4KHtn)|d4+5ker&)YD)@VlzojPD3`xst2m|Dwxj+3v3-19w2+u*sSpQ0rF zfvNt$Rm(TQzottTO`V|KYW4{I=P>_5S6?s~{;+TCZ}-vHc0E`UQ_U^dR%op*K=dE6 zdxwoztfsThhmCr4Uc+vBz{r$m9Or$F$zx9onqhLTK~^1QS|)HpJl|%OEU;WV*;vxg zz-}(?5B(ktU9m&g7$L@6k#0wr8zW$O+(Og;?g{tANlKr;4>h?tAJ`*!sXSi*`H;^k z{hVE{-ZNLX2X77leDOtp!v2_)9-OOnG1pz`J_w)$y{50w?MKoS(Z)bnna*?_H_e1P zr%{a+>-C4NX#q>;^4DlWMp?oA;!cS*k04X!WM=u zb%^pHt#44TAW_Y>ws*;4=biV)dJVri)d{F}j^>40V>7-B1Ft1}*~_kRcjhW*?d7k$ zMML^Xd;P9|kD>pT^=siHDfEM@A|~gxNOT3+1JH8gv~47K?KpkiEqLyh@{fmkEvc*g z4&B4mIrOdydo4a81X;Wb_fhpu#tjOW$!9(YZWs+>2?zKWo_OsA++?};c~%$<%3i}; z$v*(cp0B2~6)>;|PPQdy>FIelU+*Q_CnTDj%hhf7%G9K-N`lwj zoOLY#hw1ex$2OjAzjLO0>)krTFE zh^6dXTF(k_J--vLvhO%B)xn&VZ?H4^q9aSVxN*q8w?+bbdkPW&6E_R{WOb%>F|p1M zACrEr%m*(si?G(xbfivpZ}r&;ZC24pdg0Z2UMulcZMZPK7)N92XKhRSfCMmgv)S#0ONMb6_sI*zwqgcvi{{?ldrx zpY8ZzU0YElLV3-*ceBxw!_VK0lap@&q(QW8#%Tbg+PaZ(()fL`p(i^reySmY2%)!c zy5FU`-DT-}?O8wj$4a3un~OEq%f2H7rR8|51HKc$EG4o62#`&k4mcJ~Sk3|h*qB;0Z69#$Mx#drba)Y&gf>%<<+}8#m=lAS9qR&4+wm+e+(9 zi%H)<@#OgE8|Fg|;?(bLDP;C!SmK;X_A1bK!eBLEHm$VbO@Pn67C-ZkYOKx|N0)`X zPr-J@1<=8tbmc?!qXG(C|KVO9vaXJyL~dsqEk^;`Q@McgtY{;HXy&&ou#kw#&iZci zScX7q^&tFcT=tEENaXu86?5uX=wV*>EvY2CUo|Y6_jL5ssKiXRSF}lYkT({KbWatoA0Rw&Ddm>wHoc@4p2$FYe zj)q?}pjMpuAN?-!T-3_c;!%#$oKK#A!y^+`-_Wz?5Zj1jBaX5=VK;HWiIoG!qn_LHlX(PE^Uy#QsJ*!le4Nc}N8y^cK zk0kq<72(W}Y5s6K)M^uRVZpnzpEGE^V-6g8vUFRN=AO0(p>I2U+i1Z_bSm>E5c?aU#FJ+D+DTej#`Q4%*;Lx`jJ6YHhe9%D z>P9_sgaPOISTA1&2ZjB^c zRHNtZD2+2CdqRdHQ}ggc?`IOt$M-^gwR=4t9;T*G3#ISIvb*2XDzVX!tdHHsdGeVS z!aAA(0ue8>uIB2@v;H3Zeq zKZpgGtZ$o!9`o-Nw4=Q*6F--cpGwU9lKO70eDJv#KmBANL`RVpgnJ}?{>&kl2xw+93nlnO(N(*0eE|31X;49{DsO(CAVMjUHy%6u7 z%<3?@Png{07Ds+S(`OMv8Lrd0@l+f&M0ES_TY*#_^wXzg%Rr+wDxvZ}ayU4n*%LCRpUDjNDEqCVcpYEP1f*%t25}6}Z~HEC5b;ZH;?5lDq@sn-Td>0Lzxl(xmmRw<6($W| zkW;Au;VifPs=hNkpD<{`#-PhX4_%8L|GX3H`|D@gW<4=)$epTn?>D-WvfOK?-KG2? zOU=v4xj`z_5@!R%DAT3M)tn?#fD2n!j>o|K?7~>Yf zK9(AQz~xiC+Hm*2qP%J02yLcb?&*@D?kc0fJJ5du!BR{o{g|yb^wYpl{~n}S_o%H@ zOPbs%2IK|%HtDnrJGIw}$jI<iFAkRr*&64YtD8Z$4>bDw-pq%4`}Qu zGJ$}f4xeV<5xCUg!}V1VR+lciu-Z%w(pD~$4#3%6IwK}^%Y%nk`q88oP&I+ zRGKIw#&Jd1w^AUqRuIjbZ8STC-ZOK{>iiYgu&d3EJa2Sk<-eBT73OjmJ*oS+*=^4R zYG%L#*PO$RP2>}tC@q-5(ixs%6XM(Kg-2&_N<;TC`gIPJNRxnI%v2b9M5sKYzC_mo z@2m41d&B%zhiJ4leZq;at7;6DzFQ6+CMSo{54BbLgZ849(oqg!e&(ELrUvyJhJNlp zIi@{#=C{At33 z^-ioIwQj+f#e5lbXgtWWCnr|VjN$54rrI}ld#vfS-gA3<#-PpkH7M1oDOBaxJZBAM z)^0Lp~Uh$vc(;~XmrN;DlDQHug{g1oRSuO!H&z5`F{6qFt8r|&dnvK27EEM|8a-zB} zYx&!QbP}D6TrLSTm#!cr;J0%1hJ*#LxFTrb%VRD>D$DlFcAD~D@+WQfllMSTu!6I0 zGK<&Z#G7b|VpizLe@gmS{T~}Y)*fc_YXqB0>qyt|tBu>8?Wql6JHxsDRr}tjKqT76 zPQSx&Cn|#pXU4D2za3+kNQH`XM>|pbMyqzH>kUc?3N&7@^N1AlRxeb!-JEDXRDOPk zpS@e7e{J-B4!J&m4l{@R)2WR57}Tsvb9)E;RV2damA__M2!vO$^QTAL4TD@8_F_1B zhuQ$dnxnKIO-GImd+(^~P8f&h(Sfl6kUJV%xAEF0+5J&|8 z?(NLftfrlPExEQmseE@EDV+GBzB2r{v1n0e2d*4T4=F6D6niyZl-pqk+x*S1dyqfd zGYgL1yie7lOx7ne0Ue?0XKiQ3D&LjiWGn*x9|Km(Xn+2z9? zZj@b=eu{gTk7M1fsU)%)GKA&Q82J$+r4a6v=x}^)lc?Qy!bgCb2!fd4hC@bSQZJ$WAUp%k1OvwIOUXzhBhEA?R@wHMX$66Ocu+GqjKG zNoH27!{=XU`R@YGh70+AlD(Q?{QanVFB;ie%J-7Ka)>0|3h3Pv##`?F_?%gIuOe;S zENa~-i)-QYDD)%#l;6Ic51EvxiNsXeHS}A}1c>q_{?T}=b{;}{cvSmM3{Lq;JA0lN z!Xf7WyANM+8o#~qt*swgJlz+vo-Ay3>G&&O`+48&{Q30da!pYHG+$%5C-;IS)l{&0 z1#`cupbv>hQQ&{n|D(G6+_SQ4pMg>fuVY`ax=!<-@Z!6VA?5@hTpRt+i*3lTz^--5 zKs*hykCKLYcN0g1T-fh-$xmilT5m2WU7YG?m^eJ$Ux7QVa}?l9e~^_+Ip@k=?Ax=0 z&!1!Jh-_bK+jf9VB^vT#+c(00z;ClD6u)55|*^lLbE zx(1=^4jvT+xMB`5g4(JRyDI)igyt+Rx63KV7+s@O5nqHeym`%GE#6jBu!ZsaiVgX& zhYRlZ!|5z6`BoFE!}wga#7@yleXuc96vyq*SbHjPiyCuyo7KD}h?J(#7exk}F!} zTMOJaiGTL8Ic0Yox!toYSsKrZ)qg zm1dF>HmCA}InQwh(oY+`;%a&jEg%XA6Br~pf?Z$KwH6yrfl$kC&RkB-MFziwE-R2UY2S~BCvd6aWffiFg6O=}qIs9^Ge*IBrW^hok*W9J8F~EyM_0l3+ zBHYXOfqLDuCUCB5IpR@9eQbeisr+aQ4MVE6+g}qWFs6{(rwJ%ysY?29j52?0^(XhK2>kV6$ zORX`DM=n#kS&_7<`XUqKfy?j6@Xp?;eX{~OO;oehTinXW9odNgnqPy7)Mk%M@-K6LY5 zubcSJr|&2Y)dcSkJnOiLH8#q#OTq?3{B2F!>un9%_WOL9 z6g|Ct$EX!uGQgNaD{3H5Z2zYodo?KCI~kRN#|(S64+NRZY_4+dc2H^=pNcRg)-mNG z(p!G-g#`~JL#ws_M@QxEJW6XOcR=3=LtR&RJ%mF+`w_XdR)s2qDK$@URueC*?B=;2 zftA-!&3fo=OQn*D#ADgFc|fp8EX7V%BwskWEG(H?{*T-2tSAN0b9h?PQv= zjqoLrl|sERSyPE=@;0#Z-Ao0;D`a+nOksdA-?s?s#zfzM^UXs+@z5R&*`) zUrZLhZWuTPul;4RaVWgzBUDS9EhzN~-VMd+9bToL3aGWiyk}S29}z5t`#kxg30&){ zuZ*$sZ#kS*Co8QlXH@broMxx=B^emXdDB9_kfry!@)F^)(OcA7Q_@j^k){uyXWZIa zGbkGCdH2*DYF|+Jcy&$(8JN&Q$Vx`$Pse8=jEOTZI#_NnT~X`GLG(i)hKMZa8$ip6 zaW&U!gV(DG=4^+I*T5TAq*(HcaRO~(@7(d(zST+B*OH1LIoQ7eMck!0B>lr~%Pu^` z7(SGNvB)e*ChoFjdd}L{#%IOYvbcs@j%(v9rtqs=oRLLv1{UcV6xxJ9}(oxjDLXYLiso&ClBZV+Rhp;_xLt?8AJ$9sW8|go+`6P zd$XI^9QOH%l+^62n9HC4s(m&zp7PH66ng|e^G*7@`I=wV4QOZcEIShS{_)Phy{}VX zNWm*f={T6-N+P?sfE<{y zRTIu@2;s)w9U=M+aIi8Yu_^RA$Z`R;pjVwp3oOTvx*Mm$QyL5z6VBtcS)c zSNtq-Y9pZ{RI?K?tG;u4}MawhHKy7L!~^N^JSi4f0#gK*tp%j1`X zC5m-#iNhepWvXK;Dim=Y>$Y`pz8QSM+;^$8B70j-omY7-zih3iwj>9DIA0G!NkwZG z!S;;`v%LCfe#?;^)W`Mzv2DG?I3~7pw}dg1avfRO_h?~@Uf%yA`1q_{o5plcwL2mu z4_^Cf^;*GXz)`|v*l<*D#K5^|TI6lwyAYB?X;*#2Ykp69M*t(6nWLHCB7I7@ox#$$ z&|l*KdERVFnK?``ChBWj20sEGpU~6fjtGzUjw7{=dWmmhjuCK)!KmW)f!((?Fe~5% z9&+b(?Tvy*DwU2-9W!@pQoT>)T8pKcfo7{i zH+0hBvdWqPD%`S2Wr`Mq(zpFDB1JY4nO4j~fiTdfDAe5T%k9eHl#g4}2u+n1lYst7 zolu@Ox;@ik5o8+mJ2ARe{T=QA4}$|6O0P^5*lAJ9brQgcvAC{g$j$6 z4jaX$ayw6)WNxsV{Ke9#e<#@|*A7B`CAmdK8-BKF<1<`vA#kmLb#w$Da{})}yic_K zIafP7SQTvNK$Q6>UuJ6zck1#bfG3GbMh5uTNG72 zi*@?~9eQw(?eQ!`Eg<=EVi4~D18c``-FD~JeTy_JOTSF39V&Z=HCwgirm93@nl7fh zIMemat_1&ggVHYOCPxTYDiybo_)fa0wOdeR2L; z=Hca2&ATMxX7O720wZQk63jQcM(g(;_y) z{0`F|JDRkGrrTfhP0sL#En8c+d#!u4yH{^GTi<6(^qfaWDyagi0yw&cVh0^wvlC$9 z0lRxCv~d$-D`1uhoc~O8?JY9tb348aE*bc}P>h<10p`JO9^gZdld($s8Wc5+OFQwS z=tF)Lr6;*McJjZ=3`|5#5UEIX(SZs23zaRe*iL5M)OM*=H}>EU(XEzW5SC+)*IYu2 z$@BSXbHP&1gORcJnuM}aBhipl69+4lb7W*WKGbEVEx{fY2YaOr-f23tc0^>@H)kRL zWa8DVSDP!^;>WT6(UbJUl#Q>Ow_tlwwtb8}Ucxx^x?P+qAN2G9mi}I9cDqjIa`k2! zva;6^GKDC`I@iT|)5lGGp_H5A}naa#R zN`4-D8UrtmM8m$Z!t~ety4Zb4Lxg~4QJ;V1AgxjN*rBZMDbQ|-2AQ2np0eU=*;^l{ zW$h^EYu<<)f0f;d@%M86O9a{0I7|f4yhf_pwJ3<1rRYid@tN9wTWd;E&j+jIuz%4W z;A4it(r!T>)U+qTyW`d-$cM+ivAU!O@L$nqspivaoMxZpbSuse6IPgW!2Cnqr5NVB zx%W3VvUrk1vSUN|-Y2UT?ZQxlJ0Hnf^bomazkbH{T6%m)Rp~hy$usZHZJC)F z4!;KyF`!E{D$)Z<>YCOXQGHqw~K?$wwm|NPb*BQ8p}7*$xNY5*M5=>s0`H2r+K z(Fq>j`!NCFQUl#nZFKb0=#=rJ6y@cr^AGCb-2EeimWz;C#4>EU=9(6c)UlH}CQe*B zjuTl;ivw*)!n@K5a&pZOxpezRv+UBw5&T0?na zc{l4*P$J}{Fi+T@*sYTe)LBf)MI9tNoFO8 zi)D(e#9Zz|J*@i zY5Vu>&f5*ye>%;mmD2ShBSa(0 zZc)i9aK1;qeYL3D?^Ina3Nrhs=7XPGm~~DSKZ~PcBoQkBm>j#|2alQ@q4@j`Jacx> za+M7U{l&LLM9TtK(2HZa>4ZMW{^c-y8&y(g%@BaAf_oRPeTkcFu=-=NS}U{5kx$lB z>23Wajm^7xfTFhjn6KEg+canG$_BQk0l&ifuC%Y&Qv~fvm?;@FkIYrVR5wmIV=3b%sob2^0 z9{eQHeEU^|USr(&;Z|gI5K&?+*5lONsy4kz_(oaTJn-wdDi1Rz@~bMnzv?VfXE;@N zuu%|*SG?>;{S_95_(JJg3SF+gNX~sofbpq-q6(sjWCdL!HZb(vWQF=U=#<{oDkBDCWkK1+(Eckr&0&OqC^Xoom;yk3C=BUg~ zkF|J+>C9N3w;vZ}m#LDxV-z9)D+<>IvwNq?uKk<`dBVKg4cvCv@7-2i9O1!(GX=z= zM#U*vXyGnd1ef>cZfMV3I_57YaFhbB_gtEd?*v~|39bG6pBO(L{p5beB|%4^W{Vy^ zWJ)Ob%6s#SGVG|X$4(JrfTyQ#!@;K~$|{Zo&aWNXvIaW0n%bS8LYrW2Fy0bS_R4=k z#8wh;b7uf z^TQG!@t-rg^FG+Rt9<*g8|MCpTde~Abn?Ym;n7#R63)!IfO;z+kD*yO1 zz$EF{pgr&Ve9h$jF<<3b;zi%~B4&foUv)!0n)s!kNhN&33A#>E%p?F_f#58*c18$0 znj8#K)qb^PxEy~UTS`K`b$hdsVj6s&>1O-yRe(=zq|$a`XVE1IyM>!uW8OC`@Gpf| zoHxWmN}`GSU&NW+Ym@}$h~q|bC;klg-o{|7t9+fY3^i3alCoBC)+JqJ!$Y~m$ShgR z_DKZFQmlr)Rbm;&8V9c5@>tiNzP;OdNA&*zL(Cad&jnMw8*K5BpcyGj+O#?|?r>ox z6*2&zZ=0TsSTpwmOsNhsE?LQcTD$ElxBdDt3Q{4yGMM=%L2tasWQDdDx<=YnfikuI z!eAE=O$5$k-}E7kj{5FBdLd+JY##A4$HfW8_f?+GZAys#LVFZcPONQo^#Z;VZBSh8 z;2p1$-aiq2n4QTt5o3QZEuP%$z=(?5ZlI^M?bj#A&n{S!!&jigYmxlg{$#!vKl+ZB zh;v&y3--S{FV_$J+I>|FE@_a#-TSBL@7@(_3q)If=l9l{x^o|9sAT|#8!D)VIJcwF z==NeVv}RLg^7#=mZTncA!$M|re4JboHbXtwP-pxbu+BnbGTnH~E|0CO*TPTDXsZ_c z8qH}47n>;a)pL&%J;g5ie4L{9KZ}F?n6;AwDm-h1=v(|5# z>@xTOHdE`7N1Rq;J^l5XUOE}(*6uOUA%8nrm<3Lz83qWi1B*9333Q*ZRwVheOkpJb z0|vlN9B9|;7Z={+)=-jaTWuN7L}@p(m#bjLR*fPvSAj7lDZKi>bh*;am8m|OQB6Y7 zEKM79l6jQQZd040D$LoTn@;=r(^*rz5xv1r2$4u|2fqI8D=LCHz4Nb0t1sn`B2OU= z91PL0vf4=C#L%i%eG}zuF+LY~3S+G*f9YV3neR>Fa12HZ^akeQJ5iN7Rlk;sPDbWt zxB|oa_Ym#$A90!MTC*O(G1~=Wpy-A-KGGjVxu*7E@OENfEGjuxLYinU zPLQhThetJw7%rJMPU8=H!VU>aGN9wsBYrJkOM^@2&H4e;{KY?|EP*UjRruqL=|*f_ z`fps>`lAU?S#0B*?r6|pn4|FgN@!6cZg#k#${csLA@uCFs)3X*toQj`O?jvT)GbTH zcp7YbAA8o8I2tARE{W!Xp>XO6zp?D`hH>M0Vs01>S6P!sk;`T|> zDt^D&P8;~{r<*`*yNUVDa!#*|m;A)*UbhP-R!%zdSM0P~gGN2|rQLDe z)!xh2qw?{Grj~ix+otetv9iybmlD-Vi88Kd)Dnp?kj9z|3SxEOYduNu-)Mb1#-mjH zS<-^LO}kdiKD@=aq4T!uJXV(>kU)uZA` zsSG>^HSRmi&TYaAy+ntI*3DyFD>!Iarv({J|3}@+O$}5De3oabCmk$QltLhgU;AUT zO4PWZQj_UU@t!;6H}N@$(5R}b*=aBB%7ucwZf&o15o(_kONfU4 zpQ1ByWcvT(__yRJF%l}rDoIj=U#a8-WcUp? z>$~5jyoo2`Gx?$K=6LomJp9Y&jG1rFFZy@xBBH^Wrx>@Dj68mso^2REBK%ZJbELQr zr(-f!B@yA^Jc^>n2$U4oY-sKCxvNUHYe8>*ZJb)e z&qlM}hOo-^#sEK0$_f4>Wt^n*v(@><@%9@Nn>^G<*mgcE@2qJ>)}~WI~8?oRV0v;97TSi5_Ob1W^gFj zBY%3l@g#pg<$>z$ws)>C3aKkM*WuRSeM0>Q$}=m@@2Wcq)Ff#-j)iY!966Hr_EU3Z z;P1?}(RIy)?CyQ^1@H_tqV+yrRn^-quIiW`cF-Vi_4l@#kpP3F z-l>N;_!i+M&tgl*Z6)j#OMy*QX0@T~Mx(6ku@gYRQVYqriTj2o%K7zKjcMz5S}Q2> zYpTz+{cK)Zd zk0IdES0T%hKmH-lY!7RsvtuLwU2OQ(lokuu;H;=)xv^oomHI|Kvu9QPc3vQ@wJe!JL+xTKqw5b5w!Piq#k8aA*iVx zy*jlamOZ`>k)V#&k9xYo$kV6hUcp7 z4V7Q<0}j(vyQf*U^ju3>9+cp)5G!c89R9Nas(E$naHp?#<2~?11E_>jJB1U>#X;i3 z#|CvXiC(RM95P|}wdvqmSW^$KT1+E5{xN8vGL(J1%OmlFz5`pKx^<6@j&*Yrmm zHAE=?J_Vd^#PbiXb|IwjzstqLNx0p47(~`Hqs;(+7GodN)K_g4x^6)9DlCnOPWck- z5oBF@S~w2?Jlcp4;!gu6c+#lfj;oz>N1NhHNc$G#oo@AYBC_oVV-yYd|F?uR20>>ApjpU;`yFF<|I71y zBaAY34d09BIH-gc8gCoAz+t$9pzY@iZi3+T8uuKr zmZ>~<12W%|qUknc+o<)YL5%Tpy(312QTE0<$gbmlNo9-{Bf0Ld1TaWu1wM2&O}H;v z1)2Nb&a{oDc!p~H4tNmv3H<2E35qwq1Adldm&#EL8I3^?bO7P9g4W=k&(=^k%3kdA zRw`uWNL6{>B>6A}UMWv>@?FXoj44*^r_8&VAgRa1&xAV+2|44azRhYtLxQmWp*qDl z%w7Tfk@W2-G%cbUWhmj93TC#PDUG3?elH00M(-A>uxH4vVuwo;kzC1Ujn6#xofzz) z?@KU@pH>J@bpjh)i=Wyho%E4sGd?-07@KJnmNCz-8|aUpC2XY!pzo2A;z-tONn4O! z*Oh;-;q|;->r96wv?KrKF5pKJ?9Y_IA-s$G%YuBtCU02-$?aZl?m7&m<0w~JO~))N z@}9hbUF(+58P`jTof*rKdnV}LE6KOPko?*>uC|`vmMI`_jquk|u^l)SswSJ4*!0x% ze9-xW4SMaqM^L~G!zaI)`CgYhnjV;~esHK!eJ85(FKgwh6pCQXS0&VFE9e|G1oTXh zx%5%&rjFcF#758rzLvQ63xH%e8x`g^8;KY*bii{Rtq?4HD524>K`(|=&6wFSOlLpZ z_?8}QZxF5J3EpRa84i7=bNqb^cG4@|g8kwvyV|BH2h+7?0 z5*e#<=+J9Jw5%zw5iob#OJ+5@S$v#*kjru=z?(e3i*Demk&2+ zj3h8HU-dA)2V*h{0*mW@Hk;J1$GIbpMdB{8Y)TDS!h#5zMi)W?4ZgVqtPxi(Ja5>Kg7Q<_YiO=2e!#TX6ke$ijsl<;c&2>X`Khf?oX{{Eq6Ob|V*( zemV+=>&DEiPdnf%40m;OL^m zla&NQ?CQO(wvLQZffz#KU{h}3^PHZC6`Bc96nT%KY1pz~Jh4Ja2dK&1yF&AS~u=5slWmZ3`ni6wUY|tyf=;wT-6l9t7 z75y{l3;SmjyIJXehX*beV~&ptG~xcuvtM~>z|t?|A88Sw+{OaPlh@*AKzG*#aC=ZL z2dhQ%5ktO!fNa>)1u@WoE=HoK-(4p75z7bgz&iSG64z#DMo{H$=RTgpxba^JmA==C zQztU&p3!a!R`buj0n4~c{2PJX_A+~4cI*oUc5(&;J}YO96#O0Oh1MJ8Dca|p2yqo5 z>K`n<1a9>^F=D2VyC@WYKTQsU{AX5Me#?sf7h_g|FC|B%Lxch1+q#h|l)Y!a?`W^l z`?sdMxsKuX8HdO}QpD#TZXV)%WWoKtrM08vD8TKZ_r^zjiP_15m*m2pt>dN)BiWS( z?S}n-Fp&NOTyVf%CLDYK_a^=`>`5-#wae{_dtQAIBNm~b(;3vWu`b&QXl)y4gb3w%8JQXuMzEts@pVS+H-H-=%<#%nt2@wn_d#elxr~s3xf7-` zH>C*=+*cSjdbn2SeDp=c9|@TIvDFskkW|-MHttb-V{KkSRIgF;%F`aGB(O(wSg6&H zTKuv^O+KW?fL|7kCrT9xd{h8{dF%<>>ekr~2Y#Q#UNVW4H zIqh4a8|OyUy*wq#rpzbsU2`4-{AUvmqEzcGk!y9k%na@3jQK?(t*U})E4mY*Fed)G zS=dkF4@@bI{78WFJ64vx0nc1WmF=v_?8cgPg_9wTZT(I~ z>#`Jy%xW_Qi(s05JC61GHFcr&a6@)S%ePI;6VozQpd=9O1B!S}ulS_Oa9*k|?m)f|0!Oyi9Z z{!3)rJ1FVYt1j^Qw@4>DkkOcZpq=E?x0JC-iS18?FMR^-a;B`P zYvT+N7_t?i3AxTY>7A+2m57qAB=-&_8GX}@T#b~Vlq0|*_7O#%} zMm}zN$BZW6)_ZbY;dkCFk+`QKMtVu|!mz za9YHk(Oq%H**SZi7~2`v(fc z`Lsr*Gwl(bi^Oo15m794`%Dg*``HQj0@(1t>C{rEHvj}3>9z&iTL6iRLmA&v^x5^@ zkL>}+xeb&!+Ounn&*8$UaJmn%lFSM+p3}d+(0l9ObdB03&C<85m`H15B6TUafjS4m zAh~s?#Yq2H^-ALU({-L?d0tMtN&om)TzLz%yLl%IT%rI@7zT+CdIV~o)i^gvT|2OY z$&sW-=PlRMwg36ISP8hl5aS(>b8sy zI2*p9F&Ttu$+$UM05E;}6reD8C9kkmnJc)(_cUu_)@NSg$hn9xZa-!$WTF9f5gIW8h`YVh(C+PW`V|uD_>B;Lx*%f7JM<`?q_&&W>b%FKfY#jQ?T(T!2>y#vKn> z3*_|Z(S#fA6=NC=em)P7j%!gj%*TYwd2J5yxA>Vrq6M+bWg|Lr;(DthOl-GL&HF4! zPn`0rWjJmoLNTY_D}NN_e2kY((F1+MS35$chlZv;v{fJA=@v@-DgIe|x}h@y_aGiR zVFki{mWT|t=RMCb{>=|ei-6868mvpQADq;~(%*z8~Z9s7{l@Op#GfL9jn%HIUBM-@u2_> zSnUYny!EI-X)I3R*-6K58@+~CtV+#lI7eIr8w#6@IgVR)X3dBPZ{@B=i~!MhNwAU4 zui-obUXT1Yl^fXJ-mLS-We*}P6xP_Wm7vz$;0)oueJ(&}7+EhxP@-9vMQzGoFfIWK zAI{dBh*jVz+XqRoeW>KWSSxn(ta4j8!hD_8n4!a9m1L<4KGmiWsXc}LlTBEIMN+0 zH81>a_F?1|!E@e_Z#FKoaA~_1QGbMiokr>7=u_m#Z`5`#j4S{hYI`7^SN9CzbZlXT2tz! zh&20_@V@1z$|`a%IitSY&59Ht-U(a!3x>Nr#&|e zT)*b3Uv`&}H>yK8v_5|4#)DHKHYt)~lkvH_t1(gjB@>0?h!jfV6#doCc-5wZ zI_H5&RD?-y#>RfDVe>pbF37`o_Q@jj60oG#YD*m1!dz(BR;z83EW11;O+P4Z5cv{u zZHV^x{ks|%`8JLTvBgAlueXnwI3C^@`&dLMJ#vEa(y$g-gPrO~R#m(jaW_@D0hOXP zD<6KL#VlNSj9hs*v_?D|@v_mOp#>OvA4O2PH#zPGh;}0QZ4WF+#|Wn!6K8u=!oH9g zN~C*BoV#S8^z*r}E*$lU2!EBo3-458Ht%p3uw&a9fqSpF(9|h5%_MVa*<1fkkznKU zk+}Ombmoh8KWx#Fa#Oy{J;YSqp8M1eTqk>kTZ_&c&U6rR1diLXxcZhH%L(Fu1lmOOA-jO|G! zGVaW4*rKfUnDB>EFLCo_ZR}e{bJ7mbiXqx7&V%Fjh6;IEn1+7KPfqu$%5~DeLoY7e zQK*OGI0BRD*_9Ng#`oGKdYWZS)c&yyWC)FG&`;Qs8{tD6@K1GDI{De<8tC)9FVKvm zz@0SNO=dd#Nyos)u;XpneI~|XDxXhz8aB$Wwi{^x{(8F7Ghp`jai8K4M=|@tMz#4| z_i(>)Mow3boHHe%`ZYJJL2`S*f~I{CHkEqCNGI1IXnx%+T=iJE@3QKWhiFhMvtSha z__**Rpjk;TmwR}jp*<|KVTSF?e>(a+Y$y7-dQrVL?BUlv>HKJYWv+ANsb_NyWk=@H zI454u{D`^}W2*Rv{;=3}6df<9L4_4X|InCOOzDSxTs|YZHf@+yH4C!rG>UeL^bh+% z(v~jQKiNM5tFh=#4aeFHzf{m*3}9v;4D<~jkA*5rCR z(%E)-c9x^3Jy8`WZMu3jJsRB(i_i(hg`Hz=4SiQ*Q2Dj0hUUw$CQW9J+s5DUQ{yE`pE=eAjpa&B z`7-7(1>^cN&5`}0;?83gbjp-Y;~?$vuY`;UbvuajmhwbwfPXC%#=eoGC}~`H6~KRx z*EnPba;iBV^4BYOIIlbPu~tLBIET>R$QTlhRH|={U-tBT69~zZK?cSR^z#q#A_&SX zQvD@qLY$7^swL_V1J`{Nx=UlF~+6;@vs zPEC%yV_qvs=D(^*CF9ZXxgSR;ZO$!{a{TH+%auxCNQ)H31xmYk&|}yrvoOW|@Ks82 zCQZ3iM%6(b6TTC_?5DX$TAAlrMQ1`DC4e`-Fks5)o;SREmH2Y|I7Y;0^d@_A!5F>e zzK8T+FXMw#v?gzAww4?vblXfnf_a(Onw00{ER7K0Tv(!)@^tVbK43fA%v(q=Nrs}m zCQH%R35yq=vyj6p23!IK2gr_Sy0DZw8dOIPt6iC4+v+SFj@FLY`ZCbX&~v99|N1CA zWTk7utr!QYHVryG3||eFV7u!^9m6!+l>=U-hC8DcKh0m;*)dO$T8V*z%y|N5I)<`Euwdw^Yk#*G$L?3Du*go=>>Qaj+2>Wsh? zRhO3;%2~tDmG|#K+psew3tNy^&|&#T0ZF6NTzDq+q4ljMU>f^qfe^)1;B`8;4^0?K z;&lddl8)i8dNvxamNq9Z_1$I>*XcQZ!DED=!R2go$@$Qqr^tDw#l6_|)wttP|nDm3p5n%DiH ztZQ?~#&bTjeMh}dh&l%WgtlK5JhxTqu)}K2zItIGW9+-3w4=LYTjD92Vvy&EaKjkx zxl&4#^m%7&KG}!&oN0IjeQ|~SvmxGnVMjXR2n1~xW zLq$r&s-OeIk4t$N@}5*{&OCBE0~_bwpKE&@W%{&+mSRVU9LyQ)m+E)A+sc-y)afl& z*-@Y!ywR^eI)#XJe-!+Fc)Oe=R(%wcI|FO|uvgXk4D(pdMmla@3{-vK-0kJmPTiZp zT2Sd5nm4x(*I*Mrp=<@86b!<`0}PJ8BvKpjY0%2L@&w*1tkY4$fmt`G^22?I6woVX zO%X5f+;$^NWtLQE7=s%6{2?g$^!e7P&)8tH;FMuQAp_D~&AJjU?=^C7r+U{zF|(!4 zKhrt_pH}yq-3fc9bce3@HuntTYE(=oa`J;#^u_+2MI`Ex+%TIL{+}6n`b0!w0P-o+ zJJbSq|BuQ-6-bkvNt~542n9qgKK!;+js4GTGtuTG!h@Q`_(45OBG^fqgS0LD2k9ZBt_#oq%_VP*`lTgY z+Z6W6ETYV%+RYIKfg6NrWz7cu<(TSn2Le5Xx^Fe#wRX>UE&kX6hV-2b1qY#J3~k@q z&QrTx5{KX|E89n;Vr$djq#xZQ*Xx`(IVeiQrhFoBEe>#F&1v0gbWNkj2sL@!eL3hx z4mn&4etvJW>*heJyJ&->R-cc2DnK@xwWo=Edn@h-rh*u(zT-X7F>3k6y(2W-v7u+( zegMie)+oS)mZso*{a_Q4g@QR;Q{>kJo*G7Y)8%~;zpmaDve)Et!m^*XQmflwIbpJtM;{GH*-uSQ@u+}IaznHcC#icl zSU6o^foK)Ylq^!MV`O)`uX{C!l9ysKc<=dhJ3HsG841R1e1cp~=d*CmWUlVFRN%_1 zC`S6IIyrGPZ2YwOO^SiuTcddqA-Pbu29>16aPts8r)eofHj^D0pA?Y2nC}ic*Mr=! zqIwwT_}P+t?HJPsO$cyUcUnBiEBhiJ(^dQ%qASeidO@?U3Q#9!RhcUiX5HlSgzb4A zk~OaQeM)E|k>}%%=%_`A5~HG4GXxdYj84Fvp#zc5TZ-#mHaR-XuZoO7Gymg^!Bop{ z07lwWdF_Svy$<1zs@i9wF!**vg~yf?>377$y^`r^jy9c2R!#*`st%O49 zX;J5+cvR%|jn8(q&=!aAYoAjuU!U}PqBl3}+EQ%PFCW}hr(#Lz`1zH#%SPq;KgnuQ z3Zq|X6d1QdT1=YyNwQS=b!nd6hQdv?!=*C#pCE=zI0DX4*}QjwmC{g=KH73C-AL!< zwo%aYCwSalV0G0L=vFc(SC9_C9Z^ErKYjNC!QYpM403Okh3; zovoQI5?ysz(nR%V?0h$dJYmpQ?u}dS?jx@fRFrObU0#(^3cb1NUJ;g+knrsMuC|z% zgoIHUS^0`~g{aqO+Yh;x9~(a8)$1(dJ9sDxM~$FN9QK;T`%Ki6z`ocleM@Ga0)k0XOH%&(>c1@%Id{s<2jZS&IzFkcNhUBv z;4uZ#KJ@BQC`;#+A`^OxlbHV$GW30#89+Wo6gm|adHVeZd!=r9+c?P2>#P}*A&M9T zHC%J*Ev+t`X->BHQnAo#W9)yb=3zc*RAG2QhT7G2%pSKgx^FQ_I+c*9iv251wbS{| zkU&CShcv`%Le9GoSS0nT;%ufEguINUH`>fjc^dt)Ni&+}l8?oQZRhpWoR}T2T7u~j z?=JRI&r>crPifX7+UjQHU%}un_zSRCQ4&C8V;XC+{;BlT5lBbo$p*!RhSMP;D*dja zugoH54=>7OmqyS|L=h1yiaOj(1JxDutg@6GLCHgo86bRQM*dk!%U2}$3h(kXI)+4A zcx~7TkHqkW+9OUAqY3Z=+i$$u=>IlKHx)2Ty~Jw!l&`72rzD%rr)#jgu=`0Z8GLH5hK9J;jEL0%$7=^ZCF+{-t|k ztIV7){K9%vJAdm#F}%hNYL0vN{q0e_=Y&Mir&d2&C+rG%Bu4ocu`d02?G$CH zvjd(x&$zP^gm*i;a1v@HQF{Y)i*gnTS0!^#AEufSsr;6`OvKG%3HGF}Z#p`nelL@s z_)hbbIAk=s07>}pz;_ti{$yfYA(-`{&F#zS%VVj5cJ$}<*C?RgIK~N&^ltFF43V!J z`OE#(`cjDNyOu_U-_j8w7L-0T|8Vf=S$l3)Ds#HQxE&>ENwWTrJgM|0$bvE*jh+Npyqf@h!+Gp)Kt$npLv6ow5emNZQ(5V3A1o+JF25NO_KK+gy)U3;?41+|8gSDQ(4lN)B7^$Ky~fsou*H_EE-0NkIlHCHL(|j7nR?L zPLYs5QNxCFJl~`Ulq~rN%2;)Sc5);lBZZGyT-Dm9e5xq%dO8sKw^1X=^M%eoM7AVbA2kO@rn@R8yluV-ZOYKk(b|x|79A4&8{INf?ma96$C;dLmtc#6JAsZQOQBq|KqxK0}>&jx>>7&$tA9~U#km?UQg1$HA z>PA8*3Wu+Al#SY$)+zC#^%KmjJT!ef_0q@X5)4O8tY@DC`9Ub=?HeGHEoqF@e`}{* z$W@%}H=yRQej`z%6Z>>beVqO zbR%Go0YOk4JQ<$|(@FWyOitt|$|JijDb`tdYU^W#ts^oYUu#2I-gcKjtc561JQ8@< zU$I(7qPpL4jr`PBUs1w*Brw;`NPulPBbJL(X)pOcF5OGniwW@5)sOs0v{sDZ&X>w* z;mw)uxm&64OfV{K6{JE{lj@GgGIP&{I`(|>`KYy?yArsiRd_1~H{R#Wo?AOa6jd!n zx)oe3VGy+~h|J5nG|T(P+J=-JUTi6`4>}z)Q(!JmdPQTG@Es$vp~1NHE_IB9_t8~_ z;tM9ib#vX43>`@lb|VUHHWT5W@SghD`4DN1SEc&VWJTseT~uO&NkAMk&+RkfE2F+& zr}8(u0saDBF-Gy8%O1ymY@w^Ti0i=)utM#vKz|5=CH?30jL{m1j3rlG?R@v5GgSBQkRs!1j7M_BCLsFj2UhXv>GGAgO zZoM~jZIguLe7DKTOmq=?!sY3iNur&`E)_85J~LrFJE?+-9tZ_*K zuTGhYxT^#k!;|esF=Nl45Wqpd`5O`6A{y6YFOp8i%cp*86&rO*C*OydCd6a@y^QE5 z--BjF6saZMi_4>EvlJvzcTb9r#Gp0$64yLD@a>B0C-0>2wlEw5+?TRypzq+(ES%4!|4 zU851y1A$D1%%ht@tpDmi2N=*usSQ@esxuy~zxE%5R4{c}j#A8+`+Z+wKMlBxXO}f7 zZlb_CgArpj4bL6<>M-gY(^oU-!}wn<;)6+Mn(&T)VWKb?wwwE)>l-G!`USgQq0fQf z@hq5I9BKkB)Z<>uuP@>U@=Z4EytchCNp@y5`7+oI!vm_~jTx}F!(+d=@sS!%?C)6y zxUfN>>H#Y=4>5L1vtl4hDrK{ek~7;NMUqloAmKieE?7C|twp3HD^+-Y{I=kT)812i zb0h{3ruwYWCCY4lBuWlwzgu95oB!)M7Ok+HTZb~R;^ht)(`F}d&w)R4k#2#Aq73TUMn^xI!Yo`S-RR(HdU?sY{M<2~H*UpS2%c5Gg6B2<4z8NK>te5lq*~uKt zo3C5PMB^)jUH1drd(A+2h7C81nzI}D@XqF)YIu`C>EvUTA7=EF<6Th+D!~!DbJ>Km zAVbD34b?r!L3-vNC-Lh0{3I>Q6EM|Vq8n!)i4)tV$bwOsr_TPmK$@)*%b+LwM1q-P z?$!xcB1OHjOvQ?oI6O-_fqIxhx>CdRiL^0#adfj}za1!l5&^DJ(sTj5HN zt$pb89Ow@M)$k2g+9VcuyHGqSuTDj*ZvMQ@dsYj+jTTjJYa$Fg!#G%6_#L=r#rvFn z!TdM?W@^4(5b<0vkc@H7snNB13jX)bY!rn>d~^QhkU-B!t+5JSVrlCuew;k9t$VgV zoOOG_e6sXL!~9eMi*HWJyl)lq=Rx$8Bx_((k&2ZN22><*5Ztm%<4EVi7e!hh_Odg) z+IR<1K$Y&OYT!oCrjwvMa%)MY3R*q_P0)8WjR8u-`7n{^j)Ny`xao{TBg->Mti$?H|(#>{457D;7eNTlqY4 z<*IuDUU9B7`&;dSY92U`&B<~+0sBEwXPtoME;kLds!Nv0t8=O6_fwGl$B_<2rkmUx z4Vo6PPy4S4ke3G5zB1Q6vYjS``43`q^il;$`NKff)5&lsDdA0s$)4vz_r@y0TH(lR zh|@^)Oyb?est(I?c-?iJJUi3KMd~~_CrmM#JA8kg_RNQ-^>6!H29G+jRAYq^bM2P< z*oWIP!^LtsD|Kfzx%&-9KhXe2Ym zem%tBa_3LV=9^P~8l=CWm~HJ}`Eow-y-C_+RFjiaH7f~(GRrh7$UTqx+n-VM#B&LO z8k6Vztx~7;OddiocWqx>2u!X=Ql#qQ_7r(^ne9T>cDJ%#`Hz+`>I$KkC~fgBfhp~rS(Dz5%MgkOD1 z7qmj9(b_70S<91ht4gP_w&Lz5dYY zV54_67nxvl%lR~btJH77Z2MF+Myd8{4x6a>>CT12^#O{rKc};xn@{(6SlQS7eGYeq zhKIb^F2vyDn2~0HjL0`FFnVM4-y%F?>oRSvMei>)`nNc*_Z|O^u*VQ@H*o>FHvU)j zvhd%1>5UdKR+(<63((-P;$~cz6a4ae)wQ^s379Uh+~O#A_-x<^o~^)33)&$Da`Kf( zFLL#lGiK@)PT=mFtT=RYMsTtGoE@M!X;YI-ndlynI*18{>*bL*`;cjZHKWwkBipq- zbGpV>N0HceS9{f2(A&ags|n<5#NRbZIi#{;2JKL|Alga z!0L7?tZJw(Wpu`f@WS|2KC;YoQi&KngEE43n?5l4j?|1!;7cnY{!osaQ@$4jdB`^C zI2i-9XI{JcO-t=Qx7)Ab9^bEz}Oow0hJ{DhFQG)QPG_FSlix$8uJrnC$8 zN8sU^|At91UsSufzP&zw-=F$KLN~X7lojJ4~F6 zH2z(%UZvHHg-?cMZ^vJ$z&~U2NUfo`u_)4|^Fra)G?K6Ni^(5`MjCk;NHWPJ%s*8GfBl0gmaFdT=x zNEe}{*uu>*-F?yX!jK$V1Vf=WTf^4ZEl7g0)oL&Kp1(Tz3>se+MZ) zxaZd0Ro9+>IMeHY>C1wwHgE65e@JUx6sY7#>vBi5GVbS*(2K-NU%K;#W9>%8EQRzf&TMn`_y>Ps^f)C z_S(U9CpSp08aXMVMI;q;2~SX;Wkz9qRW>TPQ{#EQ?_k1-76J3dtKvKFd4V6lP9{y* zmD_UVU~oxHHR?b7DDql)>kzQjlDPl-yQ5n_MYEKv(g5IlE>2?`J~>`(%qJuMPg^`^OySfi5(_k!hL1~ZMmQf}c1$U2n-L=A+w=FMIH|vx zsyy?coRV4kFxs-jhAsl z>Z)xYExR2vh$JIJA0_%+a?WGmKH~`R{?Pg+;n+d~%i*CS?UrpBBkT?204z4Dy(W zW#nc;41(+L2bE-m*{)2~@ol5O)ZI8RvX%+tWsY3oE}W*sf}RRgHV9J-{EA(a;86Tb zKa{V!-JMu8TG*s(>i&uz?bC51J#*&!o3|~3=-w6_&P$vcQg4P+M-F8 ztyUYjvY_Ut#5S;Pt^eF4SC54_zT)~Cb);O1svb_<`gUzbodU2$id;9a` ze^DhW!=w+pz~>RiEA`6->)KBMD7GBsz_>mAZ7{0UL^Ihy+W2TLKXv>kwr40i#Hdrh z74Rcf6eT7`xXPQjcd=90(o!va`ZDg=>v-yKV-u%7lZt0*aX>w0YKv!v#}_ngm7%3|!JsyxsI`dqdw(a){1e3+}hv-7lJyhSNIyoW67+Fc6d z?)dHeLYMda(_qS}mePg!8t2d&g_s$?Gp6F)>FBEe==o0PChPqRhxZ7@!DNr$x_8e%zx}(`QFb)ZJ)Q=LjBJ}H_j9rQD;Z}O9!|` zr`DY;RCaD1I8i}&(nFN?yk#Joa4BWVJAlFK)(@yncL29x2N!OZ?HUKy%m7yERMap{xevmvQ-%-01b$D6uG3s+9hN>Bruvt8 z5VSY6d0mj^0m5O&2U}Qh9zEsVs)mUJdPs`HZ9C?)q=>0q+qqTc`0#$>j=~c z4{aC(>z@h2;roFoGcja59GO$obgMX6oPzArxxy;Had~y1_63@C$JgFM2VGkNKZL#( z!+Y#}++s64?m`KAvVik>R%U@;c@M8L!#|7vkL+559!A&wiqA9YX6Jo{_|73g%vs)5 zI1V6wk$MgCiILr}F*{MoTtWW$agVyD^X^1wGv{In5DdOOlL=l8`-S+74EuM9#txZD zKEy@|l(z?ruTUO^2Wpex3%imr-YChlcv+R)2YCk-PGaF7}Cjl#n50E3oTOTPuU!EpG{2r=2E*sVmb~Iesp)|gpI8>b* z)aCj4vH-I3AMQJ};i(!h@}I_JI=WrmUJgC}$>a4zenf5}^(WbN7~(6!A?GDWF_S8U zEp$+qg|_JG?P*;2l&HXD?bNfGvr_PYE znr{-^V_7e^YkR)pGo$lE`=HfLfcXntTh$W*r)K`UK$#i=O`Bkqe`^5$e%qOLRBPb% z=;cOfe{0?zN#1y;(=k;4!zPl3idJe=fR7!vPIjj$pfo8 zhm=n878YX2QQqHyx&m3;ifv`>ahTGX`JA_D*QZIp{4Z92RzTo-il>>0K2?~(ucEk> z)rSA*1HMjsR8m|wyK;`=*{*Y1*oHW~jOi6d!`8S3Ho~AE^!WI!Uo~FpJufQmUWsDW zZ;B4{AZ4pe@6=yzQ*QR%1`M_OP|&KEe8ZS2~Xq)%MtJTYmL(VWBKQ7w&P= zeP?T0^qHNjsgW4_w#`k~A(5kQYI5c`kytP#k zDXi@W{J{e^jcar+t~OFjD^M%HPCG#WyCKg0*Bd@&p{6HhueLsJw1anORYx8{u|f@5 zO`qaszWmF(6kWJ#G%a*5C?^WCp8!f=lHBQAjTh;&8&2lHNbw~0OEjbc%+6~sK=@7x zOejyle8-T#upFlU%r~dy3PAP!7qr+^AQCg^Krz1H@i>syo~SIbmc*=6ah&KVvI!S_ zeOEY0R&^8Mgbxl!{re@eno*{Bm!xB`b%0<_DUs-rM7c|Z3d9Xt$_7rsZ zD(nl%@z1S%Pu_uVSljM*AnMlxqdpY5KY(hDyZkgx-+iA@r3Cnx=ZzI7JSiUhV^H2B zIEBK9%>x>d{&i4XvVRK)jDbxPNljWuAsN|^RqVxQ)@q!){Q+gq`TMhqR^|c&T;>}B z?+}8d*4x%%mNjtTiw*UnCM0H^!Q!3T@71mJuQ@Mrw_%NYriBJR$H@0*FB zSJZk8DCi!hzRy>+6^3D}Uzs_i#0ya8`v43LvHes0tY=Cb;yGhFxN0AgSP4oB@W>038oY1 zIezg`MSNzGF}C+U(sS$@4eA#$q*kw~!H^9bnNw3hYXl5U$W&ysNHz!H z-Nkw389cf0#&fIP>Q8)rVPX&pd0!E7aH0&P)VVxoq;#XkD$z2Cx?kYjcxtr5?zWB` zibuQ0N-b0awWWrKh*P)zl?4}dnD>4PTdSQ3V+H_BV84Fnn~p0*22!qckklTQEn4I_ z^`umuSPzOe+=e0SgWjJkP!lZdG?Y2Nn2LHip?VR*&y%k%Pg;-S+ISwrfUT5a>X3N9g>52X1>2x~(Bv2=ttoV4 z>@qI$0hVV%kw6F}<&8pkjx?wj86aiGqdZe;At=^7*!Oq{3Wv{&)H{*fd>1#g~mPOGvC;x=-8sNPH~7nD%S{~ zMXON$Hd6G9fQW7r!iBO|vM=yw>O3-kHZhuYL=hwx7R zmt|HPiMw6!J^1D97kzn*jUttcm*izs++HBNkQ{Z-OLCqs0#C|dDKp7V)gDz!8^&1- zL&@oQjXBFC>7&VXnEj@X87wab2^!iRteusl{eizdp%AQS^vykec-8><`|YIVdQtf6 zUx4d`hGRua91lI-ShsiMoqrWM{Lb4I?d|RE_ zI((rpeEvkCjw3-3VUtWp*SugE{W7^&YjmtNl&>$6r626V#bH?%l!2l!+{C+!1W+ z55W9(qgIy&wiJjXTCDA!fST$P9#S4cjhm$@M(yHLb(j{$3pwa9VGOCE$VAb6yfP^a zEXOF7t8PbBD*oUn4+{2XiOD4Q_qk6T?OP)q%w=@*MhSwV73q&5ucs4KuYy-BrG;-1 zA=Iye)s&W*iDgE!^tUl{BKFdH7DA^;&%r$!_IX4BOSlxC_`DtFYi6Ocn%nggq`f5- zeDBRY{!Mq%u|lYPoov1tTyWV(IyCd9i#GROJErK0a>R*eU$}XiDy8_!z-T$i2xH|IPF(`1wky7X5QO>X*ZH zKcdo4eym`<4@|XeDOv4;JuEqo&uz6!gfwV0b>X*YM$g&2&Zjes(>g)?$ZuctGUxYD z3uH0a{W#$H?X?pdK0OyYbBBkb-V)#D&V}>;x|d@f0Ip*y{OSnxTKee)vc|9dYCZK! zen&FBY}pdPP>&|U5TgMTMfTQA15vgk!`>jic5#x2Yrr~dTW-}1bvHHg*UxOL4aJ$t z4|m*7^BM#i)0zDsvlY4V%3BRz!^#d=o6j1FZgQ+|^8)-%z65IF#4fU?qM#3sz)3i( zaPZzh!b0L==)MQw9*+5P23Cq)JCyO?J6J$%jk%{~aymPK7eqSyZ=_b%SwTLyN%f?F zdT}_CSGoBiZ01|=sBrn|XL+9Afu+^*dlc8aD=&#!{nP&CctVsw^p-0eu#b8qw+vVOL3krf052yZ!-s z1^RuPCCBt9=vmsCxaEs8Z5XlmWkLDjK(-B}>Ik>Y?`mH1F!60;2lBT}UT19JQ*&2* zhw>Hs)!DCk2GsI3c$vs~YRAr8sMZn)-7J+;aZe*r2hbpj^kv?qbPc$)kR2mW9QM-J zNeYvZgT^#LB)B6_Ouo#Lm(kKqVG*xJP0zk5!#rpUa_edEn`!-TSo7FU|KYA|0JA?L zFS^CD7s4_U90KoQ!_R{b{Lscz&~T!mssfzif`b zgSXOMci{Q2&40sjM2y4Vx_1(ZHnPuJkOzkoGkM1z$g@lqTz=9fKAkGn$%9>IL@=hq zg)#bObR)wOf4Ty#HCj1K<8akydfX2kQ*daQ2;!aD_7j~@-6aV&+%kFWFgUC981Hsx z3%_cXRot)-wT9E`Ts!;xdDzug;nntv9sd!eBi1#Gw$?0SLCQ*i<00N`&7mC(`zxonIJ~ZDNkndW3W{Eo?BM;sFscQuWe0rf@k$~3y+--Y#zzbKNosM zbzu9{^hA$kz>v5}bVD6kS)1N0oiLH^_-o7bh2=HS`l9jv3RLEQorKk+S%dc6lWTFb zWBC+6S2+p@^$qc=hzSLr4NwwLjP#QjMYO~LAuY59nA$g9{C{*51~U;)r6wdHWFu*)r)cyV9ZLf2*Q~Jm4^=p-e0$+36a;EsfpZJIv@Yxg<^vzG7_c9Uc5cRHZbfl4Q$!M^Nd5#9~A3?QGIG%6hE zT|ZnR@HAwfD@z?B1~9=D(KV-B~L;PDw%Z#zcbI~cq!|9`&C`YkBsGu5xp+grT9OtDv_<&NT7w86^ zpE&l{=Hx=zI>O`A(%9dB*M(L{pqf~DL=>i8E7JJ(X;5B!WVUNZPbve!-W@ogd+FL7 zr{jc`l+#kZZjbuVYSb1=FW?yID)F((yXBif6}$QMf}-%~V6=$a6_+&*@tb?-i|y0a zq=_+`GJ-Ymv$W5IJT>@OUch%&G;Lb%-_a41OooY-b5Ce@qgZVaBxzg;5PD*L#QhyN zRFHcQ{40H_o^gQP$mc$))h-f7HoDHjvREdqQoIAPwn9?%!By$<<`Kj21N5?lNz=gf zXa#e{D^sqU7G)MS@>S+xaVGxrus$qBJdMz6O`GN=J`^Zpl41Od5$$SyS16_uYcP&h z24dfzlrGs2zBqV!>-v8eAW5 z)B%x*?|>1o;|KQBp487Zx9-UHRRkw7sp$s$BKG|r2Hq-&oM8mYg@4?_cjl2lv^PAB z(jFfaA!o14sgXaSV~yE))BtQY1BUI{X997ylErR3lbnp7sJfEfhhd0?I`^0_T@j7w z$Y492mX_6tgqlR);!#uF-Hex6)^8vX3Dbs3JKo+|0BgFBTCeSc!7syR$f@!-7GN4G zVkY2wrtlmEY<1UZE>Hd_F%Yk}WYJ5S^qMPKI}kZtsZ_wvoAzpfRGBoK#2U;=EWm4+i0+YFWyrSR_!_mafIhQH<6)#Urq~MP4Pd+}`>T%Wsibgyr ztV)wz>noE8L)A$kvfdR2uwQG1L9`Z%T39tT3Pjza2K+nk!5Fquwoi18b|lbe${rIc z-qu*LoOL`rnmF3QEv;|&2K8Yp%F2Ekm6v&{-Y0vvJB#E!4po~c@3CQR$k7=pydAN@ zfn`hB$1AxQ^cD^Ipt5#wvFND+x8{ib?_l(fqFXm;S=xD1S1BqOU2h&gIl(^|-mZ*o zvrZp)ronT(KcBAQ%L0cYol-%UzklSPIT8&nof1*(I{tNI4MuJloE4Y+OR$ZY)9jNx2Z zv>}3SH9pM?K3?!*Nj{YI5IZ3z_||b{3%~>1LVJ;y-UP0TRJ25IRsYI@uZS?mbnWI0 zx)m!*CLe3v4i4=zU|m{Dxz3$eoTO?R>Xi;rQ|zg~d|l&+o-{`Nd8cZfa&HCZiF0_X zKx4*Y+WR-zp&AuUXROzvE#5Q}G#b+cp{$wkJ>WH0S@ zSGck8qU#7XLS(x_Pkj67;{9#?m*KOj=folqH{r2a(~pzWOyUv4_mX77^%uq3z4hLf z3bI2kkSj)-j+|h|GVX6rhq7GgP~i_{#^|Br%$3<&tHd43R|9!m;5Bk8uA93A#Pe5P z=Bq{X*JVn)6Bh4DdEUtO+Utwhk|gO$I;x!BDo!*Y2Sq#QEY-{F#iaYrQtuu-KE3ts z>|rm)V}!@VuunBX`Bk`8J^5$Te=icDe;+j#>N$djFM(TjMKc=j&LU1N0k#CU5E@IR>l$4uNa;2G9A z^7q&E@!JX}M}vN<Yv*l?}q#EXsUjN-ftDq z1RAuezDnoR=Ejn9nBk8QG;(HG7A15=YrQ+?hoV&{UqP^iKQ{m6NB?wFkO-0+o1N3T z&#&^O-u!ouqw6Cwi>IWA&CnH3PqVi*M+_SFZidzs?yP+tWzY6bDgv6uLd zB{xs7A5#D3ad6OTQ(mA@w`-?aNAYanzYwvxIFlg0iCcrzBG70rJg~s>HO^II zDiW~}CbvP{+!_KTP+v^l;xw!g6QE4YiA|QJ8lJ`o_#-VDV~?r3Pretu-iqvU>>*~@ zD+!z|&6kKp#_9g!(vCgJO0{~r60FA>b52h&=D%KI);4@qYnL_IG77Qhq>DOsgZ;R{ zeYM)eiE`-`41=RB2P!5WCat?=pJ2|WIDYWp^K+-aan7ObQ`%T=f>-1*Rekv=VtIq; zYD#bN3Di0iG*(FoL?+2_GAir!X(%o2bcEaXYiM}zgEh=!=@j8F;W0R+Z7X@yKk0k? z#=ixR6i6&u>G3@6)0dg*&$3m;tFwn_FJ|P5EW(?CF3B=Z(*6y{p1n`~2Bj+w7F$>h z8OFs;`8UY}UdK;uoKB7MF%Soo?rSz^dwR64CY1H+iWCQ*9Rew@-xh#jo&U1N z*o`fsPR~SZBd$bp_C&D)6}d}`{@QUMDfG=jtpd^Y866R!Qu7W>Z#WgP z4;VLECPfQPOb0?FfU7gP0S!m-w*&AoG91o`EPSM(D2(cJgg`x5Hh| zMK>F;mh}4Vea*@EhBvH_$AupZdTY!6HJ);lSA0btN%iVBWOM)LX(C&J1P;RgVMtGHy4C!CH62=Nhk6kxK0aHh&6ggzvYQP2^=|wC zjCTli!Im75uqsyTgn|B$P&v4E!?+8{3yjs!d-igx#OuwShT<;MMQVuYZIjlyyQH(8 zXWRxkKTMPRIuFaz2X&;M2cbSE)=e5|RYJp>hz*PIVw)4z$#lBO zJbdc&5#00{Ai8FlwFfu7K6x~-{l}S=R}x5X?epW9>z}ciJBPR6Zf7L)=(VQAfTWU@ zB}DjjAXecA@n88t3eM0p4v0{_#?J(kFAz2NhT8_bBi&g5-)K8gTZCa+Wag!wc`?8>ffv}?xQxC);|1p1+>)~LY)ti4T%C4pms*a3 zy4*$6l3Y;F50K>lWu6!Od2@GoYwbWPxx*kD!8$6w-MlYsz1cui*lYD%jJvnEuhu?( zy%iXqn#kX_sO8f27Og^kCpV^EbgpTqw=OgomTCiWd%WgGb=fKwbM6{SlhjHF{O!r2 zEy%>VKIy7Y$vW<5*t5;dXZ`8`qa2~0SJSxbYyxP~9h(;`FBxvtCNWWH`JsJMCzR<%JzzaH7w5{_^hP-%k*`@Ri-!Zhz&|#x= zy@KwlU^)8txlJB-N4Ytj6v>&6Ll#D7ylF^V9`Wrptma!ZSDQ-s-FC(=IOft*#9ADL z?lJg+L`zX2yt9PLzXgBUAf|eQtT`2Pq}*k0q82+FPA#dNp4mN@A}O>ME;$ z$zqyE2G`_K*)WFdR!rvX00_IwZ9EiS`Ae9>d+k&S82YLnaTo0!q zwMy#u%1w4`z0r-p&w{Q~_gbPgHEA`)`Y)weQeqYj0pgT$GlzK=#cdvrzCGg{m0ad? zlJ`a_{7%-jdc7Pk2j`;tXLsS}M%*HrTA}o9R~_khpk?5w@F!9+JuLNJR$?()YO=`^jZ6ycXHu=Op;LV&ro_{ zAh4_KYW9uld9^-m)97dL%N`f;3*P1Jl3fX{jPEva;+3^0*tFyH$%Mu-a@k`$9&fo(C;^uQnXtdOI6q3JQ9;~2l@?DXC_E;HNDB!rTDzG z&!ImbzGRax)qwe&Z5^`shdMVYFG1VGXReG-tTemh!K9?@K|g$R@IplfiiBIO4M*uB1Jynw8KO zQMx8tMwpsPlQ!8gEHfBwJtmrK2Y_W$zYrnOtVm#PMDIsL5;Zb-JMZfSzui>=|U#12!w^H6p0Y+vTjl`Zcd?jC{5w`BqynekSYtvmR z9wN8=o=Ck?&3AC7DF52=j!D{UM$WUzEY<}<90J4+3_@_bSt z0%+8N+qPm)?aG2W4osoFg)WV+7j@^;9jgUH@b+}mo^*n%WrQgg)IJkYPJh0#QIr&i^_ zomcnPaoA@B&54pR@n*>nlw+^!#c13=XEwk6nib=F>VpV4I8RO6=^)=P-m5@JvXSCa zmM)ugkh5Ye9CrelBl!rCU`BbATz|Zn z;;+0d)Si>>u2)}wSOC=jUBH?Cof4fC*=O{0J=ww=ZeQG{+|2*dCohnLiddjMl&dO8 z%I>dyBpmQ(_~dev#+Ogh&?R-Y4N$Oun0Tj|&eyC)pEw>%jifVYo~!+vHBy@l?o!q5JD-nlz3 z3=-SDwiekGHT?g;YjJ1OCm3`H40GuH%onGtY1rHh0KY{P(c^kI(|tbynK=u@2T+E4kiahdUhV@kIn*Z%>f$P3a*zM^K8sF4WPgaeN7Df0| zLsB7O>(cLs(^k^{0VzyBu;>`5SmBsG24|iOH+N(>bhC*h2RhXz@vQllL^cpU&f63y9D zH}=r3-sF*dHr3>+4%PCB`eWwn zkny+-vEuZ(Kqn^VHE@_Hg1bS49 z{Trw*{^M0NRBiG`m7kCF(j@lT>rRe=cC*HyzI12j#Eg0=!DO_XVO)t?cYAc78aRL+ zPJZ-c`cv~*9pQg;In{gZ;rFbD*(-wl8O-WA`r(d(W3QWS52?xLEMYC3It3@+-Y_jLSJABT_*7qwIyeUiV(DrmlIEG#|l zuxduI>a3v7pzl=(7$Tzj*b5KWgF8KGFBArPm&~iza)f3~?abO#WL6ASr4Z3Ynf5>= z@67`FxylgK5tV-Kv&0-LsfG7t_Bu*)ZZ4>=^e3$KN|ckY3yU*?2Do1W_`7G^5^*{QcmSP#9#G$gkx84CuUs z4FDFJBDO35J9$F1He}QOgnYZVqn__-57cp~`kX*v8;ge5@Z<~U*5pnHmeX8FO3(Xi zCG-Z%gnZY4rrt#CVr+2WlrA1xZ9FIKzMB*pN;zl%hg@7mKRe=;9YeiG=tpK)pxjlQ z@u4~d)^u~NvE~ttO;FlPm_3>`WsI3RjA*(Ixgi9wsv+FY>Vn&SR=*lYIGfz>>z&B~ecq+O%jj!sU<%6qR$t<`bS=&m3FVTBXA z3UI)C;FXo-9OoP2iT10f1wAWH57g3s=!#$nJ^NGHw@VgxUaCX1vL|#R%rKg@EL+dv)+>JxQpoA4k>#{S+Dn0*1ALro5Z+R@cyD zOm$<*`E7pF`yE!QL_u>?u3KK3au3O0|}cr>OCxD$xuHO7B6_CjhaK&4gfe1t(6;{1;eeIP1H#d zzV4Dyl~wi&HMc?WHDA@5{UI@o(@T6vVwQ0-0#LYvZno7bGofE|7j2M1FI5h|PoQR5 z8lH4JzP=f_ChaqHm^Cg?Y8aXE48GGw)tmU~7Qb;?D;M&!vp|0Ls8@gXujKYi0{@EY zu4sT$*>wGt%{R+l2jcc%jI(}j(C9l~6|;qFWsvh%+kqAD)!PKyIy?H)onBcZ<0l5| zQ-6)CFxumDF4?F&sj#Bk2tVgD8yc1Bimnq`%{ zBVzfyN1+_Aa!?k_?~^QLkhyGvxcHe-yC+C6*ZBTBR#f%Ddy!4crrkOx*N@7-hF)m! zYgl5NXkEK7^r8vqlyTY4b*kVl~%bNf_kh6`gx2U2>!v zha+bmjdZPS`=edVmLVE->E0qWiwkCq`|4Aa+G_D7)H1<}vh=&wtgEj|44;I>qZL5A zk#}}(GsYQ@X!!N4yNlMxJD6l{Htb6W3*TXBoCwO6rhvC3WH=Xvh7`4ds-((Wvb4OB z02;LXuefw;=s#t#rpq-|fN%QLZ&}0SllLN8SQjakv9TFc6nL}w0PER*-$}DQ5OKqae>U|2euv06 z1d1mq&z~T%4{yArg(sXRYsregk9dFLd@RND61W^RcUY(6j8;p^85(NGVGYp4pK$fL zl&7tu5VogZ4tYH`Ajj*@D?F%(z}b3d8oUlA4&+SqN;+X23-_*c{B~I0rhLIYs3elK z1KKoKLusDiWP^@i;?3+2-CJ_Vnud}q&Yv&ZI?+lp&^Tqu)1x%L zReolzWjDWuAT2N__ah#plZ}4MuDia+uEa;-{-XRYfj1DSzLvB0YZzc|z`82vT2hfN zH|Y5G68cdtfpU>~+hhpt`5a}OT>qVaS}gSAlWa@+C9M(BDK&eNGBt&07n)<@0w#ag ze#-Yb%)2gVJu&u*_sQNNz$QIO4E%z(r-}b}erh91&@V?%fk8@!E%a%Jk<*e5(4x!lgIU9@cKHpl*vJ>iZV>lIAl@T{^={c zMR&(vYDrZa=X9B1a7d}X9BBk8Wp>{^(8h&aSTsHTqXPRavFo2ULLYVV8iwGxO^kSz zj^hK(XX}}Ohr+sX=Ov=|1O1NiO^OG+MZgF@a};p)kP;?Mf0+3DUe*a_xSmyC?GnzRtl9|w#sm&omdLl7KuVC;*=c#W43=4x zU>0i@&p*P{q#V59FYi@HYGOP0Wcmt@EYT+Ka5Oq%*-!I=fDoLhG0|BDs|P(mAvT8= zu@Yo~)EWi&y6>ftIq`tF!!dI&=35W9yAqsx>hEr6aW~W2Z<}p*)q?!`jCh^Vy1z*~ zmCzI)cKFKip*3vAo(R>eOlCx9Mo93HlYob#s$}33(7LxWeV)Z!+^!E@0mxeH1);U) z)Zyi`=jLEc8=T;;mxc0|$OwRRv0641+V;ZVqOI0S#lqN1M>`f;Ohor1Z}U=fP$Pd- zod9j&#O015P+Z(AV=P}HaLY*0@>iBz&suVc4b`lBMZRaf=Q}=Jo_^@uQy-V5i{uNd z&kbzw)s{BKSOe=hi8o3*NS@ z1qBw8L_M!Gb8W3&q1rPW7#jGB%v^5J?RyQ?!bbnUp+h`L7JVwD_oggQf$WF9JNF3o zKIRC}Cwr;IsBl7i`^KD8M(883sI7hDZ-NYbdIfjmorlOy0euKoiXYrcv%O6DsbVYD zFd@x_nR*MIauvgnFA+`c$V`P8-e?71Vs;|W`C2qwP9J1pKhro&-3)&h8IvkupmJ)< z+x>QFHBZjI&J|-Stn)zQK(6>jFSk+WjR>%v2gag%d6EIxc$SWQU@Uw;(M+()^fsC9 z%MA0|${T(cVS1T5=teh%$a<;Ri)6Kug7=ZDKIxOOioA1&gT?7dOUZs+RBr8II^4{u zr!~R~-F`n&eX3BZ?iA)BY>O>}D~SFcB^bOr-5ag{@WHwo2vc7n{q;L(*A>ZEs$(@8 zH|E{QK{QURUz`~4-j(&K{wI?c2F*cLqDX+F-Q4u=R(&u3DrWcI;6i{+r@`M`q|FW38%U)EXIP?<-;`68U!;+A|ngyD=D9>LXz#M(^NBtxk}JGzL{ z=Ig1jii1nuv@@#{b1oYLABew`7aHcaexWGk;In;}a~XdN+(F8xRI|$Bf6%fG`=zdg z^fyoAK*@A@qcv)774EB(7`re%la6%7I8u$;ZC4m#0SF2ru2UNK{_ zt~hS-a2!B&P83+S6_*AZD%GLyvr3dlxgVjRDZ(7?=1w72nR~beWT&=J zZdN$?^y&@}L<=_^leWIgxb^pHO&&sfg})JyBMiH~6{a$5yMEmA%@;EE!3=@R3vy$o z&!)f@l)VlDl45s!+yrZ`@Nlbud&^i40S^iFZ&KALL+JpEZ1 z;iIYHl_}Jt)W@D;czMRIDZ74JRtsmp?5m-YGEY}-qkBZMT+&{Q(Gjnnd1ygZ3u`UnV zBrn6K>n}E)4=!H>3_hnBmwX!5)>YnRNL>BFHZTAMx^0hf-rMuJl9axKK2tL}>NC|1 zf4e~P%GaY)HX?{~<59vAl#wGTI#+C_3ES{(%Od&5Ajn5f6Ashb%lf+Iw@RG36Z|Vd z@XFdPenHua&<^9h$NvB_qpxj#nXno{R-3GL7%zU`8b}|Le($@W&P<+q)>rYhikqip z8Xo*mKk^FS6UzOnlVY7YuuL?bl+><+)_K?u;CR|JXcJd;~^Ub-Q2%FP5*`X_<`A8 zcd!E5opNIob&fo!P|NC#CziKItf!ROb z-Cc3#y3NRI-al*<>3$VN#84Ug1?~`bZu9BpliZ2VVmUVhgQdSr}~g|INIkPk@85;I~9JK?006*(M*P5R1LLGZhvRr0NdadL3#aRRts zRVS#R6TX=RvIXmtNu1cR^>U%TJZ*Xo;1$#4w_SXav~px9d8Zxj*-pDy+vbfF5v>GX z1}|((CD6OOR{u-u-&>^eY&#z3(avOAc?D@hl+Xe*IzsLmJs<=wPR_rJvvSMR!{_Fi z3Odtja4N`$^*>jLn?!~;*f};>pT+ku$<-nS>vk5js+L*Hmqn;TIJ?O`XOTVo^3)f9k|%X*`1yL{JabRweP1X8BvbO zQ*Qhu*A5yF=K4<+Hnn?)aD4#59L3eWxvp~yvR-&V5Dpx4UHwSTD#g1GPkgG2*{L)J z?~#pWkQY-lq~tc{n@p(QH&F(}ocb9IIcZ#suOAzB3-l99WL}y_O|I_hr;g~&Df=?} zY9gVhMl}_16dlH%-<(JMnyfev8XCIv{NS>3-DPqPxC`<2t!~&^R>2X1u_-^F8+|A_ zOOS{6atS}cqU4K8t)*QX{fmJ5gXJEe5>I1IO9o-%3ul}3z(W$TF#U10>GI=yWYRKD zQ&Zv*s?V3s22w`}4qivegwOnW;XYz!{T`-|91D9EKyu>SAWr!$Hyk3@aEy8xJEO(r z?#K@IGSPUiO4r@&6I(wkjATmG9r=Z?Dl)LDil8&a!!K{c4q*2Y6?1 z0@|vgCXyRwy{Z0c<$9xEzu=D_ug%>{xpcxHpM7yi_f z>?zuW9k^k{vue27sI+OSE|-Kv`+9Z5A2;;rtg0=|)Zd{f_$0M*nZZGp3#=&rCW`$E z6)^6>AKD5-#uJPxuc?@}->;gONL-vugajcMfR7=8bdh1KY*Eb_8HhfBQAvuygLXB=ft5~i)JsnGfi6gs^}B}{LtmRl52jaf8l&@ShX0z=T*c~f zv1pXP&u~$Qy=ySM|>;fGxc{^B~G%3L$mPa&nHaf=Q z7-dU3Ywr?aT>RIP?_El?FD8Wk(dc(*%)epRIT}OUAB1~wMNmU=hC{qSi5keyURl61-;g=1gs15Ci*o4f{cCvDBr9pj0wvEX|}SvRMGR0~2LouQv|%{#kZR-rRo>-nyO71Tjp`&PC7_{kx< z93FSO>3NOG{L5q|d|MBg;vfMh>D;AYy3-ep{lt;yWnP9^5{7f0=m0^L(wk%M{nbXt zGxdL}H{dJ_GGky3+Gca#=9}6qHS@+$4y6a-R@tn^pighiX1GFu}TA7M?TITX77f5%^?PHHba>hTzor!7N3;Nph(nF7#Y3 zUq1AezqWPAdE~P4xOB%yt8{n^%nOIQG2ScFBpKUgpqf0yZvSd9>Lq;aBVQFJ#hn-# zju=XoeU$!tOB6Ny-K~D$AP>D*NN2`p6n>*whi|O|k$@|w?;?pqfC&HUHh2LCK;sRM zJOm(AygO<=6otktlX=^Pdk-FmCSDNZ|0~y=uUIyJ<{*I#Fb?Rs^C{v1X^E-*I=C)l zTX2bHr6X_EFOJ2P6aF}_ZGUu*HJAA+xWPz^iN0{}CHDEENwEK)M*Yt1__7YC=w|8Q zUTe@0?cz-&0qa_1sprbl+)Tj-yXpXx^d^ogby`a2U9cS*3|XBHxyt6Ri>_3ET-YA7 z&Z;aH6ay%q4e^Ju`NO*lk34kR5rpI(p?W2YV2=Fr^W-lO`8%!)?d~)q_|6PkcEGR{ zZ9*_2$DCm0pf*(cj26sUt?P}qIy2g?_Q|WnTD|X!p;xx1z7fp19U>P+bqUKt zn;|OW9-z!Iu@#$RK^F9XbyXFZFVv(F+lFCV0|yY%8vz;J*J(@M6H~GE!x$c<6oG98 z>EMWyVfBlPe)o*on<#Mv_M>IjQhL;HXdCga^Ap;9l@v3X zJX65?y%H)6kt0AIK_1)Xs~QQ?RLMi(NZPS=>JIzljMUe{GYw z*0+5y$#r}93lq1uyqo@&T5YVH2imS)E<_Q|-B{;sdOB!S$9JvW9~ONx0qYWU{KFXx zPa8OrUZ=X1S?Qc{n%{mgtO@_QOY)QZMl5autTJXOtSlW~V!^KKoQbJe{f?O-TN!LI4qY{Xh2^u@v> zH=xPjQi3%O#3{l5l3nkoC#_ih1H6H~8?a$$i-B+Y$pe7S^PF1M6iA*U(Qi?H$Zs#N zc1e4sW9*(gw)N&eb5VH`>qHWC0fsq*9r^Md?-dZE2Gp4Q+g<_&%OcUl^ON-_hHT^u zq5x9gXE}(}k_%Qm4XKbYlP`~#ozmM`C5Ydm7&p9B%y zH_2{~__baYgrwi?cwZrVbz9 zepI!Gn7Q_oOB&Op+0I(VQLI59YXEWx);||V^5AhNCRTWgnF_H>=pKFr{_sC9eqkH*blya^%$T(7P?{-v{T|)5vZ?PU|n?4)TYjAiZabWJ6*q}CsbCf_$ z0VNV21}f9{fu5l?zKBsDxMxLQ)=voo7eaS>$!Lm&SQLizv4|Mv{rLZxc8Z-o=xA!6a!EFn$ZeG zGS7}i=6j_Ce6n~GRH(UHK=F9!r##ldwI#V^kUc;zvki=5>itM{t0mZ~>-6*J$FT(& zpc`!Lxq$m%*H)l?fbgE6IrPO`!&?=&Am<9ty1Lae=@iE0lu$!3dm@CI8&YW>YvaDk zEXcY>c4oESN-}w*s<9JG`tW{42B7Q6Z~9u*DU=KQ1p-u)8p7K2ehQV?C%rTAB2y4C zlcu$5efklYaum39^JV?gpvjw3Oa57C8$M`7!qDsY2-!B4ab*2_1nt`HNtU;+$SurH zypkB2(sgqp79D!A-KOch&*`P-jKlDM31nSw$+h;dUhPV7eA5=1Vn}8^lW)HSzk;u* zP+))A@M@@*8-b|a|IF*Jx&Ft1tukSq;WbayIC@&u{s%Wx=i@63-vR73&8t;sqpDKz zxjt!0yqZ=y_+uJMaIA-$qH)gahv|$rHg2xNZe980&F4AGa)bD)I?at6jn2N8W1Hq0q)Bz(k;Dgyx|=krAH6 zWgdE8m&4)I(v$vl|D2Ru?BH!%o%EB%n8$Y4ukVvkhd-c~N+@yMnV2;u z+X^JYsnWeCE0%F<%Qz}?d~jdrvusK1ZOh7Pk69QU_jeJMHMxHSG!P$hIehD-0BmL! zyV?Ilng8XS{F;29L=)@xg$FrVYb`$Lr#r4aEW~-~Kee%nN~tE?2a-RU=PXCrIr}KW zaMh$;U#fZ9&>pQHz;v8`7n1LJL{vO9Kg^ABFQ8Z9#5aI=7ybt^j>TgrxI(CnQH|<_ z2g3HUqU$&Hb|fNx z%U?v*Im(Usc08pD^lFrNckt@0`3$IT*r@<&M0J)9^Sq4uuHE%x-yCJ9qMY8!yK76) z?;2&$6skuljZ=~`rEfZ_{esKGD#lPr*)oEzw=>WSI&$H{8EL9~xY91p2kajlB9m4e zrcN^&R-m7{!#*E(VU~BIV$U20qEB0X^1KE1ls>zYHQeIBo~lkXMe%XB`Q=@e%r}}d zP*~G)=j%_%@q7DV;m_LZOw?s7QQ2CA60)}hcK@S4kRX}%S-yGT#+*lJY^JX)OX=76 z8+d=1xDP8YwHl1tYRIA{+RZK?@f!Nt~D)xhvgLq0jxN`bsVl3ax6NFpm` zd1ri-`7M4xN>p+hJMf0dW=jtD<*T~#b5knj|3g28TEfQZIu2dhi8I9w`-jh&Efk#kn4bMfB+@8+B!i_1P8xM6N^^Q6*JS_KU z+T|`!fs)`itD-(vt-RXZh1u)^_V*zK5I#BU@F^bG$r3$_`?F*zMDwwXquCO zcN~|goH@*V*Jfv>Wgl!LYT;B!S($ChkA_f17gaxHd?VuTJF;tO#Kv1f#@ty9xh5%T z3LLzL4F7FTlzWyhZB~J63adJ=@nTd3{}R@;B2E$3@ROK;TXQ1VyB&^lu$SNGY4U0F zv))Y;bT$^OS?;J0GC+Ap{ zomuzNL&A9-8dSBCb*MOgo5sFRuxfII6POsX@*bOiakPQc&s(@@dpE31c_vc@%*1a< zM}_|^a>5cgy6~_gs!|mFB_X+9Hs=rF?<1>c%qoz#nw1t2U#^GinHo+QnI%cBUmdyL zzJvHbh?H(~48b2rvuvq#`yPm9z3?u}6#N@G#-gf-=jmouIWtZuRw9Jn$y>{tFhDIb zh{SvCIu0_=e@nO1{cvr4_UJ%MEz{BrtbvTnzh_)N^zn)%@n_;EOJDgac;sR6VkYmY zI&K+plkgYN^^){<58Y*)xJ9XS&!FAHv%jubs}piRJ6SGLCax?{v~NyPSM3n)V)0o= zY?Q}!1Q{wb#g5cIF-u_MOWM(}P+Ym!tR+9XI>owbt|VP`>WFf>UwXk~{99FPV#Ond zeY{B%wlr{OO&VYAgFcYl;&A$hX^-R572KHi`G8HD1ckOijqD!g)RC1&9sv3RCQcEL z5@BVZJ;X-8pJpPT+s1gA_h<2PBTw(c4_?mGe4@@)zeYA)Qw=%B%NEM$5zpNv8dixK z9+hYR+Rj9!+Wpl|jyNq#43rDCI=iNmC;upz;znwZm|Se$P|!qrx}Kvw<3GsB6srvZ z9XKqaJUF-AW|vm9p`*<{e9EtLCyrBENSlK6i^pozp1%rxqjFojVq#5)pQwA)d#K_A z^M8@Je+hK5d-QUnNvKX2enMrzdc=<4_>3)1f34QTsZvN4Vg4qs*Zp2?6?#`sL)__( zd;t8vih#TDoaO3W2yeI2W?}ey^G~TF(!f~e%XU5j!*JvMqCnPNpa&8hxB~)L_n8PA z%1vj~R(a5ER(>B_6(qjT&|2GsyW^2-!iS<-V99sspNP8#JIXg#Q>X9NtIlFBMfV!& z)g8RS>Z#n@+*A31*Xo_u9PvOBU;mTHN@@a}RG4i%Vz610*u47`^okvMt*@Ocl9@&r;Q1FJ+L>kTbQ@MQ zO2;!(m9_^>RpyC+_iXuL(IKxrMl#`|hkBfeK*!8fGxjMdnR# z5p#=oc;zz_jH&;HsJL{Pv1`-q#FP`;nCtf4nY7r-A<|W@ifTi#8rNq?b6IaC2mUH8 zpW8o=nbC-tqij710sYFHCVs7L!|f^NK9m~Ef7BJPE3ieLMrs>4FCxMa@#aqJhli|p zw+bz4+aeLoS@N?p&o{l;y-g7{28Ellbi;zhe7>$)_(Q?9ZIKtzUJ!B^kKWolZL_9)tofj3I4Jm@TYlbU0b{Rbl~BxU-Rq4e z*HvT8B<*Q??sCT6OHgrB{A9y^LQNC()`o5a;?mSC5ywvUav}4K$6B@(l|QI7r#&-z z2U9~~(#(rbgSRhnbHfAquE{p0^08w+<`>I?4YB_kV1&wCcq z+qtRW`b(^<=^K^CW(QQJnWt+7M|pSsR_WYTm>es&Q z-qjzN&F8^#Z_ z@o{S3dh?a^qIAyjj$G6)p(Lk2K0*+13sn(tDu<=p5qw!LX@0Avxo39HHgsyrf#Gx> z6PosHrk*8(LvK;PsQy|!>vl(voPKT(Es~dc=ZD7g$td2!5V&>L>4^g#pVzvTLw+>6 zJKW-L#yTqC*Lw{2&KjuU&NUSIe;X3+LYjAH(4+p}zM{F6TC75gu{C#wGPqU3Ye-d`3lYrmYts}Pa$CBHin<-O`Z zO#f9H5@tQDrGx>P*7Ijk@8h+d_X(=*C|%#~A992imyWNE|9XMF$qX)n&u#q=gMS1+ zI6nc`x6X&5PE_EX8W>#-!Cs|bOtx!j$9g~iN`(wm{ckyh1V|%z6;&9KLxL5N^pK`_ za-O*8cMOKse5%X&<^w=S_ZQ$gs~&ASYqS|ad%Py|+V+o`K(%|lCqBE*1nE&N8u2&U zB!?;zcYD{ylNypADpwn3`UWVM8|6pmvRf1sy*s}IjCIh>dRwx2%CymMh~twQCiW5z zRIjywF`yU!yAq<@Fyk7@ovOPs5%PeBEX?nSTBcHJ8QAhwQ)#b|BO4|W_u=Qy)Ri(` z|H*&r3Ulci6$AN_CesExYJ?}4pGn()V7~^3Is|)XL;zKl8?-|1`32i2r*ZauyZV-7 zcu((jB+TTRX^N3Aa+TzEW}(8JETRLOl#DkO`o1E%WjjvKRd_9|Rld9=%RMw* zq28>Fd$v>~@<|nNOX}g`C6WEe1LVY@GDJ#u57~PC!qL%p_1Pau^alUN-jJtxmr>2@ zT0@Je85^9MgQET~FXb0KCjMIpqH}X(Sf*O0_mE?2Z2`XcLAy{u2kpi5iH}BraFIm{ zaXkAiI*=-j{7!yB&)x9zF9-F+WW-_K^c}(kr2UBCi3G;} z%wyg@;YHuRJ@?Q{rehNJ2Nc52qPgy1w;WK_BM76D3#x5_CbkrTh;Um zBj`W>sVkE`-id`kh~lURdQBGLBSm-JBBaoYhcLI6;Qey)KEwc0$F>L0G3G?8s`owCwOT?uB{ zbjDl-Jy%Ds2(-p1o9?P}hCwCAw`vmK0)5Uq%s8(@-UHkx#RX<=$+X|9!1vJpb7jV6HJ3 zNZHp^L->C1>N3Jud4u%)6|dOA@F?K#C?B!m-pTp*(kFEy^ZuN;xp#-TjBURXFVZGK#~x94d1S_^wtFz>e<$pfYhQ4jKPGpW3w9FK-+5WHH4XnkMB#%L{Hcr7 z=wZRJr9FbPDUm5Z;ee}b!K89hqdn*lX;$^@bCmdAI}GE+?9BqJ=n`feGqe_WA0M87 zU-hNecyvjBw%}m?v%#W|JAjU9_=8x@&h!=Ht9oeOup(`~Bo!UD!h83SU4Ek~-^PAc zuz0~<3v_m1SNKM^ivL`1A>ikl7|z|1QJxNx$6p))FWGH8{d&|6)Du zwrc~bbUCYOWl=KQ&4Bb3>vZ68$K0X5VWGD~)a046mUXAx;z-8sB4f3VnrA5<4UAbW z&hvyLQ(bK&L#Jm7GoA@zl8cz9XHyaOH;#`dJ|67w{&s{`*wNNB^-Xie>Qp+YN`a?T zOc}4wNucdM2k9TT`2?($o`G9*VZ)nMLo4s>vG~S#Sk^ehSG>t6;0JJx7gqZL)mrrD zCFjCw6+-0lm2R#cYB>(7D)lRab)%Qwrs;qvCS@wE<-eoB~hV=S`tjA<&tYw=Bg z$vvhiFduQ1+NNlnxBdO!4~JG^F!g*rhzkKw7=}&m_%?2iPaJE{qow<6TRqoRV_<5E zm1n0|O{6R6P|iz~SmtUuVzBt5%x)zZYXrOvy+UK0HD?iv~Z zm*6Zl+f*9wNB<1)Yx)3h?0y4P0w5inkS#9>0M^3jAj*TTgT;_iVMcl3% zsy;czmofRIyNv{EZ!>|eJM()uf|#+87@3uf{@<`gr059Ao#vA&Vh~asp-+y?H$8ou zQd^}O59fTd1fH|su-8y13i+qqB-=k!zcO)2ROT(-kK<3B=JftAiB3&Q0eI9Ff6d2k zAICkSis9FC*)(cjpDLEhPVky&y0qY2&b!ygKMt4={@V<>y{D{;E;@cdokp z{It~~_F)A#2WWwiX2c zH|Y%IN`lg8IO_~2(`agF$99}dx-fhT ztSR4&i486tw3L9Vx9tEtx8!SOjcJa_Rx#CA07F(nr6cWWz zxv`xbh;9y9Bdwku;iAnazwPd&)vX@hUcRoBWG#+ww~{Muiq~FBtTV0E(?eLp9M7w4 zs(=1KUvHHd1paPH-Wby@^%o9(Wa*YfF?tEf1<>k`3WUrm;|b=f*Jsf##T?4-?G(pK z!|nByQpi(RwmW1HmQ*)+1wo(OWl7v9EuSk{t;3HlsPW0iUrWAMx!!o3Q=72@Tv0d< z@s~((RG8N?OgEqQFLyS{MARg1suXkoP2ask%(1pqd$NO{S1~hBT7it6w`47JZjD^? zJGt|sWBFBrXyQRI5js$qP(_#dNG!zlP5RxUhp)6E5MttAz0bViILgERfJb#bufwwC zYJ-U%)~dDqO9oPm@Qq@(rbM&_s=@4&r)P9Q)6QW zdKdvJkRHoS{fJv=LsG!M64#5EgS4}2eHv!aCU3RSj4&EAgWlW_21L zxnWz`DJ^moiQBXuIByO6VikoI<}Uomtk>#-kFY? z+&e4HFVtFSNt8PD6>QvdQLVeKAx-r7(P=hgA`F4%_~38Hhahsd_u*@?JxrwR-p_fD zR1*>ZkcIBe#_;Xa9o31}CjmFNPx9PQW;op-6|!@c(%V9rGZ`y$`;aSehCyCYr+qsr z);7;MSHrMrS?M_J=>znIJ=3Bj{?6``rp1;k9<9sE8})|5u2j57A7dUBx(;d(@IeQK zr5?X~J2vZ0aJsIuqWs8MIH&XeS_%KT5-)HlnJEEqUeEhf@;2M07Pv`sliRMfp~t8w zc^?i{+9Bj@YpvOk_v?uwA+ehGTC(pJ%Mo~;=}|*OPK4ZCEUx{JP>a7Uh;G@wN4@Wo zNAr6%ZQBqmsxM@#H%fYHPc3S&pn0bqr$AI35kHGWc&l=A%uJIu5$qGMtK(YJggJqG zt$>3UQa7H0YbEJ_c2Oxt8;20nf$ZC{)`P;t=`V1bRABJ4(<|2~7xH9pR5h9N9y72# z$X2>a=&_D(99?!7Wp=iUI9e7z^&8V8bR56;DmhXZt^rHZZxwtu3=7`kS20q`w>M8% z0iWtIC!6WtX1W_}$1;Ph5f#l+1jYX>bG}|pcx^1S{v<T#K|} zpAf^l3&;^({-{e(vvjqIt5jL~g?L~wy9O)ynf5U4OYyVpyIO+pqkhH2IiKU3mHpvI z$D?MW>GF5e1mBVCchJOldbM(*KWhDkyLgM=xEb=cfTbg|0g=2Ob1y4fVDiWzl6qF7 zp*}ZU^D@I_)QCJkh(4ZgxoGXo1@n&4)-xD+x_E(;*qmeeNoLM~07}uVorN5!Rp#Aa zT(#w;kL+Itk0*r0p*LglJc6XZSk4u7*L67R&zgngCw*Y*?Z ziy0!3g(nM9)M=@NsXZb94p2ZeByWRqW*l#cGW9?A`V) z(cRhiw)&Q7q8Rd=I`N zwTbm~UbQkmXh--%q`ncDucyO{v0L|+kKggYVSS4naFR3^*-&` z>U)_06)h)M&4J2}#qrxazeT<8ko43Fvubj6W;N4&88T9N5LMJG$qj#xh6>9TfqZ{040QLG>tK)lb2eP^#L%ZIWmiJeeWoQ^6NTrEH;bB%qf4>(MSvAp3w0I)< zDK$jQdV<~gXp|!E57O(l_j6t4$Pb|(Ij3m*4Vnn}Lnfz60B0$N6Ioq#neiIxG(9kT z_52YT7h{Ti1|PGrjOg&23TMl&jQ+RY0a%I6Rj!O$cd%Hd2&5mD0{{A@xc83lwNlnX zUB9or@VO+8RXLRpMbr189IrXPmTZ84JnPk>Ko2)xTZIw;u zb&>+8IYOa)U!jNxmsp9Zou+7sMvSkn5Op5mW}NS6Fq_Srl3iJCl4>iBjf{U<=ueYp zduwWjrc;CNX{_fCsSRTpWzl09fdm&c9_7L4HG!yp8~38b)Tvw~pLgMY%M05m49mlx zM2()ja_&v7An3r9EIyAWNWS};JeC6+PME30OVJ=+$FD)hY`m$MTT=&Goo%)Y08>|$ zN3Is9h^8*%KrUsH<{3YFG= z$FYH7swFsJ+`;)#kyU`FN}9c-4>)tc5(0CdPBRpKWz^gd~8(vnw$i%qU$-% z<}jt!)bXKe%VEwmq-%6K%Q5^<#C$u19NKYPv<*D5 z)*CqebPv{RFqvccC5NIp0nW2scj6svGNzx)U90(Xd@TQMUk-76NDg+@>xa^?8n66C z-T{!}6{Owi4u+RhJOg=l%8k2=1SJqo%Mew5+@PVh^6sncQJV#l;92&eL(?LD?rt-W zZ@s7M6E~wkWx%7tsq6Kl-uxIy(Akg6SI}mkgwPXc^)9oUTxPbdz@8Gna^Nc93|42B zQ>v3ucg-23OVMKIZ{v<=#1mA8ggke_pz4QG;`_up?i<4n=mtJ`WIY6`{@? z$lE^Jv}!AqUDoTQn&r-CrA$as%v>R)2iLmzVB@^T1EhPl46K5@05cb6?4=++90VXN z9_q_+s$=xc8wQ|HH%o*{L$*Evg1jC{WNBC*%4~ISEW1AoygMRhEq#i=MtG$1p82$7HSX;*xZlU#IHYqqkxIc(dQ6omgPVf}^*+ zr8`7fP3mQBi4`x=HM7%fYo4E;&6WXr9aGcZHkeyE*kWnN=?gK~c8kNBpHQlNtcDwX z7IAz$N|DNNuUMHygeqAVCp?B8mb~C+CBZ9thd5FC85r(rSqUqeOdG7mu z(YQ@ZvJX~C_@t`>DspxeC-Okv%`O$ZM#ytIW}}^}kzW9qKPi2)h8mr%4-x+%UGqhK z^J|&-X!5uBmpsuyx-%NP>pQ^cCiBsX2WG(6@z_cDUfRsZR_(xcU#p|qP{#(gl5t^D z4qAqGb-lLXp#=HvxmioPZALxbrVcbjN~CBljt);hR7-`G?^ev2rT2 zx%7^{BFwl>;8>MzrWr8nnI!NB6S_e3=1gT9WoCN4W7Z~6r>AnvO{3OWi+5k)OAnk* zwIpK?D(kDQ@El>HYHFQY*rAo8bc_AZ=JM&7)hi4 zO-6Kz*xeCrm@5eE035L8#qtodsy_{#{9yp(Xm0vrC8j|3+f}v(D+uqa+q4e7w#X&= zOkG`@NfYs%c|vo+-(?NcT1CW%CvN>BS(&2SUZ{3RCxxd?RodW7Sp8CZ11Vx$+l!9M zdmAJvz!Yt`6ojbiFGD~!oBwsH*D!BvOla!M<0Oh{Klrd@*=FK`sx9nw(RhE_PLJ@} zcYVh2wRbTKaVFI))78meZ6@QB;VIkTOBz=y4v4w`=+9nfT6n%dhyF>Oohe?gV_D^? z8+<6^r=2WCcX<%1z0$eh{>|e*G)#mq1viClOzNt~XZpV{mOQK*r9U9;Th0!RNrjuQ zDr*Cap&FTF{@%G{qIc8p&~6!z)E*|DDH<`#ATG{Gg|4l&51L2(>&^+2?vN~rt@zC= zum43ad5Pb;^O#B*_UeFm;cs!VS@F}a9x@OMdYNx-M+6s&8qt>Av-~aJc%>dQ0n>=z z;LKrHC8>{k`Ki268C92BFzinmu+{|B!{+Yt$mh2+Q z2PK#aVr6JxFTLP3#b*z2S924mmnE*jt>C05j zJV}F>y=C78{~~vbMla~UTB-l6v56V6OLEN2d5JQ(D}ikM#{Z?;pO#cTy{HXnol{_A zqr@j#2-1wdx1Usl&R)2}Rd1}s{%{i$-iY%!(*snD^kB>Ls`3St_~rKcK`ZDLD1@Nu zpQDSkU+~y4rIJ@x4m5t2??9X?`6_*%_kkYUy?93y=$@qU?CpyjHF~Zs5>MAl5r>DF zV_W|+-nUmvVnREA`qVw;V#{)|{1Tt&ztXV06GU}QQ5BgPN#Wr$x z=OqfGv`Utw+SJIaK-ZmIdsiB1iH9x3P5U)6u;Kpl+g3$bwei*Mju6MJQ#Xq&C-UA^ z8mk0c8!&e#b#QxnLo|T?5#M_$PZ$q*5v_2C*Hb_EsdSB%+0VDyS*W!G!10Dbf3|P8 z^pVSszun^VKe5xP%Bg_4agv%avv=~2>Kw$$QbKsU^el6)`ISx*2_mxr4thvw-0PC< z5K1@}M~--#q=EGkDswLcoMv@FC8wqn@EX_2Gbh*jCwke?NF%a|OYqlp(LoKwi8eCQ z46I#ubmUZ};S+}+zc)V@`p2c>v6bqZ9ZfMzbqzZoLeCe-VNTR}e~0>cgyRO7?$`le zIc@A1pJ2ittB%e#xkYFzSQ^W`X*60u01L9A=&0UZf{wuY|H5&MkOPzQ4!ZUUUia+6 zAC5v+63P{r)oMz6kj$VniBrJx^CRFNO(nnHkquM$U1&?sFflao11+1dk8mReFuSd1 zahm0FsN=lhn@^e*V!%Ed&eh12?2vsdNQTTM#E=C%b?9^9l;9AmEwNPlYwe+SDE{w{ zi{1HSo6Xp5=(FQn?k`PeSPw12hU5<&N+Qz*F{>|H?v{2GixJya__Co|+87^EpL`Ft z(w3p?l23$n)v|^d!W*E|NXdY@H4Y`6@m|Uw$EL`{f*0-`nXIP$3`xR#3=#1?Jt#;m zv$P#I02FOa$#&x{U=M999_!sI@BvOoc@|f{eR}pXC1(r$WEHGL_6;Z|L%qhy5-sTdb(`1pC7fwG@ctO z8ZjpbU)#VC;O%QFWdX^I2mXn(nDH-MhI@&iixZ#b(BERwE_9*Wcl{BCrDD?FNJi$y zVs9$VU)uitP<4*)13uIBIqdMrqT$y4bWj7}Dpx9}jtu3T$clhBbMjNM$3&S_MB5o2cs)i6)zkuZd{7fGZJd`i<}5vGBPp zdCvH1zWj|=xT2!5%r~?|j>TvX0$-&6r~cTJeLORVtr*uhRn=qBg4Kd0jMJ;+4f7TU zha-(9>;G+d&FigW(Vg_=%^1FZ`%m(n&;R2MLxPVj4o{b}@ejp!cL6rFC9EFPi5!~L zu4cLh@bGGe2KSX*CCt-J_w%!^^)krD>G zxs#lY--E2&HkKeK7F1sc#nv?zI_Z?5Z-Ok<^bxO?Jda(+S1sRO0}om3N9*}cJzoNo z9!cTPJ~)1?6!0Bh{hQH%n#I)C%WY47J3$OYe@_zejLGTzhQ9-+#MDeP`1zV@h4>H! zViwgP2Av8_Ud6b}k|JpF8>A7cX-;PUn)#BW^wT$Fc*ST4U`cr!Th?2qg^yf#wgT_W zEq*SOci8gF>hLk(c8jjYYl|_$M1C{^6YY83@!7wNL_=`<>oLO()|%#eW|i(F?`~~M zM3{We#V~KwJ_m;kS)!R+V8RYZNNr{Cag{N=#0RwbrCzwK4y(MWG=`q|D;5b4(wa49 zHM|b{X9vP|x4d1`7b4u(64>YW1m(vNw)Gz1yhAU{FMR7xMz&$0w~GIdDlz78jw<;LHTz0vkv%>Sf7ez~Xp zLYPZK964ndI{hthg(N|SpUPy`DwV0%dWatrH4W||ZxuToumT!j9#_qu&=x7E*X@zp zQ{mkw18|JD!h6bvqBMw_|NO{!i*?d^-DFDjB{;#}laNyXw$@TD1iWiz9uv`T9cvGK zczo`6^9SBj@<&^hy9|>d0nYEx%I$ka(C!%Iv;WXx&bljp5(8-$cG%?)@Wn%FY^uUq zu8#MiUwIvVAr95>8-Q}9PGVyyjD{)`HfR5xh^2Kd*@AK&!+vYp)0@hr8Jh)M`1tcq8nOn;HHg>4kgs!L zLp+b|46|=LUiX=rnpXTeJmMzbdq|#jJ@wQCkrEC?b3>@^HHp`R%nw5$+!9kHfDlI4 zK_owaWKh@VUX+Ucr;A9^JclCa?tIK|bgRB6cG6izbKKs_Aioia_?^luzOTdv%g zGv5q!J!;{jfqd~WIzXs4bsfIWI!Oe2&pc0V8Pv>(1?gbACEMy8>3c5%So4DIu#n^f z`QJ6nTI=rTDr8uSb02(UxQ|fkK0UQvu@A>z?}n4^NWvm-`g&)dl};hTr7C99^x1gn zDf2f0Wnepeq+z>#jt=HAC+67bT7O8>t|{f~+W}5uq~zZKj4IFTmBrJ>-p}-~%_ehQ zh0A&S11iAM!U|{OHE^$kEFk(L8~?=Hr^alhsCY+kLXdaE_HIr`j*$K>Slm?W37b0E z1@5p@{w$=|dlvuYoR#)1uwZB=L}(C|t2@j&JZ^`pRwUX%2RJ|MH=pc&Vm4Rof+pH*$+%hOI+4mQUYW44cCUih!R*V6oB5Ncta# zeo-`m1XlA<*>2(hn0j>v9T<<>*i)NmGU88t5+H`mN?}@*erEhYgr2IG%1WYhvlK1~ z&V24THMKr(Ca4B}&3A4wzJKfR_Uc++u?uZ-;x2ULM^R;du!LaZXf(Ny0B=8>g*T=k z2Kr>6-k$NROG($FJvRO`DV=#&ksrrf{xYYZ4v+!sSxzcq`o1nlGu=93_}`_BYCQ&H z>GSLGuW0CLTJiRsi_-cY!I-o`CoXZBFo(fzCX6%?1lN}Xo1|;i{_6r|GH?Ig{k)NmM4#X=ri-!oeTkhsq z2K$(E6gkP%#zGKWE{7wf#X^a9@z*2sNU}swME2G2&?w0{@J<%t(NY=LgZLwn zhfDcyzOe<4SqU!7^pk?CkslH6wNcHJ+W8wWO*Zn>+p+1#|7W(Azb zWNErDN~kFiZISn+@#ln6{BpZydDwM+OQ5!FvG8Y=%G&u!uzQ0EFz0a2cUAA_s%aNm zDpV)4VP+Naeu5anS?^1^=lf~)z)#{Att}V6STd11)Uj;~< z^UBi8I~(@$ojHw{lxOR6rsC7>DK9{M~j{UtQlr)NyGL3!A9h* zb~aqW->Z6UAP5#FXUJBp!f|ofA54;jyiB%j<4MY{V|S|-dqzk!n{w4n-d6u1a3Lpl5F#UxvgoUIMPy;IT9Ui0V|+j#n&(sAR4 z9IC<7WRT{ddWRNM;WQ^7_9_+`NRFQEdx{*}VUtn~&kScqmay~f9Ho;|8j@vav6!q_ zmYOawcZIkUM@-Kw2v(ItEjIfxD(qD3J_!dujPy_3ye;p>^RN%Tx8&&KT}_H>A2e(d z4kk&OModN13O4TLYZibj8xOIRvhDNzakl@BN6p7mD*h4MP=ZuRXr9>iI8K3r1TU~wr+}p178s-*ymyjN|h5kE@Hyfb}6AOHy$@pnz2|U2g?QwC@jUuEB zGuldq_h*}uS21nmIs@A-t!PF&HOI_7#_zEDC$~)T`|*K~Phmt!hX}DB;ZkX)>u(;e z%`T|y48!X?Yv`@7j8dxy%4K~WZEL4)Xu|fMwg&)%q_<2AA~l6$d&h#203r0JR; z4PCwF3~@}rpS4^kDBDQW;!{QvbMK)__ZoVLs2%sZ(~mWA@TTAlvw;E!=lCnf%^fxc z9j#%g1{7)wMH#DMF_3(RPR1 zbu9RjJvCc6d6?z$)MNxQ5&9*+UV9FdW%9m$ao_LV>qcsmcUwjkj&F5%WY(#k>zCq< zLFAbP@uRQu^_ZzT1`9hNJ1g@GN!x+XC32kq2IORVzz*;>8fkhPBE!CTAmiRr^Ao`^ z>vQ=#16ba!`?ZbVrW>12CI1jsj5{s_{f;<-MU$a?P~*T`KhoyDO=hhbFYFSSAw0#a za~y7W;EolAq8AyKokc;qGToYpsuv>XLY2)+eZ@hFCqhUUsG~~9A-Xc>_^Frl&zQWc zpj7=El;o}bO{UF*7B2~ZCyo&vkq0c?e#RTl*9IoX0NBr`F@jPfb~(ykLCuh_J_S~o zw?`#m6BzB@v7{jcC|oj2sc-!&oEd;dR3P=&iUg|3!l_SihT~99C<9PRD?8MYEm-yu zc#p5B<&E#>zj5s5f)8f7kmGHGOkU;irHnRA@ zT#6uzr`~ZL@VW5eRR6DR_U@kDw&)XXO7<%8tDKzy&fdD>c(>n>WE`URD1)mDx1GEa zQ$1OGk&#hy)g^LQk(g~mBBZO)(3j;HnO5fr0hq*M%5|#K;ECkB^9;alfrad z$SKE3sZyY+-|6uzh262@X0JKH6Xj{J!fMNik!h8@9Wmj1O(^IbR--P#WE?=Qi)E&+ z5uh<%U`hPah^aZq#`;#~Q{*m|&sX+tjXmPL`z=|U@Y$sl$EZUztG%4dLJj%IRI+!G z;^xv{nLLYE7RhAsU+brUO>Ht{S8^inC(a4} znUaqb_U__BT-Kwc-wBl^f9K1E&j?kHB;4pc1H=8un@(T+ZxN-id1*t&h+IZ}fx8h8 zg!ox9Gp@xQCog>OO8A`_xj8>#8NX2@z2Z9eh@h0Iq=mU4P^kFR@493oX}Rd#_}*}< z#$0(6)36t9G_ZH8vEn{kPuf>-+Be7jZtz}iaM?TE+ys37W%O@i;&F@M9|qg=LlXxF z<101T<#w}vk8yP04Xw$r@szaZU){rMFA*-p-w{e-bVb>QVR{`~>l5$3XZLddAX-P#d@8Pa zzbRxd`0UN2%aKmHg6&G90du74lmP8@d;8?~s4`FL>pPmv>I`3!2!fEB0{-sM8?2Q{ zdztSP+$@^aXq0Z;i85!NiEzITOl9O2o4@MwpWAhRr)Iy2M+(m_On790Z*PDzbWEeJ zdeS~dDA0+jy93-ncbO&C4Ps>?U3@Ji+B zC^@76d^Oj0o0RVskiAv7DaTn?ea~&2*|s*_$>M<8eO7@=f4N-VYsO^{)Jy*#MQ7sA zg#X9!4wA$wO3sl`DXS#6C6y#pl5$PCzNMTw#*UEW7D=v+Bq0`Zg)R4O&gPzbu54y@ zA3wjp;q!QWKJU-#{dzrLekYuFeA|IqvZ}E6^eJ^M_r2JXaUFh{^C6t(L@M>Zot%=- z)eglST?0MBx8qSFd2-udId`U!jg*(g`tK3nM}~uUo#yXIE<~>77z$l<-Z1nsse~2) z)rOJ7AH|dOHg!;0;w1gsUG5YhH|gew#($5FuMbuw%8hIh2@727;lj&FMRQ0! zmJIv(<+lRzUYj3aRl|t+e9H?iKyTXLLAC}a&Db_U!TV9Xz~OAlzbqR#%;)dSnF+Ju zxd9ThBHmgK1b-Hq z@Qw2g0A<&4gj;yJEhmP^hjS!d2DbRgO${C&sdAq2HfbgV;K(-82$L4;EsSY+^zu=#KhuU@{0 ze=PSN`MLVz#AR6re5hUv95|VHXLX* z=vkXJ)>jHVv||{YG0X6NYCKFot4lD+WYL)E6xW^~C{yU_p?^`HmMw*kXp;1wB#&wm z5EYq3Ze^Y>7A$`gB~OCr81}CdsM_18{fBbi5kb!-t>ML*IX{zpREc5NcU)h#Lw!o; z0`Nq&fPwyO>uRbL7k_4VkE#>U@>cy9;XF0E(fS~Q3jc3bZ#;c=s59E<{M#ADPef#x z2DdX4+TJR(8n&C0YriyI4vK8A%;C;Q?5yh~eGP+QC=SOD;uEQovT`c?e;IgK{;+pb z;&^YC1xsL`s$2uhkbFq`!aY7l!pI^tI&|KvoOtLygYR?La&i@6rq0L)wuN1v@aO4R zFE<$8eRc-vU%YpbT(0(cQ#<`IjPPQ$1pk1&yq9Nw!q7Yra%JO!?iWlQ!s+kf^>Tf~ zgpFR_ekP6`7n0Zo1#Mh|Tjo4l)@1?)BbD)Z{~0l2la*p-XDt+|CuV%hrhQzudLMLQ z{;Tjq27dgUZnWtAk4b$_(WIQviL3$1{7)$}nv#ysRAMx24MV(+q6`r3hHH5dU}&|`hPlINwCj6fO@c?*Q1>B* zJ$DHD&@S`0GtIIk;Hf6;+74O^@{gNJ(Xo1Hkry_XOWB#K>)&>7E6pVVF4v*>?oqVu z+l{8he_bz|ev*pa#PX+6qxTyNJ^s6W0TPTDY^JeM%xNM|-2a z>yFY%sp<(yM4rQayobRQOGAv&b!!qexj2 z4EP?tb+V1&gP$A=jx07LI%$d22AJ!kq$P^p3gjT+exn{RA^y`p)V7DxR>n%a>y`V> zfv^o<qgL?Laf(bHc`;n8fC+i+kxd zebSx=rkL|r49OzHdC{Szx<1>MYf=t1CiwJof&hgzvFCt-{dc%;3-Wg%bc}`-qdAa} znY+>YQ=0G(;y0YgPT@4?JWtE^WD+gx>}>klg=eUbJUSDO+ma7v)a`GSl>y%5IDb1f zA2DJTk6~gnTix4WxRL5eo~Y0Fd~VXh(S%&!*`g`=HB8uj zVKR9pe5Z2CXJxWz#*pM(e|)2*zoXY@@@XvPemAVKxW}%qHPn7>8}1h(&qe=dO%KE9 z9VGi|gQyO4KseXub%GMI1uH@$1)gBc$?Kit#gd)QCZf*3{hY1h0jrnqb1!9d+$RHy zqOe6j3@E9`oy}6)-jlyL_;V3ggy?I-YW>ni83}M7Vt>Nl@!TTjO|%T~k5AET`CSq_ zbI|&SR-HbHRPr&33#`9rl~_9K?hp3Sz?mvLi|B1nvEK z0D|Hc|J%b4wPVqw)rl*g$SDXwVB)z@Q`D1xb$Hedl_{|julgZqxp)*VxK}l$KXA@% z#kL@9mw~dn52xx#iTDWKa6XEl;vG>I-D4{7qmy;sV*|i-AGvPUn!ZSZwQ({pVIX7+ zvvyJ9al8c4py6l_Zoq*(^_A!hC#3La@pmqh3r>oVwANG+hChC8 zB-of2e&KuL$OqeqN_cHO$jzz0P$lbGSgNXjL zD11aUbgBalOosGLwN?@$bVgG+hOR2PXhrXrVACBx&Da`06w<8mSaa|mR&7_ERqW9z z{+Tks+UOC(pr(TR{_AoFd4gAQl6jQxHFRlI{Q+3gN!xd@#Fq(5VT!LU*x3#h&eKR$ zUPhxHdC>F5Dsp{f=L!rNZ8_`1#cIXE(uu$*j_F`9#N7jzi48X`{milF5tatX^TAS-|H*&e>Gg1fWU3 zvEJrK^d)IjPPS(zyS8d%;Q)m}Ux^A_en{d^>T9m})HGa;WB-%XXm(~H7g^m5oG<2y zExoXzPjk*(XK?n*4Uq-IZ}8XZoO{;HCCf(?qe%}1`nrFIQa956M-u~4HPEY*(;OPR zZmD8)1t295oF^PTK)8W?Xc9a{cp1r0vRxO0_XZvVZgG`miyFBZC zaSo1ih{J+2t2)L)ERkaF)67Lt%aaV(kCfYr*o3YdQFhR_!-)IBURaR+*foCQ1F$Xm z2@Vh%_(QX&^qKmqoVl24V_!)UF&fqey>g#n;j^(Iwo6ZqSV59^l1=|;ti;TdDFhQi z&&RC0L0E?F1|iMb&`i(0vC}Lv&VBwA@1$naX?(!`pNPV9yOJJ~d%6M8_Zd{NbT~us zstHzq6i-2#RWEYe-;F1?#4a3tjmL)U5uHG-TfliV!2DZQHwAH(T!- z&Ku;G2nX?l_m?4>yrV%yRBc%Lypj1okYRD)Sdu;6nK@o_t^W{1E&sp_(K>)ECkld= zlHwyjoQKxsJnc1erIm68vKC-Jo5Ouk6I{278LY%k~yQis6p*Lh-<>VY!w$DBLmpb@J$8l99>^)|$Se8qUXnQY! z`m|=Y=>-$jyTrA(n7+qSHv86v-Dnrsa^nM>ev*SUb_-gOj26M)prsF5JfgnZ7z1sT zoD};ZFjEX~Rd#fe722$l9HJlzPx0`^dWa`dRo9>Xq$To`2D9pFn-i`aV_bS*VqDyTjG* zhwB%&;-EKGd`y56RRe?i+t0R82AFX?-Z?Jps^8U_U0{IQWE{@1qCkZTH9NHUYv^tEHwBnd(07r{UGr4 z^bqR|i3aj+rpEiR7_M>+P%hO#%X6wlcXW&UwHEedOHX8|G|-KhJVLDB<~zICQ@ocW zx8@C+_CDf_K8_Ylmdh{L(_Ws3`Ulu`%Z*H{2JDr^4j$TFi~PGgZ^+tH4p7w&{H={E z2mSSmJd567-lTc}>a2LMqnqPjFQFc$%jYD)cgZdMWI%*mwVO`Qu$C3`hp@EOQuIHc zW`R#plix(Wgx~9@<}jaM+4bId7dt%h-OM@p&sHV(3N8M7bI{0?O;dEc4t!=|f*hH; zleoBb>fadXocEg@q>g*T3drmy8LfEcW2u|UD&e=Ux=BoD3BPjj zv0SIZgI~*TM*V#8^ZTK6k5cIwpU0WoFL`oz(2s@tMGnB;WtZao8=n6-c@S9{?YO#K!-IP@ep8zTeL z^q&{1sSMaRdNd*mP>|8;z6MM4KBK#xuWLP7r?V-X-_ekyu-^~tvGLiI7v?%6YV2uK zmUJ?wl>>K|uws=<)5So&#?@#Wz${7@n#S2nhc$;e7XJQVEChT9Gag-n**9Jr+nW@| zoJoomc<-lO@KKtan}Ub%XGYT29+_b*aDLl+^vy&X@&Geu9R={v<2V9%kKP%sHSf@4 zBqyOEiM-+Nt)Bt?@!+)e&RrWF%&-vOT1zFn_H}`e^1!x=cdwlBm-7gS+uR+NDPf-> z1HZU)xb6_HW}EkXFF;oED4>&Go(vMHW)j&d)-lFZt=N?%cfxJA9J(ni^FCV~K{2DUQIR5+G zU&(1SFI;m-{RsRJ{i-v~GcKC)K4D&O9rXbB-+JqAJVS0aTc7M=WisEIn zS)Mc}JSqQeVeV-L>2 zpNHTHwwzqjhrt%_j zJyy#}K|vHH11)c(#f&d=mogqnhkDh8UL7x)6Zwg1o~eZ>-gZf@G+VAmU$mMn6Msxn z7svNpf^4MQxc0lQNM8ep{1>8VTGk`~tGA~lAP;#0L68hvoXm=WePTrMe@Qo7t|HrQ z`wH0n$n83^g$_6I(b zPnivDCe|c!x*Qm9VVUmC2MTqBI~3=f0gCHPW;|KJXn)YHt&QFlwc0A{3^F2?mLY|k zGsHJ-|8%vz5)j}i48-W_MQrvh?;Wb~X=WY4O?*K&yY8SH``*GsT%x&Ij=Tb^e%9i{MC@J8Jbuns-R z{jBbB5y)%Hr>NVA>-MvI#NcjAM5M=BK&Z}QNz`EiDtp&Q>YoO zA7vv?LC=uVMaBjGkFC>crtDJvA5sp88FfMW)4`^Z7$0C^!$h=~cUUo14ZZqr$ z?voK?61*y*_Y1Xa@}7{$u&LEeTl2P55l$yJOI47918!ijwJ8FW~Rq1q^8C`E+f(b3+w?F;fV<+=AuuPKW>3+&* zKranC|Lt>&X2DeE9k$j|A*I=i!qTV;M~x8wuxE*T*#rJcf61yrt1&bdk*Q!2dfd>C z2@ESYLc$LRZS34?zyI>L^L*wFEbfzsDey4aQiUg~(Qd?dDLVkH65n*+zSeIjiK+ZR`W}?< z6+1?Zw}9b;0Il09L!_b^T=_N1ka!)Dzqn_yM69)+CS^b=QP?O9Kf7&Zyd6H>Z}^Ab zUK^VNT5E^*8z}f8;Odt!B~g^|sDtF6RK}WoI|Ez$b%EV~X$7|(5*!P%+LiD48=7nV z7u;Om{b*%Kyl96Ge&3CFu`?7ul3)Q&%%8AYj0#AYvt!O4O;cFe+PnT_5EQ#;7VVD_kStA8F7M_rvtA90&~*z2mfA2twXAW z*OA{AINqP2ZAd)fzdqKBi;xgglppNF+#Z$`cXsD7Fj657-rSI(0-A?*Fq~flcbr7v zWi%<$QvJ&0u8mc3am^wKQKh)iwQzk|70EhC4C@1DZi3K3$qtF{tSjmMgC)1y2`{eh zry?(9as0&;ZyR-{vEJ!tTt{L_miZ*7tMl9gf=qL`v5Z0izC-B~-F@1gIhS$ZXEN?# zmhE}&TaSM4uQl{GX4#KDbji@@FT~th+k;E@eF)7)$ED<~7_LnDu{lpu!|xI)D;Ku! zh!=i9ZmM(JimC!>T&p8%2Laay)CX>^?R%tk8iR^sH%qb_x4kw9*_@*f(Q7^jjh>td zD0+dac{?k%3h`)=WgJ;C-MoVhe(~=@Bz99(-mHdiL3h8pJ)F@fg_1TyB~32Haa2v$ zq}FDT_eBMEIw;bkQ|#F=q|PFgKCblv`1qMl+~4u7g4sQIU*#|=7qnqfV6FVxXY+-4 zo$W!_hJn({g6{!aO5oy9%k2Eiawntbyp8EwFW)3m?d!yZ)C)nR=&V}@A^$Y{Il_k$ zOX{?US>z-W?+@%=vpN?Q+M?Cq;cl>$7(b|Z7Iuy!=#=0&tx68eEvWGy1hy@_%+JRv z5W62IZHnN>p;gC`ptP;3_7Ic)_JZ0(@Hf@Jz^`*nt6Gv|#!PQ55IRZW>!rDVpDC}D z-6*^-mpF_s3pWh3cytO{YyzI;)iIq7NjHK7S<6V*>-vyrEK5D9)#J+GO$QCI?x?q5A z2|j)hQ@&;}5p*Q<BDSo^|JoNI+Eff>|U6fBjX0D?TZlmIzJrOBP_Dx zesQ`m4tLF)9OgS+`Xps>JBsj_RSs?ilsB~Q6xB7$P2w*nFJ@>2sVylkG&-!d7;hvr z85h?zSmiH5uWUDBVM*Lu_f=4!Gpf4w&xgPmYP9;JCZ9{p^Ki~FOw{XSJ)UL!ut9^= zB2MW8Yr@;m4t}(kRG}g6{~u2C9UFT!_*h+eZpu${nHI8tNm~)bgSjvbf?AYyQ~gs}SVO^mDg#|0!Q9>xS*GJo^-tfN!#38@v$J z58K3|+ya!NJk_rl9+OJQbabApM+C}M$cyx__oa#;V?X+7L{(r?ef$~|jZ zK<3>Lym0g!u7Rh>1V~FCxbH+=ezN#f-pkaubWxyY*c579p}1_77?7%xlvh$6j{Je^9z1;`6o(xZYmmB zE*9#X-A20fLI3@6671D3Jh_?P>7blT-hkT!4P6$LM*|1^d#H ztV{JVFgD9+;~eS9^AqoEss#}VYJMu6h$H@hNzCGwe*0@Zwwg04=5Ve@~4U?rq*9*^&BTNq=T7^mljFAMv-Lg z#~tv`X1j~h7r|1{<~`-EJmh@+BV;qyt(cqEI~qiw9L#FGX|!H;c3#3@)#3Ah?>XhO zfR&chDvxR>v%u_G(X2&`kWuH&ve696n5eJi}`PLXPSm*U(0^By5cegq(RGhEs zEb`m;Lw@q-+3|9ZqyX?roh>yZVvQ*E3RnlteT$TsZ*VKS;l!+7fhx?6UPuYKx5O(W zrn8!22Bp%Y_~0_EL0N}37px&_emyAYdd2mW)8nU=Z{{K#)m9k}aNuDC0~lz@c-7nwUCrKlt!#gU~(x(m&XT z;@yl1sf^1E)sANS1+U6AurEV;K*;Pb^N;6S(pRI3&;Xh*r! z>yC_V##NY`8P&LHFv#%k^?yGcKe*b)f*WiPJS242>zw3J4@|^O?D^g$5 zvEPVPoK)L68VJctn~Q$P-8CQ2S>*^3msL6HYC}FYSc7-Wxem;%4#t~V=3T5PrOYfZ zbG}iND4Oe;tUhVUNc@b8JKG8`f_9~QQcx}QlSGR$o`1^ zd#3@-W}41f2cYU39%%9otEk)tEFL#SpGMG>jbyf>XPtxG4EQf}=Le2$ySD;XtwOBv z{&e->`Ur4`YykRQ_-vnA;Fc1VqLFC5rNjNK<)jQ+BN#tV z4iEU^|*2os0~S)6{0URDi0Sp z*Lj@j5K~3WmblB+mHko%Zjsyb0=hJV<%JMEavim;1haWXEiSJJIE$5B)F`=3lKHFq z28fM6^vyW+A3z9yhn@dX-Zt6z3T9&FWAF=4A>KkshL~}cgg=RzvD2>7)X|S^-x@^3 zNK;R2!64U8ZkGHq-M2caej?Yw@1D~5dSQ+)WccaQy@E6MNo3$2$N(9%YE&C_n?7Va1z zizAsdGe`PU(2C$jzpI}p%%D$ft2V6_qz&#uJdSa&opG5H?wnq_(XYkMw7g)#LR zv&{d9z0v1v!9nOEpZ49LT1PlMN@ngBltD1z;3H1Qxj&XQiNfLim%@(S7J#20!c9EX ziC^5B3xE-XB&~~seMjn@k}kLjDlGOObjHIZmcrF1^Fe2r5-S-+ z2)kv|Kz0Sh>FgmWwXp|^ZVsGl@gB1N!oC}1-;^k1*|IIPWNjRQ2$<;RUn?N`^{2MW zW`EhYQX>6fO6T#6qwl@-Z6ZD>!bls|s{694@gA^T;iNSq1ip{v`@;jgytowjhM^j! z@o?(s41`@28v4Nz?-Ri_9YlvK5GL zwYbf~S+h3qGCWiHRx+_8lb^wf7D7_BI%3qZ3#<(Nc$Go82oss$p*f~`9QGI+y*>JY zr7Mu=%ieh<*3{?S8!%te9tqgd_it2VyxE9u?A>nWtw$2Crw$O^OLphI0rj3+s`pT@ za%ZpDmo5==6!)+Xhc?5Ffu&v+3TRH|ql5!I3#w6uI7gH8Lzd=GLbO-t#q!PVY_vu2V=)Fr@RW1=?d0)?_zht(T~HGM<#`NtO5O52fIEuKk?R zG99@4 z0i?L$vbX1FmAi~1|vwx+X|HUyDArS@Mr^rRfYs-RIF z$ZK}oE^^U(WKOWl(2GQBYQ2e1G-1i`#aD^N&gV1N*)#GA867@dRDZj!`m+Sp_1)k5 zQhfZkFf>aJ6)nA;?JB;d6}$^KW>zy*H~rpv9d0bN31d2Ckhc`0I1DePMM9~A(pJDP z&H404N6!bNOYRtReOgU4Uto6(m{*^PFGvN-ok0pdv#Qsx(C(vmv9sh7x@uZe|7Pj3 zIa{53hAZ#Tr`SbO5eEF#Ovcufi>^Q>5=lv@wQiWrg@FrqnPzwhy{wyy%_Ohv)Ne## znxQFm-tcg^fxB1o6xylR~@kDXuW!Yv8W<AZ>wD-1o|CDymSZMgv{-iECE z3pcD41%ap)g(B7zLHTnQ-ze#Oz+VIZn!`^VWZua6awY1hgT zQ$ZWFxU(@Nu_Nq!>=;6vo5+_*dX){32OoP~e++-nz zRZwPpwoBlAU&t~^^nOXp)ej^fB0vlWsmXMM5M(I%=0}lAs)(S&a~}FFo5(x78^;4* zBZVy0yo_+}+a-o4Xe<{u2$7YIaI)Nt$&9TlnFf)_`NoD$#OP;XJ@yca*O;}S1X3_O z2`+Ts-!#c}Ke2?g5B`IyPdVJb|Ge|w#GrTwpR}A;emF3l1U;ySg!e(s zJQQ~_a+8rX8lnjMuoJWmtRQXOmTx5W8Vt;ZNH99eE=sdT7wwSK60A_0RL)1#NioF{ z`QViNYvby*uBwwc<1z!T2&;Gt7wv0n=ZB^nWPOZ0~AA)>QtX zVj7a2)K-SgQAo0|5zN2qPV7Qv*4)hGiir=|hW6SF%Wg6nF!`s_UwvKCSluWY8@%>} z;t50cM>D%otw7D6m4^gSkK|c2VK!_^%Xv*9OBX%$qH^}mF6}3)Eoh*Sd1~S1>)#0^ z5q7^iG(Ohs|4!di^%?V!CxHhPo#yt@HG=L&pqGPWLR~7dJLZIGp5Hw19&%xZ*5%@A zEcWBQ&{FTxqadO82!~n;_ScqUQy~{@)iWjdz-Qu!vE2Cq``niF_b$}^3K0~if&z+2 zw`!8xr~>zsPQ=3d=C4S}T)JeoDj~GfV(hl@&jFFp$+9;~UXRZ$s!f>-zpYTWh1SrUx^R;j&B+t;$8etguLXapcGQ)Dg&7E`8~3fz#^0ZFW~NUj?Pc^HEDLHnDrS^cR4h=O3kMSv}Qz zx;yBKkzuSWS7H~}$3nV5rOW!5%@dtFWt)l*!NoA!qw(K(sA!0g4pE_bx!*6Y2&0OhP|LIOpBcTmitI*>Vi8l_%<*CH^N9mlu!yc68x7C zt0@le#U^Uz`2p+CC`stq`y~wdaucKGi)mYd7~8#IykZ|T>3GXEB&SfB=9KRaz(CA4 z86kgx>{rdL2dSq1?Is|Zzsq5)hx?3>3$u4a@%h;Kq~{yA!)NcvJhD0suTZ(i)@ViE z^MAb=xnYtF6>p1nt{`JbVw?G!jz|4W)~sPZsBG|Us(nJ1uOePW?zL4KbGJVLClTp5 z8SDagc0R~nr;*@s81Ng6qxMb?dkDY4eY>8Nb0AUxIp4-8HmU{~<$8X5Mbh2;wNV8b z&fd!TlyJ@2oABl_RpX`fT=1*rlhGGJQacrv`H^RF!Fkd&de+$n&(rtm%ZHydZ&lTS zn59>8NFNHTgaqg7qvYf-@ZIdCXfNjW50Fx*`I)9kqdkj_PVgP!j(iOoGLK!R(`oQ; zT@)JgfT3$gFE4YGM`eosv56J+tmEvqYKs?0Xxk484$u45Z~aucSqxfH-YhsnKvN4y zz-RrJ+BKr)iB1*B7uPS63)de@;~W-G+$DNRC)R4al25InpZl89)}XrqHSrdx_myWn z94Vh-ZjorFMrh)cD*h4Jg}6&AUU!a=y*|V9x&uU9T7g2B&d=kIMM;yonZJyFn}@4bXwBc?K+y0 z@;i%ZU-2D3A{Atg8N_j8pGQ6oUb~QELJS03ZsdE+s2^-3hPI$=n%>w*F6J7@qA#unquiv_Ja4~B0D>@wz?o@ekF=UNl zGUP+iAVax<*hSTTKZsv7kj6@RxiUKXjBK1_YE%$%hAlKQ6I7F+EsT#{pfMud@b7Oa zB2h=>)h!j2=Y<#jA`X!KLW*aB-izc+usF`EXv=`@=i1N2n(U(c2j_(yADTbdJX6ZK4I@1jltjQaQK-Pi+kQW`T}WAbbeB%{%o= zbaUEP)4y*w8QXLgfj1i0@jTYWX*HPMht4vT#vU``)@pCMzdg|L($c8Yi4xF0cX$Q> zpT8Kv*$-!jqfV&Ebf^`I@Qs}!MRr`TtcGRaHeOUV(0IaZV$VMItDGS@!FBS^kLD0U)GL!3%?R}(_T3XFx{Y5b%nQ6YalM550l^W}NGge!CiS!5x$b5m}bpb*__MImbtq zlfLxYU=s2X2+XYk^}in+%~s|lIDv+!?M8g$Y3H&&9@;=HvOj6<^oMMJpxd~Jbj&8u2WHHyBghjZQzxe zCL@}rAHI##?Paw@4f`S*-|UGk)IW%rZoFbliih~&vK&pjFyDPGXl}14G0mRN<;TgG z^p=37e0(?{uuyAe`u#IXn#J(xSdRW!gmHO0i-~?Qp6f-5trrqPGU7`)Gr>~?xK9AR_ zI^K9x0$%lSJe{Te7J1UH*j;Utmo3V8p8Y*C%sQ)^zQV|3PQTj^#gVL61?Isd?$~_a ze9eD!U*c?S#>e2B>R(>l$SHdGt>-P?b~oU|I&hmSl8{5VmD_Gj`S!;n2+bq~LTk zT9MoykeTWZeC-mlZfkW~Zt0x^C&>CJgFq=z~Hip=l|s z+1OoJ`Z{S(1tI+1Pq7PDnoCT(WgxQQvpFKl0obbDR&%lg6F!TogHm8W0ne*BbASCJTEN+ z)K^-uokxNLk>c!M&wBzSB@esv%e6K<-e(8Y#cV_Q|328yKM&~FVjRzey>=$tVDJtKhKgm6=-#BS=d#SC=dyBk-IynF0tNB4zN8YchUHngtO z%i{jlzC{7POlr45&m=wIZgNf|Q#wo^=_1X8+i!L$o@KV!E|@El52yfBrU01(b~D7A zYsIO7b&ww9ag?0GXY^L*7A4CWgV#r866=@5~0|WS$))`F!M;-N_C3 zzA|ak*MydULm@1et`293y+$29tP5UE)}5gXCX6&6P3F~AN5cDm3AODI`hVXM{aHl= z`@ao8>qI8fq;YH|4(n0+Rz2aCKhXciR~jKN>UD~qr> z7x>~PX?MEu7i0q zEG6A&d|%kCqMrKWR#_oP zrpRBpM`C%zAMbpTtGWIIeUI1riviV*>MLM}RL^?PL%io>hv^Ud40IdbA}l`eVQqF# zv9*vSH4U6w?}+PY!W7V=+6{NK@`+e!qMY zw=)_W>UK4H1^iDHt5GCOR{6|1NxL*KOA;7M!U7-CJ9X_u ztAMGVh4cKGzomI15j#r3A`h{4zBU>LJFZZmgml9(Zq{7S;5sr*cf;^hNSz31%# zA4=RIKg$l(RPNl#7NqU(Fr(9FTOO>MJ)r*%KHjxI+823W)p~qkJJS!)VErfYqK)yvC0U|z2 zG(N<DC;ns}1vu9ZL<2}MfEThyQIjtt}- zU`u17!SqKo%Cn3tWA$3>9gMe(M7`rPKpn^C*f%X%Wzp~_qDO{D zKjXStr_(qyN=mTioCXiL%qU#+tDH^0%G5(k?JR3a9 zEehO=?Qy$xX1v3>eZZ%UxbMApYI-Cp>6OtcYuR|VrMb^|(M~|MVKX2+F)Uv^D7IPJ%MM^w`x1C;qG;#Pm5yjq)%jnMZ==V+85@G>EhN~PJcD@ ztY`wuHTPGf`@AoRi<<=9cS|*{=liwj5=ftCKuT97@|&-~`VzByD+e%c$-wOPUA-*E_+{HrR3DPo!y6amh3Z0B?6zQaazNC_7V(pH_05pUSZvOg);SAYL`DmC`gS2?F|%siF`Y4It731?2-KiNNY%%A;AdOnUtW%!lPZl53TC`K?^ zZJSCb3RaV*h4g)DJD8(Jm{Yii)e-+D02%7j?k&3a8!!7MrIn6De(OH;)z;>?q1#TO zc-7MKE9b5qxW8S1yRVbU+&wSm{WO9Sh+Vk0@LL3W{=c|}FPZB}KhCm7Wj>=HaFmt- zZNznX;pyrU-7CT{?ML~*7o2%4_mObQ)HMFx)Du;I!^_`~F@Jh0k>=!_guuFZckcG+ zx{1J1dJ|Yne9S)aEg<`uwgl@}nJML6HkH_)R{AUqF}wKCokd=r)y+9`Q_E z)D!V*4D7kY-82IB`@oXn!`LW!X*#A(a@pC6^^d5i6HmXO#*GMN+w} zzA7U3>+BXPNeD@9n@f_2Q0_J&cSi2FZ5VSOHa2$q`TYy$JU*Xu&inOxJzt@gTyDzV zasAL}rEpxh!TaFKoqzI^?LyLRhK;TYCCiqmw|R^SW0N^f^Wc6Ku~qdJKUXz7V=ejG zUfHX(5O=3tJ8{X!{)uh!P*GZoTCh+myt#YdrmwjLkeAd^ABwZ|KSSxLYJ%JeJNGQo z4eI<>zzSzkLAu1$TCt$qUyu4D zVFZk48&#>jS?i}4ck^8%lrU#DUDf0RJ_4IIc=HcgE&~^{ogB*&Y@ZTb-d{h^@mH!z z!qZ>*6>B&ondLY%MxX)J4N%fi?WiqN0dAmX4|el--SRB0L3Kl6A-^FBAouxlfD2xj zG4Tq^a(PX-H+qzmFG~pYG?tCz<=av1f~#baiETd4(aa7p+|lrGkU3)MG~=SA0@=Fx z0e>KJ!q03ey$o_Ib;ajbe)+~=$R~W6wc&F zgGco0fm?}KR;a16CxyFx|y$!W7*2$U~ zlY1ShVIUh2dU?T+Z@hLfPkKbwj@>@_&Xll2T+@QT3k;(zLS5%2kl_torbajc;fLMS8GR9vyyyptHp9~~A z?T$-?hYhH&F-zR`q9#m=Q7rMmWLG)G@UA0Red_>7)Th2fzDdnQ;U=%KX*?UfmU8x; zyW{(oP|blsr{vlt0sZ0w9F7rxj+yPgdE%tlRx;I=8tKa%Kl4FpUEG;_Pry*ibyS)| z(_l^C1g`M}Q8;RofrSmgkJr^a3Rn!1+=V$Bvx3*YL%x&`rnFv!D1^Tv1>bzqP}U9T#itZMuL{;w0#SGGt@+jX8x zIx^4a*@wD`z#5c)P6-2Gg>#%fyaIpCWZ$zoU6Zk$x-#&wwp(`&?-FI|%X-foWR6BN z4lCCg{pKx&)+WSCP^U`7{gq!ew*$173u1KBfmOV-X7sPU?MpVj^qX58RjwLLNI z`svk;#QGOljWE-g^U(c&8<~6Ja#&RCa3d|f?`B2lgd8HE1qntW+r@~ zk0E)#53YQqwd6CH9r!2$$;#DbYx-!WChJ$_Wa@vPg=()G2cpXR1UH|Sj0K)RALqTi z6S`2gw=9bh1aCEM93#f34=yA;FAk0c+(b=8(tly`_dany`%`GvRT7By*gm(ItI-wz z&|$w06ZER<6Tunj$ig@AA7bCjnP8=-?3NZM4A35^Z=c9AoAntqxy*{@qpdEPUV`B_ z-eT^u(=&!%HfUVfPkMNcXL1zvEmZ_R^Aj=ByGo{qH96fwEi!W2X`&bR7c6#?NXrq_ z?F41o5oni(L2n@JSX+wR4D?5akZEboyu|oP=*M!2onKDUcVE7u1^=3>Z|XYQXXq|Y zD{7Dusqtccqz0YBMDV}`yM6Eyp!npT@uvl1EfytKlD^yTJSOW5dQbCj)LN(J-BU>T zJU(q=R=J5Af8eyiyf=2Sh59;l-6eh?443C5-2x?PbraIJD4TY=K zq{{ei$83~P;7IfPGfb%!xz&zNW4fN zoKzABSqG1yxvPiTqReLf61<5&F)Jn#K@+FgJYJXlmzb=f6=`qaso){ddks?`$(eFE z+N|_hJ3Vu#&#I)HdVNlfc2j}sXArZCdv;5hkCjvq$ae&2$v7vLu8hQ;c<3}=kuBUR zLLzzrYAQO!R3V5tjgBIZ`P3h_R=~usSjbb@nKWB!ZOFI{$H&8AZNTHf!P?;JW9FzS z`dqeCm;@V8H9SpQZ4vv9`s@qK&S)YUY^Ju3&(zuR=IL#RT!$yu%Mv6ZD8ci%2mgB_cozsl9*N`&oS&} zN=cMhPR@$HSlB+(7(DO>XMNIfiL8zNHuG^t)2JNqnp&y)LfpBIB*$E&ig%bJXV~eQ z21=D90$Nt({_0Lp?m{R!Po1Ycv>iQ5MkxT{DV?YnqCS>NUmQX zTDe@on(e-CMtr@zt!?0ksoe1&<9{=>U8Vi=<$PW~Ahxsa#_XlSy0eNdSJ?*Uoh6z~ zDNcnN5L-!Lf$s=M#P8M-oI-%g`_j7EyF@WKOAZn^6w%y!83dws`z7q3+d*Wt7 zN|P$Mt#G4(mQx|QQp~sJO10~ThLiJDKjRI zx5R>O)cq)aP_l)ZsblCF9G2B;MmyO7U^%e?yhP?{pu=mnI8G=6tzEUj3(DFvc3P?s zec5ZW?X#(GUL?#L9nlKXo_+P+BbGJJR-g$irM;^6(AOA^bqVO5&}s6$G8T9i{WBkL{peGX85|_Nf7D21u`Q#flRa34Jbn$z;#(9w*~4(L4S=%qvivK)a2eV zuYFdNnBrj~*hi9f#H59Pe~&c03Fy-8oYgcwgbKv8(G%o+!hDS1EUWa0nGwz>^Bk`8 zr?Q^f`dC#O$DxkIW1rC`PCJd!t1reg9DG2W608!tDA;@tYqb*XKz)%jFQpqsuDUcG zs^+o%pYHur{)~%6$)J;FeyZRw*K%9^g;m?0W8WYJ1g(B-WKrJcL8MMowEn|Q?i;oW zsH*r~cYz3g(N`EMNBj?*S1OFtbdk8eGqjTY*7#xO73am1v^11t2*j!)wZiig`C#1! zuWvFSlYYfyb{fEqr)h@1n%wh3BA5Mb^qZ_5{Jqw%^l3WmX}sU1d8R$ltB=@G)ujO6 zG4!S9r^BXbVL;^2k@gJfOEae5xJpS_*qZf5?`WB}Z5h^o+tVOBVNm-G-B=09?6G8V5x+xYbnm;HF{z0N#{j;UC! z#%#ID^5yA=Fxv+gM;?AUinnmro&{yuen5J9e@L)1xEi~C617;^HGJ41A zD#^Px33;ZrW|EnZ2Y!d8_(8>SY`vjwUsPhv79-q5pLuW7=J`M0JWi1Wx*2uG_)37Z z&Fs&UEFB|(lh9@%0AjqD6Cz}n>7S2| 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