From 0ee96aaeb790553b91d3cda3a1098587d89a630d Mon Sep 17 00:00:00 2001 From: Scratchcat1 Date: Wed, 13 Dec 2017 18:23:56 +0000 Subject: [PATCH] Add files via upload --- CAStar/AATC_Monitor_Viewer.c | 18037 ++++++++++++++++ CAStar/AATC_Monitor_Viewer.html | 10392 +++++++++ CAStar/AATC_Monitor_Viewer.pyx | 375 + CAStar/AATC_Monitor_Viewer.so | Bin 0 -> 354848 bytes CAStar/CAStar.c | 1548 +- CAStar/CAStar.html | 1036 +- CAStar/CAStar.pyx | 8 +- CAStar/CAStar.so | Bin 119216 -> 122796 bytes CAStar/__pycache__/__init__.cpython-34.pyc | Bin 0 -> 134 bytes CAStar/__pycache__/__init__.cpython-36.pyc | Bin 0 -> 134 bytes PriorityQueue/CAStar.so | Bin 0 -> 58300 bytes PriorityQueue/PriorityQueue.py | 14 +- PriorityQueue/PriorityQueue.pyc | Bin 0 -> 1795 bytes PriorityQueue/PriorityQueueC.pyx | 14 +- PriorityQueue/__init__.pyc | Bin 0 -> 144 bytes .../__pycache__/PriorityQueue.cpython-33.pyc | Bin 0 -> 2075 bytes .../__pycache__/PriorityQueue.cpython-34.pyc | Bin 0 -> 1434 bytes .../__pycache__/PriorityQueue.cpython-35.pyc | Bin 0 -> 1418 bytes .../__pycache__/PriorityQueue.cpython-36.pyc | Bin 0 -> 1313 bytes .../__pycache__/__init__.cpython-33.pyc | Bin 0 -> 141 bytes .../__pycache__/__init__.cpython-34.pyc | Bin 0 -> 141 bytes .../__pycache__/__init__.cpython-35.pyc | Bin 0 -> 129 bytes .../__pycache__/__init__.cpython-36.pyc | Bin 0 -> 141 bytes 23 files changed, 30134 insertions(+), 1290 deletions(-) create mode 100644 CAStar/AATC_Monitor_Viewer.c create mode 100644 CAStar/AATC_Monitor_Viewer.html create mode 100644 CAStar/AATC_Monitor_Viewer.pyx create mode 100644 CAStar/AATC_Monitor_Viewer.so create mode 100644 CAStar/__pycache__/__init__.cpython-34.pyc create mode 100644 CAStar/__pycache__/__init__.cpython-36.pyc create mode 100644 PriorityQueue/CAStar.so create mode 100644 PriorityQueue/PriorityQueue.pyc create mode 100644 PriorityQueue/__init__.pyc create mode 100644 PriorityQueue/__pycache__/PriorityQueue.cpython-33.pyc create mode 100644 PriorityQueue/__pycache__/PriorityQueue.cpython-34.pyc create mode 100644 PriorityQueue/__pycache__/PriorityQueue.cpython-35.pyc create mode 100644 PriorityQueue/__pycache__/PriorityQueue.cpython-36.pyc create mode 100644 PriorityQueue/__pycache__/__init__.cpython-33.pyc create mode 100644 PriorityQueue/__pycache__/__init__.cpython-34.pyc create mode 100644 PriorityQueue/__pycache__/__init__.cpython-35.pyc create mode 100644 PriorityQueue/__pycache__/__init__.cpython-36.pyc diff --git a/CAStar/AATC_Monitor_Viewer.c b/CAStar/AATC_Monitor_Viewer.c new file mode 100644 index 0000000..33c7188 --- /dev/null +++ b/CAStar/AATC_Monitor_Viewer.c @@ -0,0 +1,18037 @@ +/* Generated by Cython 0.26 */ + +#define PY_SSIZE_T_CLEAN +#include "Python.h" +#ifndef Py_PYTHON_H + #error Python headers needed to compile C extensions, please install development version of Python. +#elif PY_VERSION_HEX < 0x02060000 || (0x03000000 <= PY_VERSION_HEX && PY_VERSION_HEX < 0x03020000) + #error Cython requires Python 2.6+ or Python 3.2+. +#else +#define CYTHON_ABI "0_26" +#include +#ifndef offsetof + #define offsetof(type, member) ( (size_t) & ((type*)0) -> member ) +#endif +#if !defined(WIN32) && !defined(MS_WINDOWS) + #ifndef __stdcall + #define __stdcall + #endif + #ifndef __cdecl + #define __cdecl + #endif + #ifndef __fastcall + #define __fastcall + #endif +#endif +#ifndef DL_IMPORT + #define DL_IMPORT(t) t +#endif +#ifndef DL_EXPORT + #define DL_EXPORT(t) t +#endif +#define __PYX_COMMA , +#ifndef HAVE_LONG_LONG + #if PY_VERSION_HEX >= 0x03030000 || (PY_MAJOR_VERSION == 2 && PY_VERSION_HEX >= 0x02070000) + #define HAVE_LONG_LONG + #endif +#endif +#ifndef PY_LONG_LONG + #define PY_LONG_LONG LONG_LONG +#endif +#ifndef Py_HUGE_VAL + #define Py_HUGE_VAL HUGE_VAL +#endif +#ifdef PYPY_VERSION + #define CYTHON_COMPILING_IN_PYPY 1 + #define CYTHON_COMPILING_IN_PYSTON 0 + #define CYTHON_COMPILING_IN_CPYTHON 0 + #undef CYTHON_USE_TYPE_SLOTS + #define CYTHON_USE_TYPE_SLOTS 0 + #undef CYTHON_USE_ASYNC_SLOTS + #define CYTHON_USE_ASYNC_SLOTS 0 + #undef CYTHON_USE_PYLIST_INTERNALS + #define CYTHON_USE_PYLIST_INTERNALS 0 + #undef CYTHON_USE_UNICODE_INTERNALS + #define CYTHON_USE_UNICODE_INTERNALS 0 + #undef CYTHON_USE_UNICODE_WRITER + #define CYTHON_USE_UNICODE_WRITER 0 + #undef CYTHON_USE_PYLONG_INTERNALS + #define CYTHON_USE_PYLONG_INTERNALS 0 + #undef CYTHON_AVOID_BORROWED_REFS + #define CYTHON_AVOID_BORROWED_REFS 1 + #undef CYTHON_ASSUME_SAFE_MACROS + #define CYTHON_ASSUME_SAFE_MACROS 0 + #undef CYTHON_UNPACK_METHODS + #define CYTHON_UNPACK_METHODS 0 + #undef CYTHON_FAST_THREAD_STATE + #define CYTHON_FAST_THREAD_STATE 0 + #undef CYTHON_FAST_PYCALL + #define CYTHON_FAST_PYCALL 0 +#elif defined(PYSTON_VERSION) + #define CYTHON_COMPILING_IN_PYPY 0 + #define CYTHON_COMPILING_IN_PYSTON 1 + #define CYTHON_COMPILING_IN_CPYTHON 0 + #ifndef CYTHON_USE_TYPE_SLOTS + #define CYTHON_USE_TYPE_SLOTS 1 + #endif + #undef CYTHON_USE_ASYNC_SLOTS + #define CYTHON_USE_ASYNC_SLOTS 0 + #undef CYTHON_USE_PYLIST_INTERNALS + #define CYTHON_USE_PYLIST_INTERNALS 0 + #ifndef CYTHON_USE_UNICODE_INTERNALS + #define CYTHON_USE_UNICODE_INTERNALS 1 + #endif + #undef CYTHON_USE_UNICODE_WRITER + #define CYTHON_USE_UNICODE_WRITER 0 + #undef CYTHON_USE_PYLONG_INTERNALS + #define CYTHON_USE_PYLONG_INTERNALS 0 + #ifndef CYTHON_AVOID_BORROWED_REFS + #define CYTHON_AVOID_BORROWED_REFS 0 + #endif + #ifndef CYTHON_ASSUME_SAFE_MACROS + #define CYTHON_ASSUME_SAFE_MACROS 1 + #endif + #ifndef CYTHON_UNPACK_METHODS + #define CYTHON_UNPACK_METHODS 1 + #endif + #undef CYTHON_FAST_THREAD_STATE + #define CYTHON_FAST_THREAD_STATE 0 + #undef CYTHON_FAST_PYCALL + #define CYTHON_FAST_PYCALL 0 +#else + #define CYTHON_COMPILING_IN_PYPY 0 + #define CYTHON_COMPILING_IN_PYSTON 0 + #define CYTHON_COMPILING_IN_CPYTHON 1 + #ifndef CYTHON_USE_TYPE_SLOTS + #define CYTHON_USE_TYPE_SLOTS 1 + #endif + #if PY_MAJOR_VERSION < 3 + #undef CYTHON_USE_ASYNC_SLOTS + #define CYTHON_USE_ASYNC_SLOTS 0 + #elif !defined(CYTHON_USE_ASYNC_SLOTS) + #define CYTHON_USE_ASYNC_SLOTS 1 + #endif + #if PY_VERSION_HEX < 0x02070000 + #undef CYTHON_USE_PYLONG_INTERNALS + #define CYTHON_USE_PYLONG_INTERNALS 0 + #elif !defined(CYTHON_USE_PYLONG_INTERNALS) + #define CYTHON_USE_PYLONG_INTERNALS 1 + #endif + #ifndef CYTHON_USE_PYLIST_INTERNALS + #define CYTHON_USE_PYLIST_INTERNALS 1 + #endif + #ifndef CYTHON_USE_UNICODE_INTERNALS + #define CYTHON_USE_UNICODE_INTERNALS 1 + #endif + #if PY_VERSION_HEX < 0x030300F0 + #undef CYTHON_USE_UNICODE_WRITER + #define CYTHON_USE_UNICODE_WRITER 0 + #elif !defined(CYTHON_USE_UNICODE_WRITER) + #define CYTHON_USE_UNICODE_WRITER 1 + #endif + #ifndef CYTHON_AVOID_BORROWED_REFS + #define CYTHON_AVOID_BORROWED_REFS 0 + #endif + #ifndef CYTHON_ASSUME_SAFE_MACROS + #define CYTHON_ASSUME_SAFE_MACROS 1 + #endif + #ifndef CYTHON_UNPACK_METHODS + #define CYTHON_UNPACK_METHODS 1 + #endif + #ifndef CYTHON_FAST_THREAD_STATE + #define CYTHON_FAST_THREAD_STATE 1 + #endif + #ifndef CYTHON_FAST_PYCALL + #define CYTHON_FAST_PYCALL 1 + #endif +#endif +#if !defined(CYTHON_FAST_PYCCALL) +#define CYTHON_FAST_PYCCALL (CYTHON_FAST_PYCALL && PY_VERSION_HEX >= 0x030600B1) +#endif +#if CYTHON_USE_PYLONG_INTERNALS + #include "longintrepr.h" + #undef SHIFT + #undef BASE + #undef MASK +#endif +#if CYTHON_COMPILING_IN_PYPY && PY_VERSION_HEX < 0x02070600 && !defined(Py_OptimizeFlag) + #define Py_OptimizeFlag 0 +#endif +#define __PYX_BUILD_PY_SSIZE_T "n" +#define CYTHON_FORMAT_SSIZE_T "z" +#if PY_MAJOR_VERSION < 3 + #define __Pyx_BUILTIN_MODULE_NAME "__builtin__" + #define __Pyx_PyCode_New(a, k, l, s, f, code, c, n, v, fv, cell, fn, name, fline, lnos)\ + PyCode_New(a+k, l, s, f, code, c, n, v, fv, cell, fn, name, fline, lnos) + #define __Pyx_DefaultClassType PyClass_Type +#else + #define __Pyx_BUILTIN_MODULE_NAME "builtins" + #define __Pyx_PyCode_New(a, k, l, s, f, code, c, n, v, fv, cell, fn, name, fline, lnos)\ + PyCode_New(a, k, l, s, f, code, c, n, v, fv, cell, fn, name, fline, lnos) + #define __Pyx_DefaultClassType PyType_Type +#endif +#ifndef Py_TPFLAGS_CHECKTYPES + #define Py_TPFLAGS_CHECKTYPES 0 +#endif +#ifndef Py_TPFLAGS_HAVE_INDEX + #define Py_TPFLAGS_HAVE_INDEX 0 +#endif +#ifndef Py_TPFLAGS_HAVE_NEWBUFFER + #define Py_TPFLAGS_HAVE_NEWBUFFER 0 +#endif +#ifndef Py_TPFLAGS_HAVE_FINALIZE + #define Py_TPFLAGS_HAVE_FINALIZE 0 +#endif +#if PY_VERSION_HEX < 0x030700A0 || !defined(METH_FASTCALL) + #ifndef METH_FASTCALL + #define METH_FASTCALL 0x80 + #endif + typedef PyObject *(*__Pyx_PyCFunctionFast) (PyObject *self, PyObject **args, Py_ssize_t nargs); + typedef PyObject *(*__Pyx_PyCFunctionFastWithKeywords) (PyObject *self, PyObject **args, + Py_ssize_t nargs, PyObject *kwnames); +#else + #define __Pyx_PyCFunctionFast _PyCFunctionFast + #define __Pyx_PyCFunctionFastWithKeywords _PyCFunctionFastWithKeywords +#endif +#if CYTHON_FAST_PYCCALL +#define __Pyx_PyFastCFunction_Check(func)\ + ((PyCFunction_Check(func) && (METH_FASTCALL == (PyCFunction_GET_FLAGS(func) & ~(METH_CLASS | METH_STATIC | METH_COEXIST | METH_KEYWORDS))))) +#else +#define __Pyx_PyFastCFunction_Check(func) 0 +#endif +#if PY_VERSION_HEX > 0x03030000 && defined(PyUnicode_KIND) + #define CYTHON_PEP393_ENABLED 1 + #define __Pyx_PyUnicode_READY(op) (likely(PyUnicode_IS_READY(op)) ?\ + 0 : _PyUnicode_Ready((PyObject *)(op))) + #define __Pyx_PyUnicode_GET_LENGTH(u) PyUnicode_GET_LENGTH(u) + #define __Pyx_PyUnicode_READ_CHAR(u, i) PyUnicode_READ_CHAR(u, i) + #define __Pyx_PyUnicode_MAX_CHAR_VALUE(u) PyUnicode_MAX_CHAR_VALUE(u) + #define __Pyx_PyUnicode_KIND(u) PyUnicode_KIND(u) + #define __Pyx_PyUnicode_DATA(u) PyUnicode_DATA(u) + #define __Pyx_PyUnicode_READ(k, d, i) PyUnicode_READ(k, d, i) + #define __Pyx_PyUnicode_WRITE(k, d, i, ch) PyUnicode_WRITE(k, d, i, ch) + #define __Pyx_PyUnicode_IS_TRUE(u) (0 != (likely(PyUnicode_IS_READY(u)) ? PyUnicode_GET_LENGTH(u) : PyUnicode_GET_SIZE(u))) +#else + #define CYTHON_PEP393_ENABLED 0 + #define PyUnicode_1BYTE_KIND 1 + #define PyUnicode_2BYTE_KIND 2 + #define PyUnicode_4BYTE_KIND 4 + #define __Pyx_PyUnicode_READY(op) (0) + #define __Pyx_PyUnicode_GET_LENGTH(u) PyUnicode_GET_SIZE(u) + #define __Pyx_PyUnicode_READ_CHAR(u, i) ((Py_UCS4)(PyUnicode_AS_UNICODE(u)[i])) + #define __Pyx_PyUnicode_MAX_CHAR_VALUE(u) ((sizeof(Py_UNICODE) == 2) ? 65535 : 1114111) + #define __Pyx_PyUnicode_KIND(u) (sizeof(Py_UNICODE)) + #define __Pyx_PyUnicode_DATA(u) ((void*)PyUnicode_AS_UNICODE(u)) + #define __Pyx_PyUnicode_READ(k, d, i) ((void)(k), (Py_UCS4)(((Py_UNICODE*)d)[i])) + #define __Pyx_PyUnicode_WRITE(k, d, i, ch) (((void)(k)), ((Py_UNICODE*)d)[i] = ch) + #define __Pyx_PyUnicode_IS_TRUE(u) (0 != PyUnicode_GET_SIZE(u)) +#endif +#if CYTHON_COMPILING_IN_PYPY + #define __Pyx_PyUnicode_Concat(a, b) PyNumber_Add(a, b) + #define __Pyx_PyUnicode_ConcatSafe(a, b) PyNumber_Add(a, b) +#else + #define __Pyx_PyUnicode_Concat(a, b) PyUnicode_Concat(a, b) + #define __Pyx_PyUnicode_ConcatSafe(a, b) ((unlikely((a) == Py_None) || unlikely((b) == Py_None)) ?\ + PyNumber_Add(a, b) : __Pyx_PyUnicode_Concat(a, b)) +#endif +#if CYTHON_COMPILING_IN_PYPY && !defined(PyUnicode_Contains) + #define PyUnicode_Contains(u, s) PySequence_Contains(u, s) +#endif +#if CYTHON_COMPILING_IN_PYPY && !defined(PyByteArray_Check) + #define PyByteArray_Check(obj) PyObject_TypeCheck(obj, &PyByteArray_Type) +#endif +#if CYTHON_COMPILING_IN_PYPY && !defined(PyObject_Format) + #define PyObject_Format(obj, fmt) PyObject_CallMethod(obj, "__format__", "O", fmt) +#endif +#if CYTHON_COMPILING_IN_PYPY && !defined(PyObject_Malloc) + #define PyObject_Malloc(s) PyMem_Malloc(s) + #define PyObject_Free(p) PyMem_Free(p) + #define PyObject_Realloc(p) PyMem_Realloc(p) +#endif +#if CYTHON_COMPILING_IN_PYSTON + #define __Pyx_PyCode_HasFreeVars(co) PyCode_HasFreeVars(co) + #define __Pyx_PyFrame_SetLineNumber(frame, lineno) PyFrame_SetLineNumber(frame, lineno) +#else + #define __Pyx_PyCode_HasFreeVars(co) (PyCode_GetNumFree(co) > 0) + #define __Pyx_PyFrame_SetLineNumber(frame, lineno) (frame)->f_lineno = (lineno) +#endif +#define __Pyx_PyString_FormatSafe(a, b) ((unlikely((a) == Py_None)) ? PyNumber_Remainder(a, b) : __Pyx_PyString_Format(a, b)) +#define __Pyx_PyUnicode_FormatSafe(a, b) ((unlikely((a) == Py_None)) ? PyNumber_Remainder(a, b) : PyUnicode_Format(a, b)) +#if PY_MAJOR_VERSION >= 3 + #define __Pyx_PyString_Format(a, b) PyUnicode_Format(a, b) +#else + #define __Pyx_PyString_Format(a, b) PyString_Format(a, b) +#endif +#if PY_MAJOR_VERSION < 3 && !defined(PyObject_ASCII) + #define PyObject_ASCII(o) PyObject_Repr(o) +#endif +#if PY_MAJOR_VERSION >= 3 + #define PyBaseString_Type PyUnicode_Type + #define PyStringObject PyUnicodeObject + #define PyString_Type PyUnicode_Type + #define PyString_Check PyUnicode_Check + #define PyString_CheckExact PyUnicode_CheckExact +#endif +#if PY_MAJOR_VERSION >= 3 + #define __Pyx_PyBaseString_Check(obj) PyUnicode_Check(obj) + #define __Pyx_PyBaseString_CheckExact(obj) PyUnicode_CheckExact(obj) +#else + #define __Pyx_PyBaseString_Check(obj) (PyString_Check(obj) || PyUnicode_Check(obj)) + #define __Pyx_PyBaseString_CheckExact(obj) (PyString_CheckExact(obj) || PyUnicode_CheckExact(obj)) +#endif +#ifndef PySet_CheckExact + #define PySet_CheckExact(obj) (Py_TYPE(obj) == &PySet_Type) +#endif +#define __Pyx_TypeCheck(obj, type) PyObject_TypeCheck(obj, (PyTypeObject *)type) +#define __Pyx_PyException_Check(obj) __Pyx_TypeCheck(obj, PyExc_Exception) +#if PY_MAJOR_VERSION >= 3 + #define PyIntObject PyLongObject + #define PyInt_Type PyLong_Type + #define PyInt_Check(op) PyLong_Check(op) + #define PyInt_CheckExact(op) PyLong_CheckExact(op) + #define PyInt_FromString PyLong_FromString + #define PyInt_FromUnicode PyLong_FromUnicode + #define PyInt_FromLong PyLong_FromLong + #define PyInt_FromSize_t PyLong_FromSize_t + #define PyInt_FromSsize_t PyLong_FromSsize_t + #define PyInt_AsLong PyLong_AsLong + #define PyInt_AS_LONG PyLong_AS_LONG + #define PyInt_AsSsize_t PyLong_AsSsize_t + #define PyInt_AsUnsignedLongMask PyLong_AsUnsignedLongMask + #define PyInt_AsUnsignedLongLongMask PyLong_AsUnsignedLongLongMask + #define PyNumber_Int PyNumber_Long +#endif +#if PY_MAJOR_VERSION >= 3 + #define PyBoolObject PyLongObject +#endif +#if PY_MAJOR_VERSION >= 3 && CYTHON_COMPILING_IN_PYPY + #ifndef PyUnicode_InternFromString + #define PyUnicode_InternFromString(s) PyUnicode_FromString(s) + #endif +#endif +#if PY_VERSION_HEX < 0x030200A4 + typedef long Py_hash_t; + #define __Pyx_PyInt_FromHash_t PyInt_FromLong + #define __Pyx_PyInt_AsHash_t PyInt_AsLong +#else + #define __Pyx_PyInt_FromHash_t PyInt_FromSsize_t + #define __Pyx_PyInt_AsHash_t PyInt_AsSsize_t +#endif +#if PY_MAJOR_VERSION >= 3 + #define __Pyx_PyMethod_New(func, self, klass) ((self) ? PyMethod_New(func, self) : PyInstanceMethod_New(func)) +#else + #define __Pyx_PyMethod_New(func, self, klass) PyMethod_New(func, self, klass) +#endif +#ifndef __has_attribute + #define __has_attribute(x) 0 +#endif +#ifndef __has_cpp_attribute + #define __has_cpp_attribute(x) 0 +#endif +#if CYTHON_USE_ASYNC_SLOTS + #if PY_VERSION_HEX >= 0x030500B1 + #define __Pyx_PyAsyncMethodsStruct PyAsyncMethods + #define __Pyx_PyType_AsAsync(obj) (Py_TYPE(obj)->tp_as_async) + #else + typedef struct { + unaryfunc am_await; + unaryfunc am_aiter; + unaryfunc am_anext; + } __Pyx_PyAsyncMethodsStruct; + #define __Pyx_PyType_AsAsync(obj) ((__Pyx_PyAsyncMethodsStruct*) (Py_TYPE(obj)->tp_reserved)) + #endif +#else + #define __Pyx_PyType_AsAsync(obj) NULL +#endif +#ifndef CYTHON_RESTRICT + #if defined(__GNUC__) + #define CYTHON_RESTRICT __restrict__ + #elif defined(_MSC_VER) && _MSC_VER >= 1400 + #define CYTHON_RESTRICT __restrict + #elif defined (__STDC_VERSION__) && __STDC_VERSION__ >= 199901L + #define CYTHON_RESTRICT restrict + #else + #define CYTHON_RESTRICT + #endif +#endif +#ifndef CYTHON_UNUSED +# if defined(__GNUC__) +# if !(defined(__cplusplus)) || (__GNUC__ > 3 || (__GNUC__ == 3 && __GNUC_MINOR__ >= 4)) +# define CYTHON_UNUSED __attribute__ ((__unused__)) +# else +# define CYTHON_UNUSED +# endif +# elif defined(__ICC) || (defined(__INTEL_COMPILER) && !defined(_MSC_VER)) +# define CYTHON_UNUSED __attribute__ ((__unused__)) +# else +# define CYTHON_UNUSED +# endif +#endif +#ifndef CYTHON_MAYBE_UNUSED_VAR +# if defined(__cplusplus) + template void CYTHON_MAYBE_UNUSED_VAR( const T& ) { } +# else +# define CYTHON_MAYBE_UNUSED_VAR(x) (void)(x) +# endif +#endif +#ifndef CYTHON_NCP_UNUSED +# if CYTHON_COMPILING_IN_CPYTHON +# define CYTHON_NCP_UNUSED +# else +# define CYTHON_NCP_UNUSED CYTHON_UNUSED +# endif +#endif +#define __Pyx_void_to_None(void_result) ((void)(void_result), Py_INCREF(Py_None), Py_None) +#ifdef _MSC_VER + #ifndef _MSC_STDINT_H_ + #if _MSC_VER < 1300 + typedef unsigned char uint8_t; + typedef unsigned int uint32_t; + #else + typedef unsigned __int8 uint8_t; + typedef unsigned __int32 uint32_t; + #endif + #endif +#else + #include +#endif +#ifndef CYTHON_FALLTHROUGH + #ifdef __cplusplus + #if __has_cpp_attribute(fallthrough) + #define CYTHON_FALLTHROUGH [[fallthrough]] + #elif __has_cpp_attribute(clang::fallthrough) + #define CYTHON_FALLTHROUGH [[clang::fallthrough]] + #endif + #endif + #ifndef CYTHON_FALLTHROUGH + #if __has_attribute(fallthrough) || (defined(__GNUC__) && defined(__attribute__)) + #define CYTHON_FALLTHROUGH __attribute__((fallthrough)) + #else + #define CYTHON_FALLTHROUGH + #endif + #endif +#endif + +#ifndef CYTHON_INLINE + #if defined(__clang__) + #define CYTHON_INLINE __inline__ __attribute__ ((__unused__)) + #elif defined(__GNUC__) + #define CYTHON_INLINE __inline__ + #elif defined(_MSC_VER) + #define CYTHON_INLINE __inline + #elif defined (__STDC_VERSION__) && __STDC_VERSION__ >= 199901L + #define CYTHON_INLINE inline + #else + #define CYTHON_INLINE + #endif +#endif + +#if defined(WIN32) || defined(MS_WINDOWS) + #define _USE_MATH_DEFINES +#endif +#include +#ifdef NAN +#define __PYX_NAN() ((float) NAN) +#else +static CYTHON_INLINE float __PYX_NAN() { + float value; + memset(&value, 0xFF, sizeof(value)); + return value; +} +#endif +#if defined(__CYGWIN__) && defined(_LDBL_EQ_DBL) +#define __Pyx_truncl trunc +#else +#define __Pyx_truncl truncl +#endif + + +#define __PYX_ERR(f_index, lineno, Ln_error) \ +{ \ + __pyx_filename = __pyx_f[f_index]; __pyx_lineno = lineno; __pyx_clineno = __LINE__; goto Ln_error; \ +} + +#if PY_MAJOR_VERSION >= 3 + #define __Pyx_PyNumber_Divide(x,y) PyNumber_TrueDivide(x,y) + #define __Pyx_PyNumber_InPlaceDivide(x,y) PyNumber_InPlaceTrueDivide(x,y) +#else + #define __Pyx_PyNumber_Divide(x,y) PyNumber_Divide(x,y) + #define __Pyx_PyNumber_InPlaceDivide(x,y) PyNumber_InPlaceDivide(x,y) +#endif + +#ifndef __PYX_EXTERN_C + #ifdef __cplusplus + #define __PYX_EXTERN_C extern "C" + #else + #define __PYX_EXTERN_C extern + #endif +#endif + +#define __PYX_HAVE__CAStar__AATC_Monitor_Viewer +#define __PYX_HAVE_API__CAStar__AATC_Monitor_Viewer +#ifdef _OPENMP +#include +#endif /* _OPENMP */ + +#ifdef PYREX_WITHOUT_ASSERTIONS +#define CYTHON_WITHOUT_ASSERTIONS +#endif + +typedef struct {PyObject **p; const char *s; const Py_ssize_t n; const char* encoding; + const char is_unicode; const char is_str; const char intern; } __Pyx_StringTabEntry; + +#define __PYX_DEFAULT_STRING_ENCODING_IS_ASCII 0 +#define __PYX_DEFAULT_STRING_ENCODING_IS_DEFAULT 0 +#define __PYX_DEFAULT_STRING_ENCODING "" +#define __Pyx_PyObject_FromString __Pyx_PyBytes_FromString +#define __Pyx_PyObject_FromStringAndSize __Pyx_PyBytes_FromStringAndSize +#define __Pyx_uchar_cast(c) ((unsigned char)c) +#define __Pyx_long_cast(x) ((long)x) +#define __Pyx_fits_Py_ssize_t(v, type, is_signed) (\ + (sizeof(type) < sizeof(Py_ssize_t)) ||\ + (sizeof(type) > sizeof(Py_ssize_t) &&\ + likely(v < (type)PY_SSIZE_T_MAX ||\ + v == (type)PY_SSIZE_T_MAX) &&\ + (!is_signed || likely(v > (type)PY_SSIZE_T_MIN ||\ + v == (type)PY_SSIZE_T_MIN))) ||\ + (sizeof(type) == sizeof(Py_ssize_t) &&\ + (is_signed || likely(v < (type)PY_SSIZE_T_MAX ||\ + v == (type)PY_SSIZE_T_MAX))) ) +#if defined (__cplusplus) && __cplusplus >= 201103L + #include + #define __Pyx_sst_abs(value) std::abs(value) +#elif SIZEOF_INT >= SIZEOF_SIZE_T + #define __Pyx_sst_abs(value) abs(value) +#elif SIZEOF_LONG >= SIZEOF_SIZE_T + #define __Pyx_sst_abs(value) labs(value) +#elif defined (_MSC_VER) && defined (_M_X64) + #define __Pyx_sst_abs(value) _abs64(value) +#elif defined (__STDC_VERSION__) && __STDC_VERSION__ >= 199901L + #define __Pyx_sst_abs(value) llabs(value) +#elif defined (__GNUC__) + #define __Pyx_sst_abs(value) __builtin_llabs(value) +#else + #define __Pyx_sst_abs(value) ((value<0) ? -value : value) +#endif +static CYTHON_INLINE const char* __Pyx_PyObject_AsString(PyObject*); +static CYTHON_INLINE const char* __Pyx_PyObject_AsStringAndSize(PyObject*, Py_ssize_t* length); +#define __Pyx_PyByteArray_FromString(s) PyByteArray_FromStringAndSize((const char*)s, strlen((const char*)s)) +#define __Pyx_PyByteArray_FromStringAndSize(s, l) PyByteArray_FromStringAndSize((const char*)s, l) +#define __Pyx_PyBytes_FromString PyBytes_FromString +#define __Pyx_PyBytes_FromStringAndSize PyBytes_FromStringAndSize +static CYTHON_INLINE PyObject* __Pyx_PyUnicode_FromString(const char*); +#if PY_MAJOR_VERSION < 3 + #define __Pyx_PyStr_FromString __Pyx_PyBytes_FromString + #define __Pyx_PyStr_FromStringAndSize __Pyx_PyBytes_FromStringAndSize +#else + #define __Pyx_PyStr_FromString __Pyx_PyUnicode_FromString + #define __Pyx_PyStr_FromStringAndSize __Pyx_PyUnicode_FromStringAndSize +#endif +#define __Pyx_PyObject_AsWritableString(s) ((char*) __Pyx_PyObject_AsString(s)) +#define __Pyx_PyObject_AsWritableSString(s) ((signed char*) __Pyx_PyObject_AsString(s)) +#define __Pyx_PyObject_AsWritableUString(s) ((unsigned char*) __Pyx_PyObject_AsString(s)) +#define __Pyx_PyObject_AsSString(s) ((const signed char*) __Pyx_PyObject_AsString(s)) +#define __Pyx_PyObject_AsUString(s) ((const unsigned char*) __Pyx_PyObject_AsString(s)) +#define __Pyx_PyObject_FromCString(s) __Pyx_PyObject_FromString((const char*)s) +#define __Pyx_PyBytes_FromCString(s) __Pyx_PyBytes_FromString((const char*)s) +#define __Pyx_PyByteArray_FromCString(s) __Pyx_PyByteArray_FromString((const char*)s) +#define __Pyx_PyStr_FromCString(s) __Pyx_PyStr_FromString((const char*)s) +#define __Pyx_PyUnicode_FromCString(s) __Pyx_PyUnicode_FromString((const char*)s) +#if PY_MAJOR_VERSION < 3 +static CYTHON_INLINE size_t __Pyx_Py_UNICODE_strlen(const Py_UNICODE *u) +{ + const Py_UNICODE *u_end = u; + while (*u_end++) ; + return (size_t)(u_end - u - 1); +} +#else +#define __Pyx_Py_UNICODE_strlen Py_UNICODE_strlen +#endif +#define __Pyx_PyUnicode_FromUnicode(u) PyUnicode_FromUnicode(u, __Pyx_Py_UNICODE_strlen(u)) +#define __Pyx_PyUnicode_FromUnicodeAndLength PyUnicode_FromUnicode +#define __Pyx_PyUnicode_AsUnicode PyUnicode_AsUnicode +#define __Pyx_NewRef(obj) (Py_INCREF(obj), obj) +#define __Pyx_Owned_Py_None(b) __Pyx_NewRef(Py_None) +#define __Pyx_PyBool_FromLong(b) ((b) ? __Pyx_NewRef(Py_True) : __Pyx_NewRef(Py_False)) +static CYTHON_INLINE int __Pyx_PyObject_IsTrue(PyObject*); +static CYTHON_INLINE PyObject* __Pyx_PyNumber_IntOrLong(PyObject* x); +static CYTHON_INLINE Py_ssize_t __Pyx_PyIndex_AsSsize_t(PyObject*); +static CYTHON_INLINE PyObject * __Pyx_PyInt_FromSize_t(size_t); +#if CYTHON_ASSUME_SAFE_MACROS +#define __pyx_PyFloat_AsDouble(x) (PyFloat_CheckExact(x) ? PyFloat_AS_DOUBLE(x) : PyFloat_AsDouble(x)) +#else +#define __pyx_PyFloat_AsDouble(x) PyFloat_AsDouble(x) +#endif +#define __pyx_PyFloat_AsFloat(x) ((float) __pyx_PyFloat_AsDouble(x)) +#if PY_MAJOR_VERSION >= 3 +#define __Pyx_PyNumber_Int(x) (PyLong_CheckExact(x) ? __Pyx_NewRef(x) : PyNumber_Long(x)) +#else +#define __Pyx_PyNumber_Int(x) (PyInt_CheckExact(x) ? __Pyx_NewRef(x) : PyNumber_Int(x)) +#endif +#define __Pyx_PyNumber_Float(x) (PyFloat_CheckExact(x) ? __Pyx_NewRef(x) : PyNumber_Float(x)) +#if PY_MAJOR_VERSION < 3 && __PYX_DEFAULT_STRING_ENCODING_IS_ASCII +static int __Pyx_sys_getdefaultencoding_not_ascii; +static int __Pyx_init_sys_getdefaultencoding_params(void) { + PyObject* sys; + PyObject* default_encoding = NULL; + PyObject* ascii_chars_u = NULL; + PyObject* ascii_chars_b = NULL; + const char* default_encoding_c; + sys = PyImport_ImportModule("sys"); + if (!sys) goto bad; + default_encoding = PyObject_CallMethod(sys, (char*) "getdefaultencoding", NULL); + Py_DECREF(sys); + if (!default_encoding) goto bad; + default_encoding_c = PyBytes_AsString(default_encoding); + if (!default_encoding_c) goto bad; + if (strcmp(default_encoding_c, "ascii") == 0) { + __Pyx_sys_getdefaultencoding_not_ascii = 0; + } else { + char ascii_chars[128]; + int c; + for (c = 0; c < 128; c++) { + ascii_chars[c] = c; + } + __Pyx_sys_getdefaultencoding_not_ascii = 1; + ascii_chars_u = PyUnicode_DecodeASCII(ascii_chars, 128, NULL); + if (!ascii_chars_u) goto bad; + ascii_chars_b = PyUnicode_AsEncodedString(ascii_chars_u, default_encoding_c, NULL); + if (!ascii_chars_b || !PyBytes_Check(ascii_chars_b) || memcmp(ascii_chars, PyBytes_AS_STRING(ascii_chars_b), 128) != 0) { + PyErr_Format( + PyExc_ValueError, + "This module compiled with c_string_encoding=ascii, but default encoding '%.200s' is not a superset of ascii.", + default_encoding_c); + goto bad; + } + Py_DECREF(ascii_chars_u); + Py_DECREF(ascii_chars_b); + } + Py_DECREF(default_encoding); + return 0; +bad: + Py_XDECREF(default_encoding); + Py_XDECREF(ascii_chars_u); + Py_XDECREF(ascii_chars_b); + return -1; +} +#endif +#if __PYX_DEFAULT_STRING_ENCODING_IS_DEFAULT && PY_MAJOR_VERSION >= 3 +#define __Pyx_PyUnicode_FromStringAndSize(c_str, size) PyUnicode_DecodeUTF8(c_str, size, NULL) +#else +#define __Pyx_PyUnicode_FromStringAndSize(c_str, size) PyUnicode_Decode(c_str, size, __PYX_DEFAULT_STRING_ENCODING, NULL) +#if __PYX_DEFAULT_STRING_ENCODING_IS_DEFAULT +static char* __PYX_DEFAULT_STRING_ENCODING; +static int __Pyx_init_sys_getdefaultencoding_params(void) { + PyObject* sys; + PyObject* default_encoding = NULL; + char* default_encoding_c; + sys = PyImport_ImportModule("sys"); + if (!sys) goto bad; + default_encoding = PyObject_CallMethod(sys, (char*) (const char*) "getdefaultencoding", NULL); + Py_DECREF(sys); + if (!default_encoding) goto bad; + default_encoding_c = PyBytes_AsString(default_encoding); + if (!default_encoding_c) goto bad; + __PYX_DEFAULT_STRING_ENCODING = (char*) malloc(strlen(default_encoding_c)); + if (!__PYX_DEFAULT_STRING_ENCODING) goto bad; + strcpy(__PYX_DEFAULT_STRING_ENCODING, default_encoding_c); + Py_DECREF(default_encoding); + return 0; +bad: + Py_XDECREF(default_encoding); + return -1; +} +#endif +#endif + + +/* Test for GCC > 2.95 */ +#if defined(__GNUC__) && (__GNUC__ > 2 || (__GNUC__ == 2 && (__GNUC_MINOR__ > 95))) + #define likely(x) __builtin_expect(!!(x), 1) + #define unlikely(x) __builtin_expect(!!(x), 0) +#else /* !__GNUC__ or GCC < 2.95 */ + #define likely(x) (x) + #define unlikely(x) (x) +#endif /* __GNUC__ */ +static CYTHON_INLINE void __Pyx_pretend_to_initialize(void* ptr) { (void)ptr; } + +static PyObject *__pyx_m; +static PyObject *__pyx_d; +static PyObject *__pyx_b; +static PyObject *__pyx_cython_runtime; +static PyObject *__pyx_empty_tuple; +static PyObject *__pyx_empty_bytes; +static PyObject *__pyx_empty_unicode; +static int __pyx_lineno; +static int __pyx_clineno = 0; +static const char * __pyx_cfilenm= __FILE__; +static const char *__pyx_filename; + + +static const char *__pyx_f[] = { + "AATC_Monitor_Viewer.pyx", +}; + +/*--- Type declarations ---*/ +struct __pyx_ctuple_long__and_long__and_long; +typedef struct __pyx_ctuple_long__and_long__and_long __pyx_ctuple_long__and_long__and_long; + +/* "CAStar/AATC_Monitor_Viewer.pyx":82 + * self.CameraCoord.Set_YSize ((self.MaxCoords.Get_Y() - self.MinCoords.Get_Y())/self.CameraZoom) + * + * def CameraWipe(self,Colour = (0,0,0)): # <<<<<<<<<<<<<< + * self.gameDisplay.fill(Colour) + * def ResetDrawObject(self): + */ +struct __pyx_ctuple_long__and_long__and_long { + long f0; + long f1; + long f2; +}; + +/* --- Runtime support code (head) --- */ +/* Refnanny.proto */ +#ifndef CYTHON_REFNANNY + #define CYTHON_REFNANNY 0 +#endif +#if CYTHON_REFNANNY + typedef struct { + void (*INCREF)(void*, PyObject*, int); + void (*DECREF)(void*, PyObject*, int); + void (*GOTREF)(void*, PyObject*, int); + void (*GIVEREF)(void*, PyObject*, int); + void* (*SetupContext)(const char*, int, const char*); + void (*FinishContext)(void**); + } __Pyx_RefNannyAPIStruct; + static __Pyx_RefNannyAPIStruct *__Pyx_RefNanny = NULL; + static __Pyx_RefNannyAPIStruct *__Pyx_RefNannyImportAPI(const char *modname); + #define __Pyx_RefNannyDeclarations void *__pyx_refnanny = NULL; +#ifdef WITH_THREAD + #define __Pyx_RefNannySetupContext(name, acquire_gil)\ + if (acquire_gil) {\ + PyGILState_STATE __pyx_gilstate_save = PyGILState_Ensure();\ + __pyx_refnanny = __Pyx_RefNanny->SetupContext((name), __LINE__, __FILE__);\ + PyGILState_Release(__pyx_gilstate_save);\ + } else {\ + __pyx_refnanny = __Pyx_RefNanny->SetupContext((name), __LINE__, __FILE__);\ + } +#else + #define __Pyx_RefNannySetupContext(name, acquire_gil)\ + __pyx_refnanny = __Pyx_RefNanny->SetupContext((name), __LINE__, __FILE__) +#endif + #define __Pyx_RefNannyFinishContext()\ + __Pyx_RefNanny->FinishContext(&__pyx_refnanny) + #define __Pyx_INCREF(r) __Pyx_RefNanny->INCREF(__pyx_refnanny, (PyObject *)(r), __LINE__) + #define __Pyx_DECREF(r) __Pyx_RefNanny->DECREF(__pyx_refnanny, (PyObject *)(r), __LINE__) + #define __Pyx_GOTREF(r) __Pyx_RefNanny->GOTREF(__pyx_refnanny, (PyObject *)(r), __LINE__) + #define __Pyx_GIVEREF(r) __Pyx_RefNanny->GIVEREF(__pyx_refnanny, (PyObject *)(r), __LINE__) + #define __Pyx_XINCREF(r) do { if((r) != NULL) {__Pyx_INCREF(r); }} while(0) + #define __Pyx_XDECREF(r) do { if((r) != NULL) {__Pyx_DECREF(r); }} while(0) + #define __Pyx_XGOTREF(r) do { if((r) != NULL) {__Pyx_GOTREF(r); }} while(0) + #define __Pyx_XGIVEREF(r) do { if((r) != NULL) {__Pyx_GIVEREF(r);}} while(0) +#else + #define __Pyx_RefNannyDeclarations + #define __Pyx_RefNannySetupContext(name, acquire_gil) + #define __Pyx_RefNannyFinishContext() + #define __Pyx_INCREF(r) Py_INCREF(r) + #define __Pyx_DECREF(r) Py_DECREF(r) + #define __Pyx_GOTREF(r) + #define __Pyx_GIVEREF(r) + #define __Pyx_XINCREF(r) Py_XINCREF(r) + #define __Pyx_XDECREF(r) Py_XDECREF(r) + #define __Pyx_XGOTREF(r) + #define __Pyx_XGIVEREF(r) +#endif +#define __Pyx_XDECREF_SET(r, v) do {\ + PyObject *tmp = (PyObject *) r;\ + r = v; __Pyx_XDECREF(tmp);\ + } while (0) +#define __Pyx_DECREF_SET(r, v) do {\ + PyObject *tmp = (PyObject *) r;\ + r = v; __Pyx_DECREF(tmp);\ + } while (0) +#define __Pyx_CLEAR(r) do { PyObject* tmp = ((PyObject*)(r)); r = NULL; __Pyx_DECREF(tmp);} while(0) +#define __Pyx_XCLEAR(r) do { if((r) != NULL) {PyObject* tmp = ((PyObject*)(r)); r = NULL; __Pyx_DECREF(tmp);}} while(0) + +/* PyObjectGetAttrStr.proto */ +#if CYTHON_USE_TYPE_SLOTS +static CYTHON_INLINE PyObject* __Pyx_PyObject_GetAttrStr(PyObject* obj, PyObject* attr_name) { + PyTypeObject* tp = Py_TYPE(obj); + if (likely(tp->tp_getattro)) + return tp->tp_getattro(obj, attr_name); +#if PY_MAJOR_VERSION < 3 + if (likely(tp->tp_getattr)) + return tp->tp_getattr(obj, PyString_AS_STRING(attr_name)); +#endif + return PyObject_GetAttr(obj, attr_name); +} +#else +#define __Pyx_PyObject_GetAttrStr(o,n) PyObject_GetAttr(o,n) +#endif + +/* GetBuiltinName.proto */ +static PyObject *__Pyx_GetBuiltinName(PyObject *name); + +/* RaiseArgTupleInvalid.proto */ +static void __Pyx_RaiseArgtupleInvalid(const char* func_name, int exact, + Py_ssize_t num_min, Py_ssize_t num_max, Py_ssize_t num_found); + +/* RaiseDoubleKeywords.proto */ +static void __Pyx_RaiseDoubleKeywordsError(const char* func_name, PyObject* kw_name); + +/* ParseKeywords.proto */ +static int __Pyx_ParseOptionalKeywords(PyObject *kwds, PyObject **argnames[],\ + PyObject *kwds2, PyObject *values[], Py_ssize_t num_pos_args,\ + const char* function_name); + +/* GetModuleGlobalName.proto */ +static CYTHON_INLINE PyObject *__Pyx_GetModuleGlobalName(PyObject *name); + +/* PyCFunctionFastCall.proto */ +#if CYTHON_FAST_PYCCALL +static CYTHON_INLINE PyObject *__Pyx_PyCFunction_FastCall(PyObject *func, PyObject **args, Py_ssize_t nargs); +#else +#define __Pyx_PyCFunction_FastCall(func, args, nargs) (assert(0), NULL) +#endif + +/* PyFunctionFastCall.proto */ +#if CYTHON_FAST_PYCALL +#define __Pyx_PyFunction_FastCall(func, args, nargs)\ + __Pyx_PyFunction_FastCallDict((func), (args), (nargs), NULL) +#if 1 || PY_VERSION_HEX < 0x030600B1 +static PyObject *__Pyx_PyFunction_FastCallDict(PyObject *func, PyObject **args, int nargs, PyObject *kwargs); +#else +#define __Pyx_PyFunction_FastCallDict(func, args, nargs, kwargs) _PyFunction_FastCallDict(func, args, nargs, kwargs) +#endif +#endif + +/* PyObjectCall.proto */ +#if CYTHON_COMPILING_IN_CPYTHON +static CYTHON_INLINE PyObject* __Pyx_PyObject_Call(PyObject *func, PyObject *arg, PyObject *kw); +#else +#define __Pyx_PyObject_Call(func, arg, kw) PyObject_Call(func, arg, kw) +#endif + +/* PyObjectCallMethO.proto */ +#if CYTHON_COMPILING_IN_CPYTHON +static CYTHON_INLINE PyObject* __Pyx_PyObject_CallMethO(PyObject *func, PyObject *arg); +#endif + +/* PyObjectCallOneArg.proto */ +static CYTHON_INLINE PyObject* __Pyx_PyObject_CallOneArg(PyObject *func, PyObject *arg); + +/* PyObjectCallNoArg.proto */ +#if CYTHON_COMPILING_IN_CPYTHON +static CYTHON_INLINE PyObject* __Pyx_PyObject_CallNoArg(PyObject *func); +#else +#define __Pyx_PyObject_CallNoArg(func) __Pyx_PyObject_Call(func, __pyx_empty_tuple, NULL) +#endif + +/* GetItemInt.proto */ +#define __Pyx_GetItemInt(o, i, type, is_signed, to_py_func, is_list, wraparound, boundscheck)\ + (__Pyx_fits_Py_ssize_t(i, type, is_signed) ?\ + __Pyx_GetItemInt_Fast(o, (Py_ssize_t)i, is_list, wraparound, boundscheck) :\ + (is_list ? (PyErr_SetString(PyExc_IndexError, "list index out of range"), (PyObject*)NULL) :\ + __Pyx_GetItemInt_Generic(o, to_py_func(i)))) +#define __Pyx_GetItemInt_List(o, i, type, is_signed, to_py_func, is_list, wraparound, boundscheck)\ + (__Pyx_fits_Py_ssize_t(i, type, is_signed) ?\ + __Pyx_GetItemInt_List_Fast(o, (Py_ssize_t)i, wraparound, boundscheck) :\ + (PyErr_SetString(PyExc_IndexError, "list index out of range"), (PyObject*)NULL)) +static CYTHON_INLINE PyObject *__Pyx_GetItemInt_List_Fast(PyObject *o, Py_ssize_t i, + int wraparound, int boundscheck); +#define __Pyx_GetItemInt_Tuple(o, i, type, is_signed, to_py_func, is_list, wraparound, boundscheck)\ + (__Pyx_fits_Py_ssize_t(i, type, is_signed) ?\ + __Pyx_GetItemInt_Tuple_Fast(o, (Py_ssize_t)i, wraparound, boundscheck) :\ + (PyErr_SetString(PyExc_IndexError, "tuple index out of range"), (PyObject*)NULL)) +static CYTHON_INLINE PyObject *__Pyx_GetItemInt_Tuple_Fast(PyObject *o, Py_ssize_t i, + int wraparound, int boundscheck); +static CYTHON_INLINE PyObject *__Pyx_GetItemInt_Generic(PyObject *o, PyObject* j); +static CYTHON_INLINE PyObject *__Pyx_GetItemInt_Fast(PyObject *o, Py_ssize_t i, + int is_list, int wraparound, int boundscheck); + +/* PyObjectSetAttrStr.proto */ +#if CYTHON_USE_TYPE_SLOTS +#define __Pyx_PyObject_DelAttrStr(o,n) __Pyx_PyObject_SetAttrStr(o,n,NULL) +static CYTHON_INLINE int __Pyx_PyObject_SetAttrStr(PyObject* obj, PyObject* attr_name, PyObject* value) { + PyTypeObject* tp = Py_TYPE(obj); + if (likely(tp->tp_setattro)) + return tp->tp_setattro(obj, attr_name, value); +#if PY_MAJOR_VERSION < 3 + if (likely(tp->tp_setattr)) + return tp->tp_setattr(obj, PyString_AS_STRING(attr_name), value); +#endif + return PyObject_SetAttr(obj, attr_name, value); +} +#else +#define __Pyx_PyObject_DelAttrStr(o,n) PyObject_DelAttr(o,n) +#define __Pyx_PyObject_SetAttrStr(o,n,v) PyObject_SetAttr(o,n,v) +#endif + +/* ListAppend.proto */ +#if CYTHON_USE_PYLIST_INTERNALS && CYTHON_ASSUME_SAFE_MACROS +static CYTHON_INLINE int __Pyx_PyList_Append(PyObject* list, PyObject* x) { + PyListObject* L = (PyListObject*) list; + Py_ssize_t len = Py_SIZE(list); + if (likely(L->allocated > len) & likely(len > (L->allocated >> 1))) { + Py_INCREF(x); + PyList_SET_ITEM(list, len, x); + Py_SIZE(list) = len+1; + return 0; + } + return PyList_Append(list, x); +} +#else +#define __Pyx_PyList_Append(L,x) PyList_Append(L,x) +#endif + +/* PyObjectCallMethod1.proto */ +static PyObject* __Pyx_PyObject_CallMethod1(PyObject* obj, PyObject* method_name, PyObject* arg); + +/* append.proto */ +static CYTHON_INLINE int __Pyx_PyObject_Append(PyObject* L, PyObject* x); + +/* RaiseTooManyValuesToUnpack.proto */ +static CYTHON_INLINE void __Pyx_RaiseTooManyValuesError(Py_ssize_t expected); + +/* RaiseNeedMoreValuesToUnpack.proto */ +static CYTHON_INLINE void __Pyx_RaiseNeedMoreValuesError(Py_ssize_t index); + +/* IterFinish.proto */ +static CYTHON_INLINE int __Pyx_IterFinish(void); + +/* UnpackItemEndCheck.proto */ +static int __Pyx_IternextUnpackEndCheck(PyObject *retval, Py_ssize_t expected); + +/* Import.proto */ +static PyObject *__Pyx_Import(PyObject *name, PyObject *from_list, int level); + +/* FetchCommonType.proto */ +static PyTypeObject* __Pyx_FetchCommonType(PyTypeObject* type); + +/* CythonFunction.proto */ +#define __Pyx_CyFunction_USED 1 +#include +#define __Pyx_CYFUNCTION_STATICMETHOD 0x01 +#define __Pyx_CYFUNCTION_CLASSMETHOD 0x02 +#define __Pyx_CYFUNCTION_CCLASS 0x04 +#define __Pyx_CyFunction_GetClosure(f)\ + (((__pyx_CyFunctionObject *) (f))->func_closure) +#define __Pyx_CyFunction_GetClassObj(f)\ + (((__pyx_CyFunctionObject *) (f))->func_classobj) +#define __Pyx_CyFunction_Defaults(type, f)\ + ((type *)(((__pyx_CyFunctionObject *) (f))->defaults)) +#define __Pyx_CyFunction_SetDefaultsGetter(f, g)\ + ((__pyx_CyFunctionObject *) (f))->defaults_getter = (g) +typedef struct { + PyCFunctionObject func; +#if PY_VERSION_HEX < 0x030500A0 + PyObject *func_weakreflist; +#endif + PyObject *func_dict; + PyObject *func_name; + PyObject *func_qualname; + PyObject *func_doc; + PyObject *func_globals; + PyObject *func_code; + PyObject *func_closure; + PyObject *func_classobj; + void *defaults; + int defaults_pyobjects; + int flags; + PyObject *defaults_tuple; + PyObject *defaults_kwdict; + PyObject *(*defaults_getter)(PyObject *); + PyObject *func_annotations; +} __pyx_CyFunctionObject; +static PyTypeObject *__pyx_CyFunctionType = 0; +#define __Pyx_CyFunction_NewEx(ml, flags, qualname, self, module, globals, code)\ + __Pyx_CyFunction_New(__pyx_CyFunctionType, ml, flags, qualname, self, module, globals, code) +static PyObject *__Pyx_CyFunction_New(PyTypeObject *, PyMethodDef *ml, + int flags, PyObject* qualname, + PyObject *self, + PyObject *module, PyObject *globals, + PyObject* code); +static CYTHON_INLINE void *__Pyx_CyFunction_InitDefaults(PyObject *m, + size_t size, + int pyobjects); +static CYTHON_INLINE void __Pyx_CyFunction_SetDefaultsTuple(PyObject *m, + PyObject *tuple); +static CYTHON_INLINE void __Pyx_CyFunction_SetDefaultsKwDict(PyObject *m, + PyObject *dict); +static CYTHON_INLINE void __Pyx_CyFunction_SetAnnotationsDict(PyObject *m, + PyObject *dict); +static int __pyx_CyFunction_init(void); + +/* CalculateMetaclass.proto */ +static PyObject *__Pyx_CalculateMetaclass(PyTypeObject *metaclass, PyObject *bases); + +/* Py3ClassCreate.proto */ +static PyObject *__Pyx_Py3MetaclassPrepare(PyObject *metaclass, PyObject *bases, PyObject *name, PyObject *qualname, + PyObject *mkw, PyObject *modname, PyObject *doc); +static PyObject *__Pyx_Py3ClassCreate(PyObject *metaclass, PyObject *name, PyObject *bases, PyObject *dict, + PyObject *mkw, int calculate_metaclass, int allow_py2_metaclass); + +/* IncludeStringH.proto */ +#include + +/* BytesEquals.proto */ +static CYTHON_INLINE int __Pyx_PyBytes_Equals(PyObject* s1, PyObject* s2, int equals); + +/* UnicodeEquals.proto */ +static CYTHON_INLINE int __Pyx_PyUnicode_Equals(PyObject* s1, PyObject* s2, int equals); + +/* StrEquals.proto */ +#if PY_MAJOR_VERSION >= 3 +#define __Pyx_PyString_Equals __Pyx_PyUnicode_Equals +#else +#define __Pyx_PyString_Equals __Pyx_PyBytes_Equals +#endif + +/* PyThreadStateGet.proto */ +#if CYTHON_FAST_THREAD_STATE +#define __Pyx_PyThreadState_declare PyThreadState *__pyx_tstate; +#define __Pyx_PyThreadState_assign __pyx_tstate = PyThreadState_GET(); +#else +#define __Pyx_PyThreadState_declare +#define __Pyx_PyThreadState_assign +#endif + +/* SaveResetException.proto */ +#if CYTHON_FAST_THREAD_STATE +#define __Pyx_ExceptionSave(type, value, tb) __Pyx__ExceptionSave(__pyx_tstate, type, value, tb) +static CYTHON_INLINE void __Pyx__ExceptionSave(PyThreadState *tstate, PyObject **type, PyObject **value, PyObject **tb); +#define __Pyx_ExceptionReset(type, value, tb) __Pyx__ExceptionReset(__pyx_tstate, type, value, tb) +static CYTHON_INLINE void __Pyx__ExceptionReset(PyThreadState *tstate, PyObject *type, PyObject *value, PyObject *tb); +#else +#define __Pyx_ExceptionSave(type, value, tb) PyErr_GetExcInfo(type, value, tb) +#define __Pyx_ExceptionReset(type, value, tb) PyErr_SetExcInfo(type, value, tb) +#endif + +/* PyErrExceptionMatches.proto */ +#if CYTHON_FAST_THREAD_STATE +#define __Pyx_PyErr_ExceptionMatches(err) __Pyx_PyErr_ExceptionMatchesInState(__pyx_tstate, err) +static CYTHON_INLINE int __Pyx_PyErr_ExceptionMatchesInState(PyThreadState* tstate, PyObject* err); +#else +#define __Pyx_PyErr_ExceptionMatches(err) PyErr_ExceptionMatches(err) +#endif + +/* GetException.proto */ +#if CYTHON_FAST_THREAD_STATE +#define __Pyx_GetException(type, value, tb) __Pyx__GetException(__pyx_tstate, type, value, tb) +static int __Pyx__GetException(PyThreadState *tstate, PyObject **type, PyObject **value, PyObject **tb); +#else +static int __Pyx_GetException(PyObject **type, PyObject **value, PyObject **tb); +#endif + +/* CLineInTraceback.proto */ +static int __Pyx_CLineForTraceback(int c_line); + +/* CodeObjectCache.proto */ +typedef struct { + PyCodeObject* code_object; + int code_line; +} __Pyx_CodeObjectCacheEntry; +struct __Pyx_CodeObjectCache { + int count; + int max_count; + __Pyx_CodeObjectCacheEntry* entries; +}; +static struct __Pyx_CodeObjectCache __pyx_code_cache = {0,0,NULL}; +static int __pyx_bisect_code_objects(__Pyx_CodeObjectCacheEntry* entries, int count, int code_line); +static PyCodeObject *__pyx_find_code_object(int code_line); +static void __pyx_insert_code_object(int code_line, PyCodeObject* code_object); + +/* AddTraceback.proto */ +static void __Pyx_AddTraceback(const char *funcname, int c_line, + int py_line, const char *filename); + +/* Print.proto */ +static int __Pyx_Print(PyObject*, PyObject *, int); +#if CYTHON_COMPILING_IN_PYPY || PY_MAJOR_VERSION >= 3 +static PyObject* __pyx_print = 0; +static PyObject* __pyx_print_kwargs = 0; +#endif + +/* CIntToPy.proto */ +static CYTHON_INLINE PyObject* __Pyx_PyInt_From_long(long value); + +/* CIntToPy.proto */ +static CYTHON_INLINE PyObject* __Pyx_PyInt_From_int(int value); + +/* ToPyCTupleUtility.proto */ +static PyObject* __pyx_convert__to_py___pyx_ctuple_long__and_long__and_long(__pyx_ctuple_long__and_long__and_long); + +/* CIntFromPy.proto */ +static CYTHON_INLINE int __Pyx_PyInt_As_int(PyObject *); + +/* PrintOne.proto */ +static int __Pyx_PrintOne(PyObject* stream, PyObject *o); + +/* CIntFromPy.proto */ +static CYTHON_INLINE long __Pyx_PyInt_As_long(PyObject *); + +/* CheckBinaryVersion.proto */ +static int __Pyx_check_binary_version(void); + +/* InitStrings.proto */ +static int __Pyx_InitStrings(__Pyx_StringTabEntry *t); + + +/* Module declarations from 'CAStar.AATC_Monitor_Viewer' */ +static int __pyx_f_6CAStar_19AATC_Monitor_Viewer_MaxLimit(int, int); /*proto*/ +#define __Pyx_MODULE_NAME "CAStar.AATC_Monitor_Viewer" +int __pyx_module_is_main_CAStar__AATC_Monitor_Viewer = 0; + +/* Implementation of 'CAStar.AATC_Monitor_Viewer' */ +static PyObject *__pyx_builtin_input; +static const char __pyx_k_B[] = " B:"; +static const char __pyx_k_D[] = "D:"; +static const char __pyx_k_F[] = "F:"; +static const char __pyx_k_L[] = " L:"; +static const char __pyx_k_M[] = "M"; +static const char __pyx_k_N[] = " N:"; +static const char __pyx_k_U[] = " U:"; +static const char __pyx_k_W[] = " W:"; +static const char __pyx_k_Y[] = "Y"; +static const char __pyx_k_Z[] = "Z:"; +static const char __pyx_k_e[] = "e"; +static const char __pyx_k_x[] = "x"; +static const char __pyx_k_y[] = "y"; +static const char __pyx_k_AA[] = "AA"; +static const char __pyx_k_IP[] = "IP"; +static const char __pyx_k_ST[] = "ST:"; +static const char __pyx_k__2[] = ""; +static const char __pyx_k__6[] = " "; +static const char __pyx_k_D_2[] = " D:"; +static const char __pyx_k_ETA[] = "ETA"; +static const char __pyx_k_FPS[] = "FPS:"; +static const char __pyx_k_K_a[] = "K_a"; +static const char __pyx_k_K_d[] = "K_d"; +static const char __pyx_k_K_e[] = "K_e"; +static const char __pyx_k_K_q[] = "K_q"; +static const char __pyx_k_K_s[] = "K_s"; +static const char __pyx_k_K_w[] = "K_w"; +static const char __pyx_k_N_2[] = "N"; +static const char __pyx_k_ast[] = "ast"; +static const char __pyx_k_doc[] = "__doc__"; +static const char __pyx_k_end[] = "end"; +static const char __pyx_k_get[] = "get"; +static const char __pyx_k_key[] = "key"; +static const char __pyx_k_pop[] = "pop"; +static const char __pyx_k_sys[] = "sys"; +static const char __pyx_k_Draw[] = "Draw"; +static const char __pyx_k_Exit[] = "Exit"; +static const char __pyx_k_Font[] = "Font"; +static const char __pyx_k_Port[] = "Port"; +static const char __pyx_k_PosX[] = "PosX"; +static const char __pyx_k_PosY[] = "PosY"; +static const char __pyx_k_QUIT[] = "QUIT"; +static const char __pyx_k_Size[] = "Size"; +static const char __pyx_k_Text[] = "Text"; +static const char __pyx_k_Type[] = "Type"; +static const char __pyx_k_Zini[] = "Zini"; +static const char __pyx_k_Zone[] = "Zone"; +static const char __pyx_k_Zoom[] = "Zoom"; +static const char __pyx_k_blit[] = "blit"; +static const char __pyx_k_copy[] = "copy"; +static const char __pyx_k_exit[] = "exit"; +static const char __pyx_k_file[] = "file"; +static const char __pyx_k_fill[] = "fill"; +static const char __pyx_k_flip[] = "flip"; +static const char __pyx_k_font[] = "font"; +static const char __pyx_k_init[] = "init"; +static const char __pyx_k_keys[] = "keys"; +static const char __pyx_k_main[] = "__main__"; +static const char __pyx_k_quit[] = "quit"; +static const char __pyx_k_self[] = "self"; +static const char __pyx_k_test[] = "__test__"; +static const char __pyx_k_text[] = "text"; +static const char __pyx_k_tick[] = "tick"; +static const char __pyx_k_time[] = "time"; +static const char __pyx_k_type[] = "type"; +static const char __pyx_k_Clock[] = "Clock"; +static const char __pyx_k_Coord[] = "Coord"; +static const char __pyx_k_Drone[] = "Drone"; +static const char __pyx_k_ETA_2[] = "ETA:"; +static const char __pyx_k_Get_X[] = "Get_X"; +static const char __pyx_k_Get_Y[] = "Get_Y"; +static const char __pyx_k_Get_Z[] = "Get_Z"; +static const char __pyx_k_Level[] = "Level"; +static const char __pyx_k_Login[] = "Login"; +static const char __pyx_k_Set_X[] = "Set_X"; +static const char __pyx_k_Set_Y[] = "Set_Y"; +static const char __pyx_k_clock[] = "clock"; +static const char __pyx_k_event[] = "event"; +static const char __pyx_k_fonts[] = "_fonts"; +static const char __pyx_k_image[] = "image"; +static const char __pyx_k_index[] = "index"; +static const char __pyx_k_input[] = "input"; +static const char __pyx_k_print[] = "print"; +static const char __pyx_k_texts[] = "_texts"; +static const char __pyx_k_upper[] = "upper"; +static const char __pyx_k_width[] = "width"; +static const char __pyx_k_xSize[] = "xSize"; +static const char __pyx_k_ySize[] = "ySize"; +static const char __pyx_k_Amount[] = "Amount"; +static const char __pyx_k_Camera[] = "Camera"; +static const char __pyx_k_Colour[] = "Colour"; +static const char __pyx_k_Coords[] = "Coords"; +static const char __pyx_k_Flight[] = "Flight"; +static const char __pyx_k_Object[] = "Object"; +static const char __pyx_k_Sprite[] = "Sprite"; +static const char __pyx_k_Sucess[] = "Sucess"; +static const char __pyx_k_UserID[] = "UserID"; +static const char __pyx_k_ZoneID[] = "ZoneID"; +static const char __pyx_k_append[] = "append"; +static const char __pyx_k_height[] = "height"; +static const char __pyx_k_images[] = "_images"; +static const char __pyx_k_import[] = "__import__"; +static const char __pyx_k_init_2[] = "__init__"; +static const char __pyx_k_module[] = "__module__"; +static const char __pyx_k_pygame[] = "pygame"; +static const char __pyx_k_random[] = "random"; +static const char __pyx_k_render[] = "render"; +static const char __pyx_k_result[] = "result"; +static const char __pyx_k_sample[] = "sample"; +static const char __pyx_k_sprite[] = "sprite"; +static const char __pyx_k_xpixel[] = "xpixel"; +static const char __pyx_k_ypixel[] = "ypixel"; +static const char __pyx_k_CameraX[] = "CameraX"; +static const char __pyx_k_CameraY[] = "CameraY"; +static const char __pyx_k_Columns[] = "Columns"; +static const char __pyx_k_DroneID[] = "DroneID"; +static const char __pyx_k_EndTime[] = "EndTime"; +static const char __pyx_k_GetFont[] = "GetFont"; +static const char __pyx_k_GetText[] = "GetText"; +static const char __pyx_k_GetZoom[] = "GetZoom"; +static const char __pyx_k_KEYDOWN[] = "KEYDOWN"; +static const char __pyx_k_K_SPACE[] = "K_SPACE"; +static const char __pyx_k_Message[] = "Message"; +static const char __pyx_k_SetZoom[] = "SetZoom"; +static const char __pyx_k_Sprites[] = "Sprites"; +static const char __pyx_k_Surface[] = "Surface"; +static const char __pyx_k_convert[] = "convert"; +static const char __pyx_k_display[] = "display"; +static const char __pyx_k_get_fps[] = "get_fps"; +static const char __pyx_k_prepare[] = "__prepare__"; +static const char __pyx_k_pressed[] = "pressed"; +static const char __pyx_k_refresh[] = "refresh"; +static const char __pyx_k_Distance[] = "Distance"; +static const char __pyx_k_ETAIndex[] = "ETAIndex"; +static const char __pyx_k_EndCoord[] = "EndCoord"; +static const char __pyx_k_EndPoint[] = "EndPoint"; +static const char __pyx_k_Exit_Y_N[] = "Exit? Y/N"; +static const char __pyx_k_FlightID[] = "FlightID"; +static const char __pyx_k_GetImage[] = "GetImage"; +static const char __pyx_k_Waypoint[] = "Waypoint"; +static const char __pyx_k_ZoneList[] = "ZoneList"; +static const char __pyx_k_get_size[] = "get_size"; +static const char __pyx_k_qualname[] = "__qualname__"; +static const char __pyx_k_set_mode[] = "set_mode"; +static const char __pyx_k_127_0_0_1[] = "127.0.0.1"; +static const char __pyx_k_DroneList[] = "DroneList"; +static const char __pyx_k_DroneName[] = "DroneName"; +static const char __pyx_k_DronesAll[] = "DronesAll"; +static const char __pyx_k_EndCoords[] = "EndCoords"; +static const char __pyx_k_ForceDraw[] = "ForceDraw"; +static const char __pyx_k_Get_Coord[] = "Get_Coord"; +static const char __pyx_k_Get_XSize[] = "Get_XSize"; +static const char __pyx_k_Get_YSize[] = "Get_YSize"; +static const char __pyx_k_Make_Text[] = "Make_Text"; +static const char __pyx_k_MaxCoords[] = "MaxCoords"; +static const char __pyx_k_MinCoords[] = "MinCoords"; +static const char __pyx_k_MonCamera[] = "MonCamera"; +static const char __pyx_k_NoFlyZone[] = "NoFlyZone"; +static const char __pyx_k_Set_XSize[] = "Set_XSize"; +static const char __pyx_k_Set_YSize[] = "Set_YSize"; +static const char __pyx_k_StartTime[] = "StartTime"; +static const char __pyx_k_font_size[] = "font_size"; +static const char __pyx_k_metaclass[] = "__metaclass__"; +static const char __pyx_k_CameraEndX[] = "CameraEndX"; +static const char __pyx_k_CameraEndY[] = "CameraEndY"; +static const char __pyx_k_CameraWipe[] = "CameraWipe"; +static const char __pyx_k_CameraZoom[] = "CameraZoom"; +static const char __pyx_k_CoordIndex[] = "CoordIndex"; +static const char __pyx_k_Coordinate[] = "Coordinate"; +static const char __pyx_k_DrawObject[] = "DrawObject"; +static const char __pyx_k_FlightList[] = "FlightList"; +static const char __pyx_k_FlightsAll[] = "FlightsAll"; +static const char __pyx_k_Get_Coords[] = "Get_Coords"; +static const char __pyx_k_LastCoords[] = "LastCoords"; +static const char __pyx_k_LevelIndex[] = "LevelIndex"; +static const char __pyx_k_Make_Image[] = "Make_Image"; +static const char __pyx_k_NoFlyZones[] = "NoFlyZones"; +static const char __pyx_k_SpriteList[] = "SpriteList"; +static const char __pyx_k_StartCoord[] = "StartCoord"; +static const char __pyx_k_StartPoint[] = "StartPoint"; +static const char __pyx_k_CameraCoord[] = "CameraCoord"; +static const char __pyx_k_CameraXSize[] = "CameraXSize"; +static const char __pyx_k_CameraYSize[] = "CameraYSize"; +static const char __pyx_k_Camera_Draw[] = "Camera.Draw"; +static const char __pyx_k_CoordObject[] = "CoordObject"; +static const char __pyx_k_DrawObjects[] = "DrawObjects"; +static const char __pyx_k_LastBattery[] = "LastBattery"; +static const char __pyx_k_MakeSprites[] = "MakeSprites"; +static const char __pyx_k_RawZoneList[] = "RawZoneList"; +static const char __pyx_k_StartCoords[] = "StartCoords"; +static const char __pyx_k_UserIDIndex[] = "UserIDIndex"; +static const char __pyx_k_ZoneIDIndex[] = "ZoneIDIndex"; +static const char __pyx_k_gameDisplay[] = "gameDisplay"; +static const char __pyx_k_get_pressed[] = "get_pressed"; +static const char __pyx_k_AATC_Monitor[] = "AATC_Monitor"; +static const char __pyx_k_BatteryIndex[] = "BatteryIndex"; +static const char __pyx_k_DroneIDIndex[] = "DroneIDIndex"; +static const char __pyx_k_EndTimeIndex[] = "EndTimeIndex"; +static const char __pyx_k_GetDronesAll[] = "GetDronesAll"; +static const char __pyx_k_RawDroneList[] = "RawDroneList"; +static const char __pyx_k_WaypointList[] = "WaypointList"; +static const char __pyx_k_WaypointsAll[] = "WaypointsAll"; +static const char __pyx_k_literal_eval[] = "literal_eval"; +static const char __pyx_k_AddDrawObject[] = "AddDrawObject"; +static const char __pyx_k_Camera___init[] = "Camera.__init__"; +static const char __pyx_k_DistanceIndex[] = "DistanceIndex"; +static const char __pyx_k_DronesMonitor[] = "DronesMonitor"; +static const char __pyx_k_EndCoordIndex[] = "EndCoordIndex"; +static const char __pyx_k_FlightIDIndex[] = "FlightIDIndex"; +static const char __pyx_k_GetFlightsAll[] = "GetFlightsAll"; +static const char __pyx_k_GetNoFlyZones[] = "GetNoFlyZones"; +static const char __pyx_k_Object_Coords[] = "Object_Coords"; +static const char __pyx_k_RawFlightList[] = "RawFlightList"; +static const char __pyx_k_Refresh_Delay[] = "Refresh_Delay"; +static const char __pyx_k_Camera_GetZoom[] = "Camera.GetZoom"; +static const char __pyx_k_Camera_SetZoom[] = "Camera.SetZoom"; +static const char __pyx_k_Camera_details[] = "Camera details"; +static const char __pyx_k_DroneNameIndex[] = "DroneNameIndex"; +static const char __pyx_k_EndCoordsIndex[] = "EndCoordsIndex"; +static const char __pyx_k_FlightsMonitor[] = "FlightsMonitor"; +static const char __pyx_k_Monitor_Sprite[] = "Monitor_Sprite"; +static const char __pyx_k_Refreshed_data[] = "Refreshed data"; +static const char __pyx_k_StartTimeIndex[] = "StartTimeIndex"; +static const char __pyx_k_WaypointNumber[] = "WaypointNumber"; +static const char __pyx_k_fontParameters[] = "fontParameters"; +static const char __pyx_k_AATC_Coordinate[] = "AATC_Coordinate"; +static const char __pyx_k_GetCameraCoords[] = "GetCameraCoords"; +static const char __pyx_k_MOUSEBUTTONDOWN[] = "MOUSEBUTTONDOWN"; +static const char __pyx_k_MakeZoneSprites[] = "MakeZoneSprites"; +static const char __pyx_k_RawWaypointList[] = "RawWaypointList"; +static const char __pyx_k_Refreshing_data[] = "Refreshing data"; +static const char __pyx_k_ResetDrawObject[] = "ResetDrawObject"; +static const char __pyx_k_SetCameraCoords[] = "SetCameraCoords"; +static const char __pyx_k_StartCoordIndex[] = "StartCoordIndex"; +static const char __pyx_k_Camera_Get_Coord[] = "Camera.Get_Coord"; +static const char __pyx_k_GetMonitorDrones[] = "GetMonitorDrones"; +static const char __pyx_k_MakeDroneSprites[] = "MakeDroneSprites"; +static const char __pyx_k_StartCoordsIndex[] = "StartCoordsIndex"; +static const char __pyx_k_UpdateCameraSize[] = "UpdateCameraSize"; +static const char __pyx_k_WaypointsMonitor[] = "WaypointsMonitor"; +static const char __pyx_k_Camera_CameraWipe[] = "Camera.CameraWipe"; +static const char __pyx_k_GetMonitorFlights[] = "GetMonitorFlights"; +static const char __pyx_k_Last_Refresh_Time[] = "Last_Refresh_Time"; +static const char __pyx_k_MakeFlightSprites[] = "MakeFlightSprites"; +static const char __pyx_k_cline_in_traceback[] = "cline_in_traceback"; +static const char __pyx_k_MakeWaypointSprites[] = "MakeWaypointSprites"; +static const char __pyx_k_WaypointNumberIndex[] = "WaypointNumberIndex"; +static const char __pyx_k_Camera_AddDrawObject[] = "Camera.AddDrawObject"; +static const char __pyx_k_GetFlightWaypointsAll[] = "GetFlightWaypointsAll"; +static const char __pyx_k_IncrementCameraCoordX[] = "IncrementCameraCoordX"; +static const char __pyx_k_IncrementCameraCoordY[] = "IncrementCameraCoordY"; +static const char __pyx_k_Monitor_Sprite___init[] = "Monitor_Sprite.__init__"; +static const char __pyx_k_Camera_GetCameraCoords[] = "Camera.GetCameraCoords"; +static const char __pyx_k_Camera_ResetDrawObject[] = "Camera.ResetDrawObject"; +static const char __pyx_k_Camera_SetCameraCoords[] = "Camera.SetCameraCoords"; +static const char __pyx_k_CreateMonitorInterface[] = "CreateMonitorInterface"; +static const char __pyx_k_AATC_Monitor_Viewer_pyx[] = "AATC_Monitor_Viewer.pyx"; +static const char __pyx_k_Camera_UpdateCameraSize[] = "Camera.UpdateCameraSize"; +static const char __pyx_k_Monitor_exit_was_called[] = "Monitor exit was called"; +static const char __pyx_k_Monitor_Sprite_Make_Text[] = "Monitor_Sprite.Make_Text"; +static const char __pyx_k_GetMonitorFlightWaypoints[] = "GetMonitorFlightWaypoints"; +static const char __pyx_k_Monitor_Sprite_Get_Coords[] = "Monitor_Sprite.Get_Coords"; +static const char __pyx_k_Monitor_Sprite_Make_Image[] = "Monitor_Sprite.Make_Image"; +static const char __pyx_k_CAStar_AATC_Monitor_Viewer[] = "CAStar.AATC_Monitor_Viewer"; +static const char __pyx_k_Camera_IncrementCameraCoordX[] = "Camera.IncrementCameraCoordX"; +static const char __pyx_k_Camera_IncrementCameraCoordY[] = "Camera.IncrementCameraCoordY"; +static const char __pyx_k_An_error_occured_restarting_main[] = "An error occured, restarting main loop"; +static PyObject *__pyx_kp_s_127_0_0_1; +static PyObject *__pyx_n_s_AA; +static PyObject *__pyx_n_s_AATC_Coordinate; +static PyObject *__pyx_n_s_AATC_Monitor; +static PyObject *__pyx_kp_s_AATC_Monitor_Viewer_pyx; +static PyObject *__pyx_n_s_AddDrawObject; +static PyObject *__pyx_n_s_Amount; +static PyObject *__pyx_kp_s_An_error_occured_restarting_main; +static PyObject *__pyx_kp_s_B; +static PyObject *__pyx_n_s_BatteryIndex; +static PyObject *__pyx_n_s_CAStar_AATC_Monitor_Viewer; +static PyObject *__pyx_n_s_Camera; +static PyObject *__pyx_n_s_CameraCoord; +static PyObject *__pyx_n_s_CameraEndX; +static PyObject *__pyx_n_s_CameraEndY; +static PyObject *__pyx_n_s_CameraWipe; +static PyObject *__pyx_n_s_CameraX; +static PyObject *__pyx_n_s_CameraXSize; +static PyObject *__pyx_n_s_CameraY; +static PyObject *__pyx_n_s_CameraYSize; +static PyObject *__pyx_n_s_CameraZoom; +static PyObject *__pyx_n_s_Camera_AddDrawObject; +static PyObject *__pyx_n_s_Camera_CameraWipe; +static PyObject *__pyx_n_s_Camera_Draw; +static PyObject *__pyx_n_s_Camera_GetCameraCoords; +static PyObject *__pyx_n_s_Camera_GetZoom; +static PyObject *__pyx_n_s_Camera_Get_Coord; +static PyObject *__pyx_n_s_Camera_IncrementCameraCoordX; +static PyObject *__pyx_n_s_Camera_IncrementCameraCoordY; +static PyObject *__pyx_n_s_Camera_ResetDrawObject; +static PyObject *__pyx_n_s_Camera_SetCameraCoords; +static PyObject *__pyx_n_s_Camera_SetZoom; +static PyObject *__pyx_n_s_Camera_UpdateCameraSize; +static PyObject *__pyx_n_s_Camera___init; +static PyObject *__pyx_kp_s_Camera_details; +static PyObject *__pyx_n_s_Clock; +static PyObject *__pyx_n_s_Colour; +static PyObject *__pyx_n_s_Columns; +static PyObject *__pyx_n_s_Coord; +static PyObject *__pyx_n_s_CoordIndex; +static PyObject *__pyx_n_s_CoordObject; +static PyObject *__pyx_n_s_Coordinate; +static PyObject *__pyx_n_s_Coords; +static PyObject *__pyx_n_s_CreateMonitorInterface; +static PyObject *__pyx_kp_s_D; +static PyObject *__pyx_kp_s_D_2; +static PyObject *__pyx_n_s_Distance; +static PyObject *__pyx_n_s_DistanceIndex; +static PyObject *__pyx_n_s_Draw; +static PyObject *__pyx_n_s_DrawObject; +static PyObject *__pyx_n_s_DrawObjects; +static PyObject *__pyx_n_s_Drone; +static PyObject *__pyx_n_s_DroneID; +static PyObject *__pyx_n_s_DroneIDIndex; +static PyObject *__pyx_n_s_DroneList; +static PyObject *__pyx_n_s_DroneName; +static PyObject *__pyx_n_s_DroneNameIndex; +static PyObject *__pyx_n_s_DronesAll; +static PyObject *__pyx_n_s_DronesMonitor; +static PyObject *__pyx_n_s_ETA; +static PyObject *__pyx_n_s_ETAIndex; +static PyObject *__pyx_kp_s_ETA_2; +static PyObject *__pyx_n_s_EndCoord; +static PyObject *__pyx_n_s_EndCoordIndex; +static PyObject *__pyx_n_s_EndCoords; +static PyObject *__pyx_n_s_EndCoordsIndex; +static PyObject *__pyx_n_s_EndPoint; +static PyObject *__pyx_n_s_EndTime; +static PyObject *__pyx_n_s_EndTimeIndex; +static PyObject *__pyx_n_s_Exit; +static PyObject *__pyx_kp_s_Exit_Y_N; +static PyObject *__pyx_kp_s_F; +static PyObject *__pyx_kp_s_FPS; +static PyObject *__pyx_n_s_Flight; +static PyObject *__pyx_n_s_FlightID; +static PyObject *__pyx_n_s_FlightIDIndex; +static PyObject *__pyx_n_s_FlightList; +static PyObject *__pyx_n_s_FlightsAll; +static PyObject *__pyx_n_s_FlightsMonitor; +static PyObject *__pyx_n_s_Font; +static PyObject *__pyx_n_s_ForceDraw; +static PyObject *__pyx_n_s_GetCameraCoords; +static PyObject *__pyx_n_s_GetDronesAll; +static PyObject *__pyx_n_s_GetFlightWaypointsAll; +static PyObject *__pyx_n_s_GetFlightsAll; +static PyObject *__pyx_n_s_GetFont; +static PyObject *__pyx_n_s_GetImage; +static PyObject *__pyx_n_s_GetMonitorDrones; +static PyObject *__pyx_n_s_GetMonitorFlightWaypoints; +static PyObject *__pyx_n_s_GetMonitorFlights; +static PyObject *__pyx_n_s_GetNoFlyZones; +static PyObject *__pyx_n_s_GetText; +static PyObject *__pyx_n_s_GetZoom; +static PyObject *__pyx_n_s_Get_Coord; +static PyObject *__pyx_n_s_Get_Coords; +static PyObject *__pyx_n_s_Get_X; +static PyObject *__pyx_n_s_Get_XSize; +static PyObject *__pyx_n_s_Get_Y; +static PyObject *__pyx_n_s_Get_YSize; +static PyObject *__pyx_n_s_Get_Z; +static PyObject *__pyx_n_s_IP; +static PyObject *__pyx_n_s_IncrementCameraCoordX; +static PyObject *__pyx_n_s_IncrementCameraCoordY; +static PyObject *__pyx_n_s_KEYDOWN; +static PyObject *__pyx_n_s_K_SPACE; +static PyObject *__pyx_n_s_K_a; +static PyObject *__pyx_n_s_K_d; +static PyObject *__pyx_n_s_K_e; +static PyObject *__pyx_n_s_K_q; +static PyObject *__pyx_n_s_K_s; +static PyObject *__pyx_n_s_K_w; +static PyObject *__pyx_kp_s_L; +static PyObject *__pyx_n_s_LastBattery; +static PyObject *__pyx_n_s_LastCoords; +static PyObject *__pyx_n_s_Last_Refresh_Time; +static PyObject *__pyx_n_s_Level; +static PyObject *__pyx_n_s_LevelIndex; +static PyObject *__pyx_n_s_Login; +static PyObject *__pyx_n_s_M; +static PyObject *__pyx_n_s_MOUSEBUTTONDOWN; +static PyObject *__pyx_n_s_MakeDroneSprites; +static PyObject *__pyx_n_s_MakeFlightSprites; +static PyObject *__pyx_n_s_MakeSprites; +static PyObject *__pyx_n_s_MakeWaypointSprites; +static PyObject *__pyx_n_s_MakeZoneSprites; +static PyObject *__pyx_n_s_Make_Image; +static PyObject *__pyx_n_s_Make_Text; +static PyObject *__pyx_n_s_MaxCoords; +static PyObject *__pyx_n_s_Message; +static PyObject *__pyx_n_s_MinCoords; +static PyObject *__pyx_n_s_MonCamera; +static PyObject *__pyx_n_s_Monitor_Sprite; +static PyObject *__pyx_n_s_Monitor_Sprite_Get_Coords; +static PyObject *__pyx_n_s_Monitor_Sprite_Make_Image; +static PyObject *__pyx_n_s_Monitor_Sprite_Make_Text; +static PyObject *__pyx_n_s_Monitor_Sprite___init; +static PyObject *__pyx_kp_s_Monitor_exit_was_called; +static PyObject *__pyx_kp_s_N; +static PyObject *__pyx_n_s_N_2; +static PyObject *__pyx_n_s_NoFlyZone; +static PyObject *__pyx_n_s_NoFlyZones; +static PyObject *__pyx_n_s_Object; +static PyObject *__pyx_n_s_Object_Coords; +static PyObject *__pyx_n_s_Port; +static PyObject *__pyx_n_s_PosX; +static PyObject *__pyx_n_s_PosY; +static PyObject *__pyx_n_s_QUIT; +static PyObject *__pyx_n_s_RawDroneList; +static PyObject *__pyx_n_s_RawFlightList; +static PyObject *__pyx_n_s_RawWaypointList; +static PyObject *__pyx_n_s_RawZoneList; +static PyObject *__pyx_n_s_Refresh_Delay; +static PyObject *__pyx_kp_s_Refreshed_data; +static PyObject *__pyx_kp_s_Refreshing_data; +static PyObject *__pyx_n_s_ResetDrawObject; +static PyObject *__pyx_kp_s_ST; +static PyObject *__pyx_n_s_SetCameraCoords; +static PyObject *__pyx_n_s_SetZoom; +static PyObject *__pyx_n_s_Set_X; +static PyObject *__pyx_n_s_Set_XSize; +static PyObject *__pyx_n_s_Set_Y; +static PyObject *__pyx_n_s_Set_YSize; +static PyObject *__pyx_n_s_Size; +static PyObject *__pyx_n_s_Sprite; +static PyObject *__pyx_n_s_SpriteList; +static PyObject *__pyx_n_s_Sprites; +static PyObject *__pyx_n_s_StartCoord; +static PyObject *__pyx_n_s_StartCoordIndex; +static PyObject *__pyx_n_s_StartCoords; +static PyObject *__pyx_n_s_StartCoordsIndex; +static PyObject *__pyx_n_s_StartPoint; +static PyObject *__pyx_n_s_StartTime; +static PyObject *__pyx_n_s_StartTimeIndex; +static PyObject *__pyx_n_s_Sucess; +static PyObject *__pyx_n_s_Surface; +static PyObject *__pyx_n_s_Text; +static PyObject *__pyx_n_s_Type; +static PyObject *__pyx_kp_s_U; +static PyObject *__pyx_n_s_UpdateCameraSize; +static PyObject *__pyx_n_s_UserID; +static PyObject *__pyx_n_s_UserIDIndex; +static PyObject *__pyx_kp_s_W; +static PyObject *__pyx_n_s_Waypoint; +static PyObject *__pyx_n_s_WaypointList; +static PyObject *__pyx_n_s_WaypointNumber; +static PyObject *__pyx_n_s_WaypointNumberIndex; +static PyObject *__pyx_n_s_WaypointsAll; +static PyObject *__pyx_n_s_WaypointsMonitor; +static PyObject *__pyx_n_s_Y; +static PyObject *__pyx_kp_s_Z; +static PyObject *__pyx_n_s_Zini; +static PyObject *__pyx_n_s_Zone; +static PyObject *__pyx_n_s_ZoneID; +static PyObject *__pyx_n_s_ZoneIDIndex; +static PyObject *__pyx_n_s_ZoneList; +static PyObject *__pyx_n_s_Zoom; +static PyObject *__pyx_kp_s__2; +static PyObject *__pyx_kp_s__6; +static PyObject *__pyx_n_s_append; +static PyObject *__pyx_n_s_ast; +static PyObject *__pyx_n_s_blit; +static PyObject *__pyx_n_s_cline_in_traceback; +static PyObject *__pyx_n_s_clock; +static PyObject *__pyx_n_s_convert; +static PyObject *__pyx_n_s_copy; +static PyObject *__pyx_n_s_display; +static PyObject *__pyx_n_s_doc; +static PyObject *__pyx_n_s_e; +static PyObject *__pyx_n_s_end; +static PyObject *__pyx_n_s_event; +static PyObject *__pyx_n_s_exit; +static PyObject *__pyx_n_s_file; +static PyObject *__pyx_n_s_fill; +static PyObject *__pyx_n_s_flip; +static PyObject *__pyx_n_s_font; +static PyObject *__pyx_n_s_fontParameters; +static PyObject *__pyx_n_s_font_size; +static PyObject *__pyx_n_s_fonts; +static PyObject *__pyx_n_s_gameDisplay; +static PyObject *__pyx_n_s_get; +static PyObject *__pyx_n_s_get_fps; +static PyObject *__pyx_n_s_get_pressed; +static PyObject *__pyx_n_s_get_size; +static PyObject *__pyx_n_s_height; +static PyObject *__pyx_n_s_image; +static PyObject *__pyx_n_s_images; +static PyObject *__pyx_n_s_import; +static PyObject *__pyx_n_s_index; +static PyObject *__pyx_n_s_init; +static PyObject *__pyx_n_s_init_2; +static PyObject *__pyx_n_s_input; +static PyObject *__pyx_n_s_key; +static PyObject *__pyx_n_s_keys; +static PyObject *__pyx_n_s_literal_eval; +static PyObject *__pyx_n_s_main; +static PyObject *__pyx_n_s_metaclass; +static PyObject *__pyx_n_s_module; +static PyObject *__pyx_n_s_pop; +static PyObject *__pyx_n_s_prepare; +static PyObject *__pyx_n_s_pressed; +static PyObject *__pyx_n_s_print; +static PyObject *__pyx_n_s_pygame; +static PyObject *__pyx_n_s_qualname; +static PyObject *__pyx_n_s_quit; +static PyObject *__pyx_n_s_random; +static PyObject *__pyx_n_s_refresh; +static PyObject *__pyx_n_s_render; +static PyObject *__pyx_n_s_result; +static PyObject *__pyx_n_s_sample; +static PyObject *__pyx_n_s_self; +static PyObject *__pyx_n_s_set_mode; +static PyObject *__pyx_n_s_sprite; +static PyObject *__pyx_n_s_sys; +static PyObject *__pyx_n_s_test; +static PyObject *__pyx_n_s_text; +static PyObject *__pyx_n_s_texts; +static PyObject *__pyx_n_s_tick; +static PyObject *__pyx_n_s_time; +static PyObject *__pyx_n_s_type; +static PyObject *__pyx_n_s_upper; +static PyObject *__pyx_n_s_width; +static PyObject *__pyx_n_s_x; +static PyObject *__pyx_n_s_xSize; +static PyObject *__pyx_n_s_xpixel; +static PyObject *__pyx_n_s_y; +static PyObject *__pyx_n_s_ySize; +static PyObject *__pyx_n_s_ypixel; +static PyObject *__pyx_pf_6CAStar_19AATC_Monitor_Viewer_GetImage(CYTHON_UNUSED PyObject *__pyx_self, PyObject *__pyx_v_xSize, PyObject *__pyx_v_ySize, PyObject *__pyx_v_Colour); /* proto */ +static PyObject *__pyx_pf_6CAStar_19AATC_Monitor_Viewer_2GetText(CYTHON_UNUSED PyObject *__pyx_self, PyObject *__pyx_v_Text, PyObject *__pyx_v_fontParameters, PyObject *__pyx_v_AA, PyObject *__pyx_v_Colour); /* proto */ +static PyObject *__pyx_pf_6CAStar_19AATC_Monitor_Viewer_4GetFont(CYTHON_UNUSED PyObject *__pyx_self, PyObject *__pyx_v_Font, PyObject *__pyx_v_Size); /* proto */ +static PyObject *__pyx_pf_6CAStar_19AATC_Monitor_Viewer_6Camera___init__(CYTHON_UNUSED PyObject *__pyx_self, PyObject *__pyx_v_self, PyObject *__pyx_v_xpixel, PyObject *__pyx_v_ypixel, PyObject *__pyx_v_MinCoords, PyObject *__pyx_v_MaxCoords); /* proto */ +static PyObject *__pyx_pf_6CAStar_19AATC_Monitor_Viewer_6Camera_2GetZoom(CYTHON_UNUSED PyObject *__pyx_self, PyObject *__pyx_v_self); /* proto */ +static PyObject *__pyx_pf_6CAStar_19AATC_Monitor_Viewer_6Camera_4SetZoom(CYTHON_UNUSED PyObject *__pyx_self, PyObject *__pyx_v_self, PyObject *__pyx_v_Zoom); /* proto */ +static PyObject *__pyx_pf_6CAStar_19AATC_Monitor_Viewer_6Camera_6GetCameraCoords(CYTHON_UNUSED PyObject *__pyx_self, PyObject *__pyx_v_self); /* proto */ +static PyObject *__pyx_pf_6CAStar_19AATC_Monitor_Viewer_6Camera_8IncrementCameraCoordX(CYTHON_UNUSED PyObject *__pyx_self, PyObject *__pyx_v_self, PyObject *__pyx_v_Amount); /* proto */ +static PyObject *__pyx_pf_6CAStar_19AATC_Monitor_Viewer_6Camera_10IncrementCameraCoordY(CYTHON_UNUSED PyObject *__pyx_self, PyObject *__pyx_v_self, PyObject *__pyx_v_Amount); /* proto */ +static PyObject *__pyx_pf_6CAStar_19AATC_Monitor_Viewer_6Camera_12SetCameraCoords(CYTHON_UNUSED PyObject *__pyx_self, PyObject *__pyx_v_self, PyObject *__pyx_v_CameraX, PyObject *__pyx_v_CameraY); /* proto */ +static PyObject *__pyx_pf_6CAStar_19AATC_Monitor_Viewer_6Camera_14UpdateCameraSize(CYTHON_UNUSED PyObject *__pyx_self, PyObject *__pyx_v_self); /* proto */ +static PyObject *__pyx_pf_6CAStar_19AATC_Monitor_Viewer_6Camera_16CameraWipe(CYTHON_UNUSED PyObject *__pyx_self, PyObject *__pyx_v_self, PyObject *__pyx_v_Colour); /* proto */ +static PyObject *__pyx_pf_6CAStar_19AATC_Monitor_Viewer_6Camera_18ResetDrawObject(CYTHON_UNUSED PyObject *__pyx_self, PyObject *__pyx_v_self); /* proto */ +static PyObject *__pyx_pf_6CAStar_19AATC_Monitor_Viewer_6Camera_20AddDrawObject(CYTHON_UNUSED PyObject *__pyx_self, PyObject *__pyx_v_self, PyObject *__pyx_v_Object, PyObject *__pyx_v_ForceDraw); /* proto */ +static PyObject *__pyx_pf_6CAStar_19AATC_Monitor_Viewer_6Camera_22Get_Coord(CYTHON_UNUSED PyObject *__pyx_self, PyObject *__pyx_v_self); /* proto */ +static PyObject *__pyx_pf_6CAStar_19AATC_Monitor_Viewer_6Camera_24Draw(CYTHON_UNUSED PyObject *__pyx_self, PyObject *__pyx_v_self); /* proto */ +static PyObject *__pyx_pf_6CAStar_19AATC_Monitor_Viewer_14Monitor_Sprite___init__(CYTHON_UNUSED PyObject *__pyx_self, PyObject *__pyx_v_self, PyObject *__pyx_v_CoordObject, PyObject *__pyx_v_Type, PyObject *__pyx_v_Text, PyObject *__pyx_v_Colour); /* proto */ +static PyObject *__pyx_pf_6CAStar_19AATC_Monitor_Viewer_14Monitor_Sprite_2Make_Image(CYTHON_UNUSED PyObject *__pyx_self, PyObject *__pyx_v_self, int __pyx_v_width, int __pyx_v_height); /* proto */ +static PyObject *__pyx_pf_6CAStar_19AATC_Monitor_Viewer_14Monitor_Sprite_4Make_Text(CYTHON_UNUSED PyObject *__pyx_self, PyObject *__pyx_v_self, PyObject *__pyx_v_font); /* proto */ +static PyObject *__pyx_pf_6CAStar_19AATC_Monitor_Viewer_14Monitor_Sprite_6Get_Coords(CYTHON_UNUSED PyObject *__pyx_self, PyObject *__pyx_v_self); /* proto */ +static PyObject *__pyx_pf_6CAStar_19AATC_Monitor_Viewer_6MakeDroneSprites(CYTHON_UNUSED PyObject *__pyx_self, PyObject *__pyx_v_Message, PyObject *__pyx_v_RawDroneList); /* proto */ +static PyObject *__pyx_pf_6CAStar_19AATC_Monitor_Viewer_8MakeFlightSprites(CYTHON_UNUSED PyObject *__pyx_self, PyObject *__pyx_v_Message, PyObject *__pyx_v_RawFlightList); /* proto */ +static PyObject *__pyx_pf_6CAStar_19AATC_Monitor_Viewer_10MakeWaypointSprites(CYTHON_UNUSED PyObject *__pyx_self, PyObject *__pyx_v_Message, PyObject *__pyx_v_RawWaypointList); /* proto */ +static PyObject *__pyx_pf_6CAStar_19AATC_Monitor_Viewer_12MakeZoneSprites(CYTHON_UNUSED PyObject *__pyx_self, PyObject *__pyx_v_Message, PyObject *__pyx_v_RawZoneList); /* proto */ +static PyObject *__pyx_pf_6CAStar_19AATC_Monitor_Viewer_14MakeSprites(CYTHON_UNUSED PyObject *__pyx_self, PyObject *__pyx_v_M); /* proto */ +static PyObject *__pyx_float_0_01; +static PyObject *__pyx_float_0_99; +static PyObject *__pyx_float_1_01; +static PyObject *__pyx_float_0_001; +static PyObject *__pyx_float_0_0001; +static PyObject *__pyx_float_0_00001; +static PyObject *__pyx_float_neg_0_01; +static PyObject *__pyx_int_0; +static PyObject *__pyx_int_1; +static PyObject *__pyx_int_50; +static PyObject *__pyx_int_60; +static PyObject *__pyx_int_255; +static PyObject *__pyx_int_700; +static PyObject *__pyx_int_1200; +static PyObject *__pyx_int_8001; +static PyObject *__pyx_tuple_; +static PyObject *__pyx_tuple__3; +static PyObject *__pyx_tuple__4; +static PyObject *__pyx_tuple__5; +static PyObject *__pyx_tuple__7; +static PyObject *__pyx_tuple__8; +static PyObject *__pyx_tuple__9; +static PyObject *__pyx_tuple__10; +static PyObject *__pyx_tuple__11; +static PyObject *__pyx_tuple__12; +static PyObject *__pyx_tuple__13; +static PyObject *__pyx_tuple__14; +static PyObject *__pyx_tuple__15; +static PyObject *__pyx_tuple__16; +static PyObject *__pyx_tuple__17; +static PyObject *__pyx_tuple__18; +static PyObject *__pyx_tuple__19; +static PyObject *__pyx_tuple__20; +static PyObject *__pyx_tuple__21; +static PyObject *__pyx_tuple__22; +static PyObject *__pyx_tuple__23; +static PyObject *__pyx_tuple__24; +static PyObject *__pyx_tuple__25; +static PyObject *__pyx_tuple__26; +static PyObject *__pyx_tuple__27; +static PyObject *__pyx_tuple__29; +static PyObject *__pyx_tuple__31; +static PyObject *__pyx_tuple__33; +static PyObject *__pyx_tuple__35; +static PyObject *__pyx_tuple__37; +static PyObject *__pyx_tuple__39; +static PyObject *__pyx_tuple__41; +static PyObject *__pyx_tuple__43; +static PyObject *__pyx_tuple__45; +static PyObject *__pyx_tuple__47; +static PyObject *__pyx_tuple__49; +static PyObject *__pyx_tuple__51; +static PyObject *__pyx_tuple__52; +static PyObject *__pyx_tuple__54; +static PyObject *__pyx_tuple__56; +static PyObject *__pyx_tuple__58; +static PyObject *__pyx_tuple__60; +static PyObject *__pyx_tuple__62; +static PyObject *__pyx_tuple__63; +static PyObject *__pyx_tuple__65; +static PyObject *__pyx_tuple__67; +static PyObject *__pyx_tuple__69; +static PyObject *__pyx_tuple__71; +static PyObject *__pyx_tuple__73; +static PyObject *__pyx_tuple__75; +static PyObject *__pyx_tuple__77; +static PyObject *__pyx_tuple__79; +static PyObject *__pyx_tuple__80; +static PyObject *__pyx_tuple__81; +static PyObject *__pyx_tuple__82; +static PyObject *__pyx_tuple__83; +static PyObject *__pyx_codeobj__28; +static PyObject *__pyx_codeobj__30; +static PyObject *__pyx_codeobj__32; +static PyObject *__pyx_codeobj__34; +static PyObject *__pyx_codeobj__36; +static PyObject *__pyx_codeobj__38; +static PyObject *__pyx_codeobj__40; +static PyObject *__pyx_codeobj__42; +static PyObject *__pyx_codeobj__44; +static PyObject *__pyx_codeobj__46; +static PyObject *__pyx_codeobj__48; +static PyObject *__pyx_codeobj__50; +static PyObject *__pyx_codeobj__53; +static PyObject *__pyx_codeobj__55; +static PyObject *__pyx_codeobj__57; +static PyObject *__pyx_codeobj__59; +static PyObject *__pyx_codeobj__61; +static PyObject *__pyx_codeobj__64; +static PyObject *__pyx_codeobj__66; +static PyObject *__pyx_codeobj__68; +static PyObject *__pyx_codeobj__70; +static PyObject *__pyx_codeobj__72; +static PyObject *__pyx_codeobj__74; +static PyObject *__pyx_codeobj__76; +static PyObject *__pyx_codeobj__78; + +/* "CAStar/AATC_Monitor_Viewer.pyx":9 + * + * _images= {} + * def GetImage(xSize,ySize,Colour): #Efficiently get images # <<<<<<<<<<<<<< + * result = _images.get((xSize,ySize,Colour)) + * if result == None: + */ + +/* Python wrapper */ +static PyObject *__pyx_pw_6CAStar_19AATC_Monitor_Viewer_1GetImage(PyObject *__pyx_self, PyObject *__pyx_args, PyObject *__pyx_kwds); /*proto*/ +static PyMethodDef __pyx_mdef_6CAStar_19AATC_Monitor_Viewer_1GetImage = {"GetImage", (PyCFunction)__pyx_pw_6CAStar_19AATC_Monitor_Viewer_1GetImage, METH_VARARGS|METH_KEYWORDS, 0}; +static PyObject *__pyx_pw_6CAStar_19AATC_Monitor_Viewer_1GetImage(PyObject *__pyx_self, PyObject *__pyx_args, PyObject *__pyx_kwds) { + PyObject *__pyx_v_xSize = 0; + PyObject *__pyx_v_ySize = 0; + PyObject *__pyx_v_Colour = 0; + PyObject *__pyx_r = 0; + __Pyx_RefNannyDeclarations + __Pyx_RefNannySetupContext("GetImage (wrapper)", 0); + { + static PyObject **__pyx_pyargnames[] = {&__pyx_n_s_xSize,&__pyx_n_s_ySize,&__pyx_n_s_Colour,0}; + PyObject* values[3] = {0,0,0}; + if (unlikely(__pyx_kwds)) { + Py_ssize_t kw_args; + const Py_ssize_t pos_args = PyTuple_GET_SIZE(__pyx_args); + switch (pos_args) { + case 3: values[2] = PyTuple_GET_ITEM(__pyx_args, 2); + CYTHON_FALLTHROUGH; + case 2: values[1] = PyTuple_GET_ITEM(__pyx_args, 1); + CYTHON_FALLTHROUGH; + case 1: values[0] = PyTuple_GET_ITEM(__pyx_args, 0); + CYTHON_FALLTHROUGH; + case 0: break; + default: goto __pyx_L5_argtuple_error; + } + kw_args = PyDict_Size(__pyx_kwds); + switch (pos_args) { + case 0: + if (likely((values[0] = PyDict_GetItem(__pyx_kwds, __pyx_n_s_xSize)) != 0)) kw_args--; + else goto __pyx_L5_argtuple_error; + CYTHON_FALLTHROUGH; + case 1: + if (likely((values[1] = PyDict_GetItem(__pyx_kwds, __pyx_n_s_ySize)) != 0)) kw_args--; + else { + __Pyx_RaiseArgtupleInvalid("GetImage", 1, 3, 3, 1); __PYX_ERR(0, 9, __pyx_L3_error) + } + CYTHON_FALLTHROUGH; + case 2: + if (likely((values[2] = PyDict_GetItem(__pyx_kwds, __pyx_n_s_Colour)) != 0)) kw_args--; + else { + __Pyx_RaiseArgtupleInvalid("GetImage", 1, 3, 3, 2); __PYX_ERR(0, 9, __pyx_L3_error) + } + } + if (unlikely(kw_args > 0)) { + if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_pyargnames, 0, values, pos_args, "GetImage") < 0)) __PYX_ERR(0, 9, __pyx_L3_error) + } + } else if (PyTuple_GET_SIZE(__pyx_args) != 3) { + goto __pyx_L5_argtuple_error; + } else { + values[0] = PyTuple_GET_ITEM(__pyx_args, 0); + values[1] = PyTuple_GET_ITEM(__pyx_args, 1); + values[2] = PyTuple_GET_ITEM(__pyx_args, 2); + } + __pyx_v_xSize = values[0]; + __pyx_v_ySize = values[1]; + __pyx_v_Colour = values[2]; + } + goto __pyx_L4_argument_unpacking_done; + __pyx_L5_argtuple_error:; + __Pyx_RaiseArgtupleInvalid("GetImage", 1, 3, 3, PyTuple_GET_SIZE(__pyx_args)); __PYX_ERR(0, 9, __pyx_L3_error) + __pyx_L3_error:; + __Pyx_AddTraceback("CAStar.AATC_Monitor_Viewer.GetImage", __pyx_clineno, __pyx_lineno, __pyx_filename); + __Pyx_RefNannyFinishContext(); + return NULL; + __pyx_L4_argument_unpacking_done:; + __pyx_r = __pyx_pf_6CAStar_19AATC_Monitor_Viewer_GetImage(__pyx_self, __pyx_v_xSize, __pyx_v_ySize, __pyx_v_Colour); + + /* function exit code */ + __Pyx_RefNannyFinishContext(); + return __pyx_r; +} + +static PyObject *__pyx_pf_6CAStar_19AATC_Monitor_Viewer_GetImage(CYTHON_UNUSED PyObject *__pyx_self, PyObject *__pyx_v_xSize, PyObject *__pyx_v_ySize, PyObject *__pyx_v_Colour) { + PyObject *__pyx_v_result = NULL; + PyObject *__pyx_r = NULL; + __Pyx_RefNannyDeclarations + PyObject *__pyx_t_1 = NULL; + PyObject *__pyx_t_2 = NULL; + PyObject *__pyx_t_3 = NULL; + PyObject *__pyx_t_4 = NULL; + PyObject *__pyx_t_5 = NULL; + int __pyx_t_6; + PyObject *__pyx_t_7 = NULL; + Py_ssize_t __pyx_t_8; + PyObject *__pyx_t_9 = NULL; + int __pyx_t_10; + __Pyx_RefNannySetupContext("GetImage", 0); + + /* "CAStar/AATC_Monitor_Viewer.pyx":10 + * _images= {} + * def GetImage(xSize,ySize,Colour): #Efficiently get images + * result = _images.get((xSize,ySize,Colour)) # <<<<<<<<<<<<<< + * if result == None: + * result = pygame.Surface((xSize,ySize)).convert() + */ + __pyx_t_2 = __Pyx_GetModuleGlobalName(__pyx_n_s_images); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 10, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_2); + __pyx_t_3 = __Pyx_PyObject_GetAttrStr(__pyx_t_2, __pyx_n_s_get); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 10, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_3); + __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; + __pyx_t_2 = PyTuple_New(3); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 10, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_2); + __Pyx_INCREF(__pyx_v_xSize); + __Pyx_GIVEREF(__pyx_v_xSize); + PyTuple_SET_ITEM(__pyx_t_2, 0, __pyx_v_xSize); + __Pyx_INCREF(__pyx_v_ySize); + __Pyx_GIVEREF(__pyx_v_ySize); + PyTuple_SET_ITEM(__pyx_t_2, 1, __pyx_v_ySize); + __Pyx_INCREF(__pyx_v_Colour); + __Pyx_GIVEREF(__pyx_v_Colour); + PyTuple_SET_ITEM(__pyx_t_2, 2, __pyx_v_Colour); + __pyx_t_4 = NULL; + if (CYTHON_UNPACK_METHODS && unlikely(PyMethod_Check(__pyx_t_3))) { + __pyx_t_4 = PyMethod_GET_SELF(__pyx_t_3); + if (likely(__pyx_t_4)) { + PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_3); + __Pyx_INCREF(__pyx_t_4); + __Pyx_INCREF(function); + __Pyx_DECREF_SET(__pyx_t_3, function); + } + } + if (!__pyx_t_4) { + __pyx_t_1 = __Pyx_PyObject_CallOneArg(__pyx_t_3, __pyx_t_2); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 10, __pyx_L1_error) + __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; + __Pyx_GOTREF(__pyx_t_1); + } else { + #if CYTHON_FAST_PYCALL + if (PyFunction_Check(__pyx_t_3)) { + PyObject *__pyx_temp[2] = {__pyx_t_4, __pyx_t_2}; + __pyx_t_1 = __Pyx_PyFunction_FastCall(__pyx_t_3, __pyx_temp+1-1, 1+1); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 10, __pyx_L1_error) + __Pyx_XDECREF(__pyx_t_4); __pyx_t_4 = 0; + __Pyx_GOTREF(__pyx_t_1); + __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; + } else + #endif + #if CYTHON_FAST_PYCCALL + if (__Pyx_PyFastCFunction_Check(__pyx_t_3)) { + PyObject *__pyx_temp[2] = {__pyx_t_4, __pyx_t_2}; + __pyx_t_1 = __Pyx_PyCFunction_FastCall(__pyx_t_3, __pyx_temp+1-1, 1+1); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 10, __pyx_L1_error) + __Pyx_XDECREF(__pyx_t_4); __pyx_t_4 = 0; + __Pyx_GOTREF(__pyx_t_1); + __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; + } else + #endif + { + __pyx_t_5 = PyTuple_New(1+1); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 10, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_5); + __Pyx_GIVEREF(__pyx_t_4); PyTuple_SET_ITEM(__pyx_t_5, 0, __pyx_t_4); __pyx_t_4 = NULL; + __Pyx_GIVEREF(__pyx_t_2); + PyTuple_SET_ITEM(__pyx_t_5, 0+1, __pyx_t_2); + __pyx_t_2 = 0; + __pyx_t_1 = __Pyx_PyObject_Call(__pyx_t_3, __pyx_t_5, NULL); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 10, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_1); + __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0; + } + } + __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; + __pyx_v_result = __pyx_t_1; + __pyx_t_1 = 0; + + /* "CAStar/AATC_Monitor_Viewer.pyx":11 + * def GetImage(xSize,ySize,Colour): #Efficiently get images + * result = _images.get((xSize,ySize,Colour)) + * if result == None: # <<<<<<<<<<<<<< + * result = pygame.Surface((xSize,ySize)).convert() + * result.fill(Colour) + */ + __pyx_t_1 = PyObject_RichCompare(__pyx_v_result, Py_None, Py_EQ); __Pyx_XGOTREF(__pyx_t_1); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 11, __pyx_L1_error) + __pyx_t_6 = __Pyx_PyObject_IsTrue(__pyx_t_1); if (unlikely(__pyx_t_6 < 0)) __PYX_ERR(0, 11, __pyx_L1_error) + __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; + if (__pyx_t_6) { + + /* "CAStar/AATC_Monitor_Viewer.pyx":12 + * result = _images.get((xSize,ySize,Colour)) + * if result == None: + * result = pygame.Surface((xSize,ySize)).convert() # <<<<<<<<<<<<<< + * result.fill(Colour) + * _images[(xSize,ySize,Colour)]=result + */ + __pyx_t_5 = __Pyx_GetModuleGlobalName(__pyx_n_s_pygame); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 12, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_5); + __pyx_t_2 = __Pyx_PyObject_GetAttrStr(__pyx_t_5, __pyx_n_s_Surface); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 12, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_2); + __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0; + __pyx_t_5 = PyTuple_New(2); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 12, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_5); + __Pyx_INCREF(__pyx_v_xSize); + __Pyx_GIVEREF(__pyx_v_xSize); + PyTuple_SET_ITEM(__pyx_t_5, 0, __pyx_v_xSize); + __Pyx_INCREF(__pyx_v_ySize); + __Pyx_GIVEREF(__pyx_v_ySize); + PyTuple_SET_ITEM(__pyx_t_5, 1, __pyx_v_ySize); + __pyx_t_4 = NULL; + if (CYTHON_UNPACK_METHODS && unlikely(PyMethod_Check(__pyx_t_2))) { + __pyx_t_4 = PyMethod_GET_SELF(__pyx_t_2); + if (likely(__pyx_t_4)) { + PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_2); + __Pyx_INCREF(__pyx_t_4); + __Pyx_INCREF(function); + __Pyx_DECREF_SET(__pyx_t_2, function); + } + } + if (!__pyx_t_4) { + __pyx_t_3 = __Pyx_PyObject_CallOneArg(__pyx_t_2, __pyx_t_5); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 12, __pyx_L1_error) + __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0; + __Pyx_GOTREF(__pyx_t_3); + } else { + #if CYTHON_FAST_PYCALL + if (PyFunction_Check(__pyx_t_2)) { + PyObject *__pyx_temp[2] = {__pyx_t_4, __pyx_t_5}; + __pyx_t_3 = __Pyx_PyFunction_FastCall(__pyx_t_2, __pyx_temp+1-1, 1+1); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 12, __pyx_L1_error) + __Pyx_XDECREF(__pyx_t_4); __pyx_t_4 = 0; + __Pyx_GOTREF(__pyx_t_3); + __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0; + } else + #endif + #if CYTHON_FAST_PYCCALL + if (__Pyx_PyFastCFunction_Check(__pyx_t_2)) { + PyObject *__pyx_temp[2] = {__pyx_t_4, __pyx_t_5}; + __pyx_t_3 = __Pyx_PyCFunction_FastCall(__pyx_t_2, __pyx_temp+1-1, 1+1); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 12, __pyx_L1_error) + __Pyx_XDECREF(__pyx_t_4); __pyx_t_4 = 0; + __Pyx_GOTREF(__pyx_t_3); + __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0; + } else + #endif + { + __pyx_t_7 = PyTuple_New(1+1); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 12, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_7); + __Pyx_GIVEREF(__pyx_t_4); PyTuple_SET_ITEM(__pyx_t_7, 0, __pyx_t_4); __pyx_t_4 = NULL; + __Pyx_GIVEREF(__pyx_t_5); + PyTuple_SET_ITEM(__pyx_t_7, 0+1, __pyx_t_5); + __pyx_t_5 = 0; + __pyx_t_3 = __Pyx_PyObject_Call(__pyx_t_2, __pyx_t_7, NULL); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 12, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_3); + __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0; + } + } + __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; + __pyx_t_2 = __Pyx_PyObject_GetAttrStr(__pyx_t_3, __pyx_n_s_convert); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 12, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_2); + __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; + __pyx_t_3 = NULL; + if (CYTHON_UNPACK_METHODS && likely(PyMethod_Check(__pyx_t_2))) { + __pyx_t_3 = PyMethod_GET_SELF(__pyx_t_2); + if (likely(__pyx_t_3)) { + PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_2); + __Pyx_INCREF(__pyx_t_3); + __Pyx_INCREF(function); + __Pyx_DECREF_SET(__pyx_t_2, function); + } + } + if (__pyx_t_3) { + __pyx_t_1 = __Pyx_PyObject_CallOneArg(__pyx_t_2, __pyx_t_3); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 12, __pyx_L1_error) + __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; + } else { + __pyx_t_1 = __Pyx_PyObject_CallNoArg(__pyx_t_2); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 12, __pyx_L1_error) + } + __Pyx_GOTREF(__pyx_t_1); + __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; + __Pyx_DECREF_SET(__pyx_v_result, __pyx_t_1); + __pyx_t_1 = 0; + + /* "CAStar/AATC_Monitor_Viewer.pyx":13 + * if result == None: + * result = pygame.Surface((xSize,ySize)).convert() + * result.fill(Colour) # <<<<<<<<<<<<<< + * _images[(xSize,ySize,Colour)]=result + * while len(_images) > 1500: + */ + __pyx_t_2 = __Pyx_PyObject_GetAttrStr(__pyx_v_result, __pyx_n_s_fill); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 13, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_2); + __pyx_t_3 = NULL; + if (CYTHON_UNPACK_METHODS && likely(PyMethod_Check(__pyx_t_2))) { + __pyx_t_3 = PyMethod_GET_SELF(__pyx_t_2); + if (likely(__pyx_t_3)) { + PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_2); + __Pyx_INCREF(__pyx_t_3); + __Pyx_INCREF(function); + __Pyx_DECREF_SET(__pyx_t_2, function); + } + } + if (!__pyx_t_3) { + __pyx_t_1 = __Pyx_PyObject_CallOneArg(__pyx_t_2, __pyx_v_Colour); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 13, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_1); + } else { + #if CYTHON_FAST_PYCALL + if (PyFunction_Check(__pyx_t_2)) { + PyObject *__pyx_temp[2] = {__pyx_t_3, __pyx_v_Colour}; + __pyx_t_1 = __Pyx_PyFunction_FastCall(__pyx_t_2, __pyx_temp+1-1, 1+1); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 13, __pyx_L1_error) + __Pyx_XDECREF(__pyx_t_3); __pyx_t_3 = 0; + __Pyx_GOTREF(__pyx_t_1); + } else + #endif + #if CYTHON_FAST_PYCCALL + if (__Pyx_PyFastCFunction_Check(__pyx_t_2)) { + PyObject *__pyx_temp[2] = {__pyx_t_3, __pyx_v_Colour}; + __pyx_t_1 = __Pyx_PyCFunction_FastCall(__pyx_t_2, __pyx_temp+1-1, 1+1); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 13, __pyx_L1_error) + __Pyx_XDECREF(__pyx_t_3); __pyx_t_3 = 0; + __Pyx_GOTREF(__pyx_t_1); + } else + #endif + { + __pyx_t_7 = PyTuple_New(1+1); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 13, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_7); + __Pyx_GIVEREF(__pyx_t_3); PyTuple_SET_ITEM(__pyx_t_7, 0, __pyx_t_3); __pyx_t_3 = NULL; + __Pyx_INCREF(__pyx_v_Colour); + __Pyx_GIVEREF(__pyx_v_Colour); + PyTuple_SET_ITEM(__pyx_t_7, 0+1, __pyx_v_Colour); + __pyx_t_1 = __Pyx_PyObject_Call(__pyx_t_2, __pyx_t_7, NULL); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 13, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_1); + __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0; + } + } + __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; + __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; + + /* "CAStar/AATC_Monitor_Viewer.pyx":14 + * result = pygame.Surface((xSize,ySize)).convert() + * result.fill(Colour) + * _images[(xSize,ySize,Colour)]=result # <<<<<<<<<<<<<< + * while len(_images) > 1500: + * _images.pop(random.sample(_images.keys(),1)[0]) #If cache is full evict old versions + */ + __pyx_t_1 = __Pyx_GetModuleGlobalName(__pyx_n_s_images); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 14, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_1); + __pyx_t_2 = PyTuple_New(3); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 14, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_2); + __Pyx_INCREF(__pyx_v_xSize); + __Pyx_GIVEREF(__pyx_v_xSize); + PyTuple_SET_ITEM(__pyx_t_2, 0, __pyx_v_xSize); + __Pyx_INCREF(__pyx_v_ySize); + __Pyx_GIVEREF(__pyx_v_ySize); + PyTuple_SET_ITEM(__pyx_t_2, 1, __pyx_v_ySize); + __Pyx_INCREF(__pyx_v_Colour); + __Pyx_GIVEREF(__pyx_v_Colour); + PyTuple_SET_ITEM(__pyx_t_2, 2, __pyx_v_Colour); + if (unlikely(PyObject_SetItem(__pyx_t_1, __pyx_t_2, __pyx_v_result) < 0)) __PYX_ERR(0, 14, __pyx_L1_error) + __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; + __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; + + /* "CAStar/AATC_Monitor_Viewer.pyx":11 + * def GetImage(xSize,ySize,Colour): #Efficiently get images + * result = _images.get((xSize,ySize,Colour)) + * if result == None: # <<<<<<<<<<<<<< + * result = pygame.Surface((xSize,ySize)).convert() + * result.fill(Colour) + */ + } + + /* "CAStar/AATC_Monitor_Viewer.pyx":15 + * result.fill(Colour) + * _images[(xSize,ySize,Colour)]=result + * while len(_images) > 1500: # <<<<<<<<<<<<<< + * _images.pop(random.sample(_images.keys(),1)[0]) #If cache is full evict old versions + * return result#_copy + */ + while (1) { + __pyx_t_2 = __Pyx_GetModuleGlobalName(__pyx_n_s_images); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 15, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_2); + __pyx_t_8 = PyObject_Length(__pyx_t_2); if (unlikely(__pyx_t_8 == -1)) __PYX_ERR(0, 15, __pyx_L1_error) + __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; + __pyx_t_6 = ((__pyx_t_8 > 0x5DC) != 0); + if (!__pyx_t_6) break; + + /* "CAStar/AATC_Monitor_Viewer.pyx":16 + * _images[(xSize,ySize,Colour)]=result + * while len(_images) > 1500: + * _images.pop(random.sample(_images.keys(),1)[0]) #If cache is full evict old versions # <<<<<<<<<<<<<< + * return result#_copy + * + */ + __pyx_t_1 = __Pyx_GetModuleGlobalName(__pyx_n_s_images); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 16, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_1); + __pyx_t_7 = __Pyx_PyObject_GetAttrStr(__pyx_t_1, __pyx_n_s_pop); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 16, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_7); + __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; + __pyx_t_3 = __Pyx_GetModuleGlobalName(__pyx_n_s_random); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 16, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_3); + __pyx_t_5 = __Pyx_PyObject_GetAttrStr(__pyx_t_3, __pyx_n_s_sample); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 16, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_5); + __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; + __pyx_t_4 = __Pyx_GetModuleGlobalName(__pyx_n_s_images); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 16, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_4); + __pyx_t_9 = __Pyx_PyObject_GetAttrStr(__pyx_t_4, __pyx_n_s_keys); if (unlikely(!__pyx_t_9)) __PYX_ERR(0, 16, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_9); + __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0; + __pyx_t_4 = NULL; + if (CYTHON_UNPACK_METHODS && unlikely(PyMethod_Check(__pyx_t_9))) { + __pyx_t_4 = PyMethod_GET_SELF(__pyx_t_9); + if (likely(__pyx_t_4)) { + PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_9); + __Pyx_INCREF(__pyx_t_4); + __Pyx_INCREF(function); + __Pyx_DECREF_SET(__pyx_t_9, function); + } + } + if (__pyx_t_4) { + __pyx_t_3 = __Pyx_PyObject_CallOneArg(__pyx_t_9, __pyx_t_4); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 16, __pyx_L1_error) + __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0; + } else { + __pyx_t_3 = __Pyx_PyObject_CallNoArg(__pyx_t_9); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 16, __pyx_L1_error) + } + __Pyx_GOTREF(__pyx_t_3); + __Pyx_DECREF(__pyx_t_9); __pyx_t_9 = 0; + __pyx_t_9 = NULL; + __pyx_t_10 = 0; + if (CYTHON_UNPACK_METHODS && unlikely(PyMethod_Check(__pyx_t_5))) { + __pyx_t_9 = PyMethod_GET_SELF(__pyx_t_5); + if (likely(__pyx_t_9)) { + PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_5); + __Pyx_INCREF(__pyx_t_9); + __Pyx_INCREF(function); + __Pyx_DECREF_SET(__pyx_t_5, function); + __pyx_t_10 = 1; + } + } + #if CYTHON_FAST_PYCALL + if (PyFunction_Check(__pyx_t_5)) { + PyObject *__pyx_temp[3] = {__pyx_t_9, __pyx_t_3, __pyx_int_1}; + __pyx_t_1 = __Pyx_PyFunction_FastCall(__pyx_t_5, __pyx_temp+1-__pyx_t_10, 2+__pyx_t_10); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 16, __pyx_L1_error) + __Pyx_XDECREF(__pyx_t_9); __pyx_t_9 = 0; + __Pyx_GOTREF(__pyx_t_1); + __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; + } else + #endif + #if CYTHON_FAST_PYCCALL + if (__Pyx_PyFastCFunction_Check(__pyx_t_5)) { + PyObject *__pyx_temp[3] = {__pyx_t_9, __pyx_t_3, __pyx_int_1}; + __pyx_t_1 = __Pyx_PyCFunction_FastCall(__pyx_t_5, __pyx_temp+1-__pyx_t_10, 2+__pyx_t_10); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 16, __pyx_L1_error) + __Pyx_XDECREF(__pyx_t_9); __pyx_t_9 = 0; + __Pyx_GOTREF(__pyx_t_1); + __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; + } else + #endif + { + __pyx_t_4 = PyTuple_New(2+__pyx_t_10); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 16, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_4); + if (__pyx_t_9) { + __Pyx_GIVEREF(__pyx_t_9); PyTuple_SET_ITEM(__pyx_t_4, 0, __pyx_t_9); __pyx_t_9 = NULL; + } + __Pyx_GIVEREF(__pyx_t_3); + PyTuple_SET_ITEM(__pyx_t_4, 0+__pyx_t_10, __pyx_t_3); + __Pyx_INCREF(__pyx_int_1); + __Pyx_GIVEREF(__pyx_int_1); + PyTuple_SET_ITEM(__pyx_t_4, 1+__pyx_t_10, __pyx_int_1); + __pyx_t_3 = 0; + __pyx_t_1 = __Pyx_PyObject_Call(__pyx_t_5, __pyx_t_4, NULL); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 16, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_1); + __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0; + } + __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0; + __pyx_t_5 = __Pyx_GetItemInt(__pyx_t_1, 0, long, 1, __Pyx_PyInt_From_long, 0, 0, 0); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 16, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_5); + __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; + __pyx_t_1 = NULL; + if (CYTHON_UNPACK_METHODS && unlikely(PyMethod_Check(__pyx_t_7))) { + __pyx_t_1 = PyMethod_GET_SELF(__pyx_t_7); + if (likely(__pyx_t_1)) { + PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_7); + __Pyx_INCREF(__pyx_t_1); + __Pyx_INCREF(function); + __Pyx_DECREF_SET(__pyx_t_7, function); + } + } + if (!__pyx_t_1) { + __pyx_t_2 = __Pyx_PyObject_CallOneArg(__pyx_t_7, __pyx_t_5); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 16, __pyx_L1_error) + __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0; + __Pyx_GOTREF(__pyx_t_2); + } else { + #if CYTHON_FAST_PYCALL + if (PyFunction_Check(__pyx_t_7)) { + PyObject *__pyx_temp[2] = {__pyx_t_1, __pyx_t_5}; + __pyx_t_2 = __Pyx_PyFunction_FastCall(__pyx_t_7, __pyx_temp+1-1, 1+1); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 16, __pyx_L1_error) + __Pyx_XDECREF(__pyx_t_1); __pyx_t_1 = 0; + __Pyx_GOTREF(__pyx_t_2); + __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0; + } else + #endif + #if CYTHON_FAST_PYCCALL + if (__Pyx_PyFastCFunction_Check(__pyx_t_7)) { + PyObject *__pyx_temp[2] = {__pyx_t_1, __pyx_t_5}; + __pyx_t_2 = __Pyx_PyCFunction_FastCall(__pyx_t_7, __pyx_temp+1-1, 1+1); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 16, __pyx_L1_error) + __Pyx_XDECREF(__pyx_t_1); __pyx_t_1 = 0; + __Pyx_GOTREF(__pyx_t_2); + __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0; + } else + #endif + { + __pyx_t_4 = PyTuple_New(1+1); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 16, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_4); + __Pyx_GIVEREF(__pyx_t_1); PyTuple_SET_ITEM(__pyx_t_4, 0, __pyx_t_1); __pyx_t_1 = NULL; + __Pyx_GIVEREF(__pyx_t_5); + PyTuple_SET_ITEM(__pyx_t_4, 0+1, __pyx_t_5); + __pyx_t_5 = 0; + __pyx_t_2 = __Pyx_PyObject_Call(__pyx_t_7, __pyx_t_4, NULL); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 16, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_2); + __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0; + } + } + __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0; + __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; + } + + /* "CAStar/AATC_Monitor_Viewer.pyx":17 + * while len(_images) > 1500: + * _images.pop(random.sample(_images.keys(),1)[0]) #If cache is full evict old versions + * return result#_copy # <<<<<<<<<<<<<< + * + * _texts= {} + */ + __Pyx_XDECREF(__pyx_r); + __Pyx_INCREF(__pyx_v_result); + __pyx_r = __pyx_v_result; + goto __pyx_L0; + + /* "CAStar/AATC_Monitor_Viewer.pyx":9 + * + * _images= {} + * def GetImage(xSize,ySize,Colour): #Efficiently get images # <<<<<<<<<<<<<< + * result = _images.get((xSize,ySize,Colour)) + * if result == None: + */ + + /* function exit code */ + __pyx_L1_error:; + __Pyx_XDECREF(__pyx_t_1); + __Pyx_XDECREF(__pyx_t_2); + __Pyx_XDECREF(__pyx_t_3); + __Pyx_XDECREF(__pyx_t_4); + __Pyx_XDECREF(__pyx_t_5); + __Pyx_XDECREF(__pyx_t_7); + __Pyx_XDECREF(__pyx_t_9); + __Pyx_AddTraceback("CAStar.AATC_Monitor_Viewer.GetImage", __pyx_clineno, __pyx_lineno, __pyx_filename); + __pyx_r = NULL; + __pyx_L0:; + __Pyx_XDECREF(__pyx_v_result); + __Pyx_XGIVEREF(__pyx_r); + __Pyx_RefNannyFinishContext(); + return __pyx_r; +} + +/* "CAStar/AATC_Monitor_Viewer.pyx":20 + * + * _texts= {} + * def GetText(Text,fontParameters,AA,Colour): #Efficiently get text # <<<<<<<<<<<<<< + * result = _texts.get((Text,fontParameters,AA,Colour)) + * if result == None: + */ + +/* Python wrapper */ +static PyObject *__pyx_pw_6CAStar_19AATC_Monitor_Viewer_3GetText(PyObject *__pyx_self, PyObject *__pyx_args, PyObject *__pyx_kwds); /*proto*/ +static PyMethodDef __pyx_mdef_6CAStar_19AATC_Monitor_Viewer_3GetText = {"GetText", (PyCFunction)__pyx_pw_6CAStar_19AATC_Monitor_Viewer_3GetText, METH_VARARGS|METH_KEYWORDS, 0}; +static PyObject *__pyx_pw_6CAStar_19AATC_Monitor_Viewer_3GetText(PyObject *__pyx_self, PyObject *__pyx_args, PyObject *__pyx_kwds) { + PyObject *__pyx_v_Text = 0; + PyObject *__pyx_v_fontParameters = 0; + PyObject *__pyx_v_AA = 0; + PyObject *__pyx_v_Colour = 0; + PyObject *__pyx_r = 0; + __Pyx_RefNannyDeclarations + __Pyx_RefNannySetupContext("GetText (wrapper)", 0); + { + static PyObject **__pyx_pyargnames[] = {&__pyx_n_s_Text,&__pyx_n_s_fontParameters,&__pyx_n_s_AA,&__pyx_n_s_Colour,0}; + PyObject* values[4] = {0,0,0,0}; + if (unlikely(__pyx_kwds)) { + Py_ssize_t kw_args; + const Py_ssize_t pos_args = PyTuple_GET_SIZE(__pyx_args); + switch (pos_args) { + case 4: values[3] = PyTuple_GET_ITEM(__pyx_args, 3); + CYTHON_FALLTHROUGH; + case 3: values[2] = PyTuple_GET_ITEM(__pyx_args, 2); + CYTHON_FALLTHROUGH; + case 2: values[1] = PyTuple_GET_ITEM(__pyx_args, 1); + CYTHON_FALLTHROUGH; + case 1: values[0] = PyTuple_GET_ITEM(__pyx_args, 0); + CYTHON_FALLTHROUGH; + case 0: break; + default: goto __pyx_L5_argtuple_error; + } + kw_args = PyDict_Size(__pyx_kwds); + switch (pos_args) { + case 0: + if (likely((values[0] = PyDict_GetItem(__pyx_kwds, __pyx_n_s_Text)) != 0)) kw_args--; + else goto __pyx_L5_argtuple_error; + CYTHON_FALLTHROUGH; + case 1: + if (likely((values[1] = PyDict_GetItem(__pyx_kwds, __pyx_n_s_fontParameters)) != 0)) kw_args--; + else { + __Pyx_RaiseArgtupleInvalid("GetText", 1, 4, 4, 1); __PYX_ERR(0, 20, __pyx_L3_error) + } + CYTHON_FALLTHROUGH; + case 2: + if (likely((values[2] = PyDict_GetItem(__pyx_kwds, __pyx_n_s_AA)) != 0)) kw_args--; + else { + __Pyx_RaiseArgtupleInvalid("GetText", 1, 4, 4, 2); __PYX_ERR(0, 20, __pyx_L3_error) + } + CYTHON_FALLTHROUGH; + case 3: + if (likely((values[3] = PyDict_GetItem(__pyx_kwds, __pyx_n_s_Colour)) != 0)) kw_args--; + else { + __Pyx_RaiseArgtupleInvalid("GetText", 1, 4, 4, 3); __PYX_ERR(0, 20, __pyx_L3_error) + } + } + if (unlikely(kw_args > 0)) { + if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_pyargnames, 0, values, pos_args, "GetText") < 0)) __PYX_ERR(0, 20, __pyx_L3_error) + } + } else if (PyTuple_GET_SIZE(__pyx_args) != 4) { + goto __pyx_L5_argtuple_error; + } else { + values[0] = PyTuple_GET_ITEM(__pyx_args, 0); + values[1] = PyTuple_GET_ITEM(__pyx_args, 1); + values[2] = PyTuple_GET_ITEM(__pyx_args, 2); + values[3] = PyTuple_GET_ITEM(__pyx_args, 3); + } + __pyx_v_Text = values[0]; + __pyx_v_fontParameters = values[1]; + __pyx_v_AA = values[2]; + __pyx_v_Colour = values[3]; + } + goto __pyx_L4_argument_unpacking_done; + __pyx_L5_argtuple_error:; + __Pyx_RaiseArgtupleInvalid("GetText", 1, 4, 4, PyTuple_GET_SIZE(__pyx_args)); __PYX_ERR(0, 20, __pyx_L3_error) + __pyx_L3_error:; + __Pyx_AddTraceback("CAStar.AATC_Monitor_Viewer.GetText", __pyx_clineno, __pyx_lineno, __pyx_filename); + __Pyx_RefNannyFinishContext(); + return NULL; + __pyx_L4_argument_unpacking_done:; + __pyx_r = __pyx_pf_6CAStar_19AATC_Monitor_Viewer_2GetText(__pyx_self, __pyx_v_Text, __pyx_v_fontParameters, __pyx_v_AA, __pyx_v_Colour); + + /* function exit code */ + __Pyx_RefNannyFinishContext(); + return __pyx_r; +} + +static PyObject *__pyx_pf_6CAStar_19AATC_Monitor_Viewer_2GetText(CYTHON_UNUSED PyObject *__pyx_self, PyObject *__pyx_v_Text, PyObject *__pyx_v_fontParameters, PyObject *__pyx_v_AA, PyObject *__pyx_v_Colour) { + PyObject *__pyx_v_result = NULL; + PyObject *__pyx_r = NULL; + __Pyx_RefNannyDeclarations + PyObject *__pyx_t_1 = NULL; + PyObject *__pyx_t_2 = NULL; + PyObject *__pyx_t_3 = NULL; + PyObject *__pyx_t_4 = NULL; + PyObject *__pyx_t_5 = NULL; + int __pyx_t_6; + int __pyx_t_7; + Py_ssize_t __pyx_t_8; + PyObject *__pyx_t_9 = NULL; + PyObject *__pyx_t_10 = NULL; + __Pyx_RefNannySetupContext("GetText", 0); + + /* "CAStar/AATC_Monitor_Viewer.pyx":21 + * _texts= {} + * def GetText(Text,fontParameters,AA,Colour): #Efficiently get text + * result = _texts.get((Text,fontParameters,AA,Colour)) # <<<<<<<<<<<<<< + * if result == None: + * result = GetFont(*fontParameters).render(Text,AA,Colour) + */ + __pyx_t_2 = __Pyx_GetModuleGlobalName(__pyx_n_s_texts); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 21, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_2); + __pyx_t_3 = __Pyx_PyObject_GetAttrStr(__pyx_t_2, __pyx_n_s_get); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 21, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_3); + __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; + __pyx_t_2 = PyTuple_New(4); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 21, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_2); + __Pyx_INCREF(__pyx_v_Text); + __Pyx_GIVEREF(__pyx_v_Text); + PyTuple_SET_ITEM(__pyx_t_2, 0, __pyx_v_Text); + __Pyx_INCREF(__pyx_v_fontParameters); + __Pyx_GIVEREF(__pyx_v_fontParameters); + PyTuple_SET_ITEM(__pyx_t_2, 1, __pyx_v_fontParameters); + __Pyx_INCREF(__pyx_v_AA); + __Pyx_GIVEREF(__pyx_v_AA); + PyTuple_SET_ITEM(__pyx_t_2, 2, __pyx_v_AA); + __Pyx_INCREF(__pyx_v_Colour); + __Pyx_GIVEREF(__pyx_v_Colour); + PyTuple_SET_ITEM(__pyx_t_2, 3, __pyx_v_Colour); + __pyx_t_4 = NULL; + if (CYTHON_UNPACK_METHODS && unlikely(PyMethod_Check(__pyx_t_3))) { + __pyx_t_4 = PyMethod_GET_SELF(__pyx_t_3); + if (likely(__pyx_t_4)) { + PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_3); + __Pyx_INCREF(__pyx_t_4); + __Pyx_INCREF(function); + __Pyx_DECREF_SET(__pyx_t_3, function); + } + } + if (!__pyx_t_4) { + __pyx_t_1 = __Pyx_PyObject_CallOneArg(__pyx_t_3, __pyx_t_2); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 21, __pyx_L1_error) + __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; + __Pyx_GOTREF(__pyx_t_1); + } else { + #if CYTHON_FAST_PYCALL + if (PyFunction_Check(__pyx_t_3)) { + PyObject *__pyx_temp[2] = {__pyx_t_4, __pyx_t_2}; + __pyx_t_1 = __Pyx_PyFunction_FastCall(__pyx_t_3, __pyx_temp+1-1, 1+1); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 21, __pyx_L1_error) + __Pyx_XDECREF(__pyx_t_4); __pyx_t_4 = 0; + __Pyx_GOTREF(__pyx_t_1); + __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; + } else + #endif + #if CYTHON_FAST_PYCCALL + if (__Pyx_PyFastCFunction_Check(__pyx_t_3)) { + PyObject *__pyx_temp[2] = {__pyx_t_4, __pyx_t_2}; + __pyx_t_1 = __Pyx_PyCFunction_FastCall(__pyx_t_3, __pyx_temp+1-1, 1+1); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 21, __pyx_L1_error) + __Pyx_XDECREF(__pyx_t_4); __pyx_t_4 = 0; + __Pyx_GOTREF(__pyx_t_1); + __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; + } else + #endif + { + __pyx_t_5 = PyTuple_New(1+1); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 21, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_5); + __Pyx_GIVEREF(__pyx_t_4); PyTuple_SET_ITEM(__pyx_t_5, 0, __pyx_t_4); __pyx_t_4 = NULL; + __Pyx_GIVEREF(__pyx_t_2); + PyTuple_SET_ITEM(__pyx_t_5, 0+1, __pyx_t_2); + __pyx_t_2 = 0; + __pyx_t_1 = __Pyx_PyObject_Call(__pyx_t_3, __pyx_t_5, NULL); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 21, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_1); + __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0; + } + } + __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; + __pyx_v_result = __pyx_t_1; + __pyx_t_1 = 0; + + /* "CAStar/AATC_Monitor_Viewer.pyx":22 + * def GetText(Text,fontParameters,AA,Colour): #Efficiently get text + * result = _texts.get((Text,fontParameters,AA,Colour)) + * if result == None: # <<<<<<<<<<<<<< + * result = GetFont(*fontParameters).render(Text,AA,Colour) + * _texts[(Text,fontParameters,AA,Colour)]=result + */ + __pyx_t_1 = PyObject_RichCompare(__pyx_v_result, Py_None, Py_EQ); __Pyx_XGOTREF(__pyx_t_1); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 22, __pyx_L1_error) + __pyx_t_6 = __Pyx_PyObject_IsTrue(__pyx_t_1); if (unlikely(__pyx_t_6 < 0)) __PYX_ERR(0, 22, __pyx_L1_error) + __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; + if (__pyx_t_6) { + + /* "CAStar/AATC_Monitor_Viewer.pyx":23 + * result = _texts.get((Text,fontParameters,AA,Colour)) + * if result == None: + * result = GetFont(*fontParameters).render(Text,AA,Colour) # <<<<<<<<<<<<<< + * _texts[(Text,fontParameters,AA,Colour)]=result + * while len(_texts) > 1500: + */ + __pyx_t_3 = __Pyx_GetModuleGlobalName(__pyx_n_s_GetFont); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 23, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_3); + __pyx_t_5 = PySequence_Tuple(__pyx_v_fontParameters); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 23, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_5); + __pyx_t_2 = __Pyx_PyObject_Call(__pyx_t_3, __pyx_t_5, NULL); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 23, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_2); + __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; + __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0; + __pyx_t_5 = __Pyx_PyObject_GetAttrStr(__pyx_t_2, __pyx_n_s_render); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 23, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_5); + __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; + __pyx_t_2 = NULL; + __pyx_t_7 = 0; + if (CYTHON_UNPACK_METHODS && likely(PyMethod_Check(__pyx_t_5))) { + __pyx_t_2 = PyMethod_GET_SELF(__pyx_t_5); + if (likely(__pyx_t_2)) { + PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_5); + __Pyx_INCREF(__pyx_t_2); + __Pyx_INCREF(function); + __Pyx_DECREF_SET(__pyx_t_5, function); + __pyx_t_7 = 1; + } + } + #if CYTHON_FAST_PYCALL + if (PyFunction_Check(__pyx_t_5)) { + PyObject *__pyx_temp[4] = {__pyx_t_2, __pyx_v_Text, __pyx_v_AA, __pyx_v_Colour}; + __pyx_t_1 = __Pyx_PyFunction_FastCall(__pyx_t_5, __pyx_temp+1-__pyx_t_7, 3+__pyx_t_7); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 23, __pyx_L1_error) + __Pyx_XDECREF(__pyx_t_2); __pyx_t_2 = 0; + __Pyx_GOTREF(__pyx_t_1); + } else + #endif + #if CYTHON_FAST_PYCCALL + if (__Pyx_PyFastCFunction_Check(__pyx_t_5)) { + PyObject *__pyx_temp[4] = {__pyx_t_2, __pyx_v_Text, __pyx_v_AA, __pyx_v_Colour}; + __pyx_t_1 = __Pyx_PyCFunction_FastCall(__pyx_t_5, __pyx_temp+1-__pyx_t_7, 3+__pyx_t_7); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 23, __pyx_L1_error) + __Pyx_XDECREF(__pyx_t_2); __pyx_t_2 = 0; + __Pyx_GOTREF(__pyx_t_1); + } else + #endif + { + __pyx_t_3 = PyTuple_New(3+__pyx_t_7); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 23, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_3); + if (__pyx_t_2) { + __Pyx_GIVEREF(__pyx_t_2); PyTuple_SET_ITEM(__pyx_t_3, 0, __pyx_t_2); __pyx_t_2 = NULL; + } + __Pyx_INCREF(__pyx_v_Text); + __Pyx_GIVEREF(__pyx_v_Text); + PyTuple_SET_ITEM(__pyx_t_3, 0+__pyx_t_7, __pyx_v_Text); + __Pyx_INCREF(__pyx_v_AA); + __Pyx_GIVEREF(__pyx_v_AA); + PyTuple_SET_ITEM(__pyx_t_3, 1+__pyx_t_7, __pyx_v_AA); + __Pyx_INCREF(__pyx_v_Colour); + __Pyx_GIVEREF(__pyx_v_Colour); + PyTuple_SET_ITEM(__pyx_t_3, 2+__pyx_t_7, __pyx_v_Colour); + __pyx_t_1 = __Pyx_PyObject_Call(__pyx_t_5, __pyx_t_3, NULL); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 23, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_1); + __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; + } + __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0; + __Pyx_DECREF_SET(__pyx_v_result, __pyx_t_1); + __pyx_t_1 = 0; + + /* "CAStar/AATC_Monitor_Viewer.pyx":24 + * if result == None: + * result = GetFont(*fontParameters).render(Text,AA,Colour) + * _texts[(Text,fontParameters,AA,Colour)]=result # <<<<<<<<<<<<<< + * while len(_texts) > 1500: + * _texts.pop(random.sample(_texts.keys(),1)[0]) #If cache is full evict old versions + */ + __pyx_t_1 = __Pyx_GetModuleGlobalName(__pyx_n_s_texts); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 24, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_1); + __pyx_t_5 = PyTuple_New(4); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 24, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_5); + __Pyx_INCREF(__pyx_v_Text); + __Pyx_GIVEREF(__pyx_v_Text); + PyTuple_SET_ITEM(__pyx_t_5, 0, __pyx_v_Text); + __Pyx_INCREF(__pyx_v_fontParameters); + __Pyx_GIVEREF(__pyx_v_fontParameters); + PyTuple_SET_ITEM(__pyx_t_5, 1, __pyx_v_fontParameters); + __Pyx_INCREF(__pyx_v_AA); + __Pyx_GIVEREF(__pyx_v_AA); + PyTuple_SET_ITEM(__pyx_t_5, 2, __pyx_v_AA); + __Pyx_INCREF(__pyx_v_Colour); + __Pyx_GIVEREF(__pyx_v_Colour); + PyTuple_SET_ITEM(__pyx_t_5, 3, __pyx_v_Colour); + if (unlikely(PyObject_SetItem(__pyx_t_1, __pyx_t_5, __pyx_v_result) < 0)) __PYX_ERR(0, 24, __pyx_L1_error) + __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; + __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0; + + /* "CAStar/AATC_Monitor_Viewer.pyx":22 + * def GetText(Text,fontParameters,AA,Colour): #Efficiently get text + * result = _texts.get((Text,fontParameters,AA,Colour)) + * if result == None: # <<<<<<<<<<<<<< + * result = GetFont(*fontParameters).render(Text,AA,Colour) + * _texts[(Text,fontParameters,AA,Colour)]=result + */ + } + + /* "CAStar/AATC_Monitor_Viewer.pyx":25 + * result = GetFont(*fontParameters).render(Text,AA,Colour) + * _texts[(Text,fontParameters,AA,Colour)]=result + * while len(_texts) > 1500: # <<<<<<<<<<<<<< + * _texts.pop(random.sample(_texts.keys(),1)[0]) #If cache is full evict old versions + * return result + */ + while (1) { + __pyx_t_5 = __Pyx_GetModuleGlobalName(__pyx_n_s_texts); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 25, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_5); + __pyx_t_8 = PyObject_Length(__pyx_t_5); if (unlikely(__pyx_t_8 == -1)) __PYX_ERR(0, 25, __pyx_L1_error) + __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0; + __pyx_t_6 = ((__pyx_t_8 > 0x5DC) != 0); + if (!__pyx_t_6) break; + + /* "CAStar/AATC_Monitor_Viewer.pyx":26 + * _texts[(Text,fontParameters,AA,Colour)]=result + * while len(_texts) > 1500: + * _texts.pop(random.sample(_texts.keys(),1)[0]) #If cache is full evict old versions # <<<<<<<<<<<<<< + * return result + * + */ + __pyx_t_1 = __Pyx_GetModuleGlobalName(__pyx_n_s_texts); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 26, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_1); + __pyx_t_3 = __Pyx_PyObject_GetAttrStr(__pyx_t_1, __pyx_n_s_pop); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 26, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_3); + __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; + __pyx_t_2 = __Pyx_GetModuleGlobalName(__pyx_n_s_random); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 26, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_2); + __pyx_t_4 = __Pyx_PyObject_GetAttrStr(__pyx_t_2, __pyx_n_s_sample); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 26, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_4); + __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; + __pyx_t_9 = __Pyx_GetModuleGlobalName(__pyx_n_s_texts); if (unlikely(!__pyx_t_9)) __PYX_ERR(0, 26, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_9); + __pyx_t_10 = __Pyx_PyObject_GetAttrStr(__pyx_t_9, __pyx_n_s_keys); if (unlikely(!__pyx_t_10)) __PYX_ERR(0, 26, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_10); + __Pyx_DECREF(__pyx_t_9); __pyx_t_9 = 0; + __pyx_t_9 = NULL; + if (CYTHON_UNPACK_METHODS && unlikely(PyMethod_Check(__pyx_t_10))) { + __pyx_t_9 = PyMethod_GET_SELF(__pyx_t_10); + if (likely(__pyx_t_9)) { + PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_10); + __Pyx_INCREF(__pyx_t_9); + __Pyx_INCREF(function); + __Pyx_DECREF_SET(__pyx_t_10, function); + } + } + if (__pyx_t_9) { + __pyx_t_2 = __Pyx_PyObject_CallOneArg(__pyx_t_10, __pyx_t_9); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 26, __pyx_L1_error) + __Pyx_DECREF(__pyx_t_9); __pyx_t_9 = 0; + } else { + __pyx_t_2 = __Pyx_PyObject_CallNoArg(__pyx_t_10); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 26, __pyx_L1_error) + } + __Pyx_GOTREF(__pyx_t_2); + __Pyx_DECREF(__pyx_t_10); __pyx_t_10 = 0; + __pyx_t_10 = NULL; + __pyx_t_7 = 0; + if (CYTHON_UNPACK_METHODS && unlikely(PyMethod_Check(__pyx_t_4))) { + __pyx_t_10 = PyMethod_GET_SELF(__pyx_t_4); + if (likely(__pyx_t_10)) { + PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_4); + __Pyx_INCREF(__pyx_t_10); + __Pyx_INCREF(function); + __Pyx_DECREF_SET(__pyx_t_4, function); + __pyx_t_7 = 1; + } + } + #if CYTHON_FAST_PYCALL + if (PyFunction_Check(__pyx_t_4)) { + PyObject *__pyx_temp[3] = {__pyx_t_10, __pyx_t_2, __pyx_int_1}; + __pyx_t_1 = __Pyx_PyFunction_FastCall(__pyx_t_4, __pyx_temp+1-__pyx_t_7, 2+__pyx_t_7); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 26, __pyx_L1_error) + __Pyx_XDECREF(__pyx_t_10); __pyx_t_10 = 0; + __Pyx_GOTREF(__pyx_t_1); + __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; + } else + #endif + #if CYTHON_FAST_PYCCALL + if (__Pyx_PyFastCFunction_Check(__pyx_t_4)) { + PyObject *__pyx_temp[3] = {__pyx_t_10, __pyx_t_2, __pyx_int_1}; + __pyx_t_1 = __Pyx_PyCFunction_FastCall(__pyx_t_4, __pyx_temp+1-__pyx_t_7, 2+__pyx_t_7); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 26, __pyx_L1_error) + __Pyx_XDECREF(__pyx_t_10); __pyx_t_10 = 0; + __Pyx_GOTREF(__pyx_t_1); + __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; + } else + #endif + { + __pyx_t_9 = PyTuple_New(2+__pyx_t_7); if (unlikely(!__pyx_t_9)) __PYX_ERR(0, 26, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_9); + if (__pyx_t_10) { + __Pyx_GIVEREF(__pyx_t_10); PyTuple_SET_ITEM(__pyx_t_9, 0, __pyx_t_10); __pyx_t_10 = NULL; + } + __Pyx_GIVEREF(__pyx_t_2); + PyTuple_SET_ITEM(__pyx_t_9, 0+__pyx_t_7, __pyx_t_2); + __Pyx_INCREF(__pyx_int_1); + __Pyx_GIVEREF(__pyx_int_1); + PyTuple_SET_ITEM(__pyx_t_9, 1+__pyx_t_7, __pyx_int_1); + __pyx_t_2 = 0; + __pyx_t_1 = __Pyx_PyObject_Call(__pyx_t_4, __pyx_t_9, NULL); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 26, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_1); + __Pyx_DECREF(__pyx_t_9); __pyx_t_9 = 0; + } + __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0; + __pyx_t_4 = __Pyx_GetItemInt(__pyx_t_1, 0, long, 1, __Pyx_PyInt_From_long, 0, 0, 0); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 26, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_4); + __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; + __pyx_t_1 = NULL; + if (CYTHON_UNPACK_METHODS && unlikely(PyMethod_Check(__pyx_t_3))) { + __pyx_t_1 = PyMethod_GET_SELF(__pyx_t_3); + if (likely(__pyx_t_1)) { + PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_3); + __Pyx_INCREF(__pyx_t_1); + __Pyx_INCREF(function); + __Pyx_DECREF_SET(__pyx_t_3, function); + } + } + if (!__pyx_t_1) { + __pyx_t_5 = __Pyx_PyObject_CallOneArg(__pyx_t_3, __pyx_t_4); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 26, __pyx_L1_error) + __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0; + __Pyx_GOTREF(__pyx_t_5); + } else { + #if CYTHON_FAST_PYCALL + if (PyFunction_Check(__pyx_t_3)) { + PyObject *__pyx_temp[2] = {__pyx_t_1, __pyx_t_4}; + __pyx_t_5 = __Pyx_PyFunction_FastCall(__pyx_t_3, __pyx_temp+1-1, 1+1); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 26, __pyx_L1_error) + __Pyx_XDECREF(__pyx_t_1); __pyx_t_1 = 0; + __Pyx_GOTREF(__pyx_t_5); + __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0; + } else + #endif + #if CYTHON_FAST_PYCCALL + if (__Pyx_PyFastCFunction_Check(__pyx_t_3)) { + PyObject *__pyx_temp[2] = {__pyx_t_1, __pyx_t_4}; + __pyx_t_5 = __Pyx_PyCFunction_FastCall(__pyx_t_3, __pyx_temp+1-1, 1+1); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 26, __pyx_L1_error) + __Pyx_XDECREF(__pyx_t_1); __pyx_t_1 = 0; + __Pyx_GOTREF(__pyx_t_5); + __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0; + } else + #endif + { + __pyx_t_9 = PyTuple_New(1+1); if (unlikely(!__pyx_t_9)) __PYX_ERR(0, 26, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_9); + __Pyx_GIVEREF(__pyx_t_1); PyTuple_SET_ITEM(__pyx_t_9, 0, __pyx_t_1); __pyx_t_1 = NULL; + __Pyx_GIVEREF(__pyx_t_4); + PyTuple_SET_ITEM(__pyx_t_9, 0+1, __pyx_t_4); + __pyx_t_4 = 0; + __pyx_t_5 = __Pyx_PyObject_Call(__pyx_t_3, __pyx_t_9, NULL); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 26, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_5); + __Pyx_DECREF(__pyx_t_9); __pyx_t_9 = 0; + } + } + __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; + __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0; + } + + /* "CAStar/AATC_Monitor_Viewer.pyx":27 + * while len(_texts) > 1500: + * _texts.pop(random.sample(_texts.keys(),1)[0]) #If cache is full evict old versions + * return result # <<<<<<<<<<<<<< + * + * + */ + __Pyx_XDECREF(__pyx_r); + __Pyx_INCREF(__pyx_v_result); + __pyx_r = __pyx_v_result; + goto __pyx_L0; + + /* "CAStar/AATC_Monitor_Viewer.pyx":20 + * + * _texts= {} + * def GetText(Text,fontParameters,AA,Colour): #Efficiently get text # <<<<<<<<<<<<<< + * result = _texts.get((Text,fontParameters,AA,Colour)) + * if result == None: + */ + + /* function exit code */ + __pyx_L1_error:; + __Pyx_XDECREF(__pyx_t_1); + __Pyx_XDECREF(__pyx_t_2); + __Pyx_XDECREF(__pyx_t_3); + __Pyx_XDECREF(__pyx_t_4); + __Pyx_XDECREF(__pyx_t_5); + __Pyx_XDECREF(__pyx_t_9); + __Pyx_XDECREF(__pyx_t_10); + __Pyx_AddTraceback("CAStar.AATC_Monitor_Viewer.GetText", __pyx_clineno, __pyx_lineno, __pyx_filename); + __pyx_r = NULL; + __pyx_L0:; + __Pyx_XDECREF(__pyx_v_result); + __Pyx_XGIVEREF(__pyx_r); + __Pyx_RefNannyFinishContext(); + return __pyx_r; +} + +/* "CAStar/AATC_Monitor_Viewer.pyx":31 + * + * _fonts = {} + * def GetFont(Font,Size): # <<<<<<<<<<<<<< + * result = _fonts.get((Font,Size)) + * if result == None: + */ + +/* Python wrapper */ +static PyObject *__pyx_pw_6CAStar_19AATC_Monitor_Viewer_5GetFont(PyObject *__pyx_self, PyObject *__pyx_args, PyObject *__pyx_kwds); /*proto*/ +static PyMethodDef __pyx_mdef_6CAStar_19AATC_Monitor_Viewer_5GetFont = {"GetFont", (PyCFunction)__pyx_pw_6CAStar_19AATC_Monitor_Viewer_5GetFont, METH_VARARGS|METH_KEYWORDS, 0}; +static PyObject *__pyx_pw_6CAStar_19AATC_Monitor_Viewer_5GetFont(PyObject *__pyx_self, PyObject *__pyx_args, PyObject *__pyx_kwds) { + PyObject *__pyx_v_Font = 0; + PyObject *__pyx_v_Size = 0; + PyObject *__pyx_r = 0; + __Pyx_RefNannyDeclarations + __Pyx_RefNannySetupContext("GetFont (wrapper)", 0); + { + static PyObject **__pyx_pyargnames[] = {&__pyx_n_s_Font,&__pyx_n_s_Size,0}; + PyObject* values[2] = {0,0}; + if (unlikely(__pyx_kwds)) { + Py_ssize_t kw_args; + const Py_ssize_t pos_args = PyTuple_GET_SIZE(__pyx_args); + switch (pos_args) { + case 2: values[1] = PyTuple_GET_ITEM(__pyx_args, 1); + CYTHON_FALLTHROUGH; + case 1: values[0] = PyTuple_GET_ITEM(__pyx_args, 0); + CYTHON_FALLTHROUGH; + case 0: break; + default: goto __pyx_L5_argtuple_error; + } + kw_args = PyDict_Size(__pyx_kwds); + switch (pos_args) { + case 0: + if (likely((values[0] = PyDict_GetItem(__pyx_kwds, __pyx_n_s_Font)) != 0)) kw_args--; + else goto __pyx_L5_argtuple_error; + CYTHON_FALLTHROUGH; + case 1: + if (likely((values[1] = PyDict_GetItem(__pyx_kwds, __pyx_n_s_Size)) != 0)) kw_args--; + else { + __Pyx_RaiseArgtupleInvalid("GetFont", 1, 2, 2, 1); __PYX_ERR(0, 31, __pyx_L3_error) + } + } + if (unlikely(kw_args > 0)) { + if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_pyargnames, 0, values, pos_args, "GetFont") < 0)) __PYX_ERR(0, 31, __pyx_L3_error) + } + } else if (PyTuple_GET_SIZE(__pyx_args) != 2) { + goto __pyx_L5_argtuple_error; + } else { + values[0] = PyTuple_GET_ITEM(__pyx_args, 0); + values[1] = PyTuple_GET_ITEM(__pyx_args, 1); + } + __pyx_v_Font = values[0]; + __pyx_v_Size = values[1]; + } + goto __pyx_L4_argument_unpacking_done; + __pyx_L5_argtuple_error:; + __Pyx_RaiseArgtupleInvalid("GetFont", 1, 2, 2, PyTuple_GET_SIZE(__pyx_args)); __PYX_ERR(0, 31, __pyx_L3_error) + __pyx_L3_error:; + __Pyx_AddTraceback("CAStar.AATC_Monitor_Viewer.GetFont", __pyx_clineno, __pyx_lineno, __pyx_filename); + __Pyx_RefNannyFinishContext(); + return NULL; + __pyx_L4_argument_unpacking_done:; + __pyx_r = __pyx_pf_6CAStar_19AATC_Monitor_Viewer_4GetFont(__pyx_self, __pyx_v_Font, __pyx_v_Size); + + /* function exit code */ + __Pyx_RefNannyFinishContext(); + return __pyx_r; +} + +static PyObject *__pyx_pf_6CAStar_19AATC_Monitor_Viewer_4GetFont(CYTHON_UNUSED PyObject *__pyx_self, PyObject *__pyx_v_Font, PyObject *__pyx_v_Size) { + PyObject *__pyx_v_result = NULL; + PyObject *__pyx_r = NULL; + __Pyx_RefNannyDeclarations + PyObject *__pyx_t_1 = NULL; + PyObject *__pyx_t_2 = NULL; + PyObject *__pyx_t_3 = NULL; + PyObject *__pyx_t_4 = NULL; + PyObject *__pyx_t_5 = NULL; + int __pyx_t_6; + int __pyx_t_7; + Py_ssize_t __pyx_t_8; + PyObject *__pyx_t_9 = NULL; + PyObject *__pyx_t_10 = NULL; + __Pyx_RefNannySetupContext("GetFont", 0); + + /* "CAStar/AATC_Monitor_Viewer.pyx":32 + * _fonts = {} + * def GetFont(Font,Size): + * result = _fonts.get((Font,Size)) # <<<<<<<<<<<<<< + * if result == None: + * result = pygame.font.Font(Font,Size) + */ + __pyx_t_2 = __Pyx_GetModuleGlobalName(__pyx_n_s_fonts); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 32, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_2); + __pyx_t_3 = __Pyx_PyObject_GetAttrStr(__pyx_t_2, __pyx_n_s_get); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 32, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_3); + __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; + __pyx_t_2 = PyTuple_New(2); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 32, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_2); + __Pyx_INCREF(__pyx_v_Font); + __Pyx_GIVEREF(__pyx_v_Font); + PyTuple_SET_ITEM(__pyx_t_2, 0, __pyx_v_Font); + __Pyx_INCREF(__pyx_v_Size); + __Pyx_GIVEREF(__pyx_v_Size); + PyTuple_SET_ITEM(__pyx_t_2, 1, __pyx_v_Size); + __pyx_t_4 = NULL; + if (CYTHON_UNPACK_METHODS && unlikely(PyMethod_Check(__pyx_t_3))) { + __pyx_t_4 = PyMethod_GET_SELF(__pyx_t_3); + if (likely(__pyx_t_4)) { + PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_3); + __Pyx_INCREF(__pyx_t_4); + __Pyx_INCREF(function); + __Pyx_DECREF_SET(__pyx_t_3, function); + } + } + if (!__pyx_t_4) { + __pyx_t_1 = __Pyx_PyObject_CallOneArg(__pyx_t_3, __pyx_t_2); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 32, __pyx_L1_error) + __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; + __Pyx_GOTREF(__pyx_t_1); + } else { + #if CYTHON_FAST_PYCALL + if (PyFunction_Check(__pyx_t_3)) { + PyObject *__pyx_temp[2] = {__pyx_t_4, __pyx_t_2}; + __pyx_t_1 = __Pyx_PyFunction_FastCall(__pyx_t_3, __pyx_temp+1-1, 1+1); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 32, __pyx_L1_error) + __Pyx_XDECREF(__pyx_t_4); __pyx_t_4 = 0; + __Pyx_GOTREF(__pyx_t_1); + __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; + } else + #endif + #if CYTHON_FAST_PYCCALL + if (__Pyx_PyFastCFunction_Check(__pyx_t_3)) { + PyObject *__pyx_temp[2] = {__pyx_t_4, __pyx_t_2}; + __pyx_t_1 = __Pyx_PyCFunction_FastCall(__pyx_t_3, __pyx_temp+1-1, 1+1); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 32, __pyx_L1_error) + __Pyx_XDECREF(__pyx_t_4); __pyx_t_4 = 0; + __Pyx_GOTREF(__pyx_t_1); + __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; + } else + #endif + { + __pyx_t_5 = PyTuple_New(1+1); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 32, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_5); + __Pyx_GIVEREF(__pyx_t_4); PyTuple_SET_ITEM(__pyx_t_5, 0, __pyx_t_4); __pyx_t_4 = NULL; + __Pyx_GIVEREF(__pyx_t_2); + PyTuple_SET_ITEM(__pyx_t_5, 0+1, __pyx_t_2); + __pyx_t_2 = 0; + __pyx_t_1 = __Pyx_PyObject_Call(__pyx_t_3, __pyx_t_5, NULL); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 32, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_1); + __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0; + } + } + __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; + __pyx_v_result = __pyx_t_1; + __pyx_t_1 = 0; + + /* "CAStar/AATC_Monitor_Viewer.pyx":33 + * def GetFont(Font,Size): + * result = _fonts.get((Font,Size)) + * if result == None: # <<<<<<<<<<<<<< + * result = pygame.font.Font(Font,Size) + * _fonts[(Font,Size)]=result + */ + __pyx_t_1 = PyObject_RichCompare(__pyx_v_result, Py_None, Py_EQ); __Pyx_XGOTREF(__pyx_t_1); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 33, __pyx_L1_error) + __pyx_t_6 = __Pyx_PyObject_IsTrue(__pyx_t_1); if (unlikely(__pyx_t_6 < 0)) __PYX_ERR(0, 33, __pyx_L1_error) + __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; + if (__pyx_t_6) { + + /* "CAStar/AATC_Monitor_Viewer.pyx":34 + * result = _fonts.get((Font,Size)) + * if result == None: + * result = pygame.font.Font(Font,Size) # <<<<<<<<<<<<<< + * _fonts[(Font,Size)]=result + * while len(_fonts) > 1500: + */ + __pyx_t_3 = __Pyx_GetModuleGlobalName(__pyx_n_s_pygame); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 34, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_3); + __pyx_t_5 = __Pyx_PyObject_GetAttrStr(__pyx_t_3, __pyx_n_s_font); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 34, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_5); + __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; + __pyx_t_3 = __Pyx_PyObject_GetAttrStr(__pyx_t_5, __pyx_n_s_Font); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 34, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_3); + __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0; + __pyx_t_5 = NULL; + __pyx_t_7 = 0; + if (CYTHON_UNPACK_METHODS && likely(PyMethod_Check(__pyx_t_3))) { + __pyx_t_5 = PyMethod_GET_SELF(__pyx_t_3); + if (likely(__pyx_t_5)) { + PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_3); + __Pyx_INCREF(__pyx_t_5); + __Pyx_INCREF(function); + __Pyx_DECREF_SET(__pyx_t_3, function); + __pyx_t_7 = 1; + } + } + #if CYTHON_FAST_PYCALL + if (PyFunction_Check(__pyx_t_3)) { + PyObject *__pyx_temp[3] = {__pyx_t_5, __pyx_v_Font, __pyx_v_Size}; + __pyx_t_1 = __Pyx_PyFunction_FastCall(__pyx_t_3, __pyx_temp+1-__pyx_t_7, 2+__pyx_t_7); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 34, __pyx_L1_error) + __Pyx_XDECREF(__pyx_t_5); __pyx_t_5 = 0; + __Pyx_GOTREF(__pyx_t_1); + } else + #endif + #if CYTHON_FAST_PYCCALL + if (__Pyx_PyFastCFunction_Check(__pyx_t_3)) { + PyObject *__pyx_temp[3] = {__pyx_t_5, __pyx_v_Font, __pyx_v_Size}; + __pyx_t_1 = __Pyx_PyCFunction_FastCall(__pyx_t_3, __pyx_temp+1-__pyx_t_7, 2+__pyx_t_7); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 34, __pyx_L1_error) + __Pyx_XDECREF(__pyx_t_5); __pyx_t_5 = 0; + __Pyx_GOTREF(__pyx_t_1); + } else + #endif + { + __pyx_t_2 = PyTuple_New(2+__pyx_t_7); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 34, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_2); + if (__pyx_t_5) { + __Pyx_GIVEREF(__pyx_t_5); PyTuple_SET_ITEM(__pyx_t_2, 0, __pyx_t_5); __pyx_t_5 = NULL; + } + __Pyx_INCREF(__pyx_v_Font); + __Pyx_GIVEREF(__pyx_v_Font); + PyTuple_SET_ITEM(__pyx_t_2, 0+__pyx_t_7, __pyx_v_Font); + __Pyx_INCREF(__pyx_v_Size); + __Pyx_GIVEREF(__pyx_v_Size); + PyTuple_SET_ITEM(__pyx_t_2, 1+__pyx_t_7, __pyx_v_Size); + __pyx_t_1 = __Pyx_PyObject_Call(__pyx_t_3, __pyx_t_2, NULL); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 34, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_1); + __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; + } + __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; + __Pyx_DECREF_SET(__pyx_v_result, __pyx_t_1); + __pyx_t_1 = 0; + + /* "CAStar/AATC_Monitor_Viewer.pyx":35 + * if result == None: + * result = pygame.font.Font(Font,Size) + * _fonts[(Font,Size)]=result # <<<<<<<<<<<<<< + * while len(_fonts) > 1500: + * _fonts.pop(random.sample(_fonts.keys(),1)[0]) #If cache is full evict old versions + */ + __pyx_t_1 = __Pyx_GetModuleGlobalName(__pyx_n_s_fonts); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 35, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_1); + __pyx_t_3 = PyTuple_New(2); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 35, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_3); + __Pyx_INCREF(__pyx_v_Font); + __Pyx_GIVEREF(__pyx_v_Font); + PyTuple_SET_ITEM(__pyx_t_3, 0, __pyx_v_Font); + __Pyx_INCREF(__pyx_v_Size); + __Pyx_GIVEREF(__pyx_v_Size); + PyTuple_SET_ITEM(__pyx_t_3, 1, __pyx_v_Size); + if (unlikely(PyObject_SetItem(__pyx_t_1, __pyx_t_3, __pyx_v_result) < 0)) __PYX_ERR(0, 35, __pyx_L1_error) + __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; + __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; + + /* "CAStar/AATC_Monitor_Viewer.pyx":33 + * def GetFont(Font,Size): + * result = _fonts.get((Font,Size)) + * if result == None: # <<<<<<<<<<<<<< + * result = pygame.font.Font(Font,Size) + * _fonts[(Font,Size)]=result + */ + } + + /* "CAStar/AATC_Monitor_Viewer.pyx":36 + * result = pygame.font.Font(Font,Size) + * _fonts[(Font,Size)]=result + * while len(_fonts) > 1500: # <<<<<<<<<<<<<< + * _fonts.pop(random.sample(_fonts.keys(),1)[0]) #If cache is full evict old versions + * return result + */ + while (1) { + __pyx_t_3 = __Pyx_GetModuleGlobalName(__pyx_n_s_fonts); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 36, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_3); + __pyx_t_8 = PyObject_Length(__pyx_t_3); if (unlikely(__pyx_t_8 == -1)) __PYX_ERR(0, 36, __pyx_L1_error) + __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; + __pyx_t_6 = ((__pyx_t_8 > 0x5DC) != 0); + if (!__pyx_t_6) break; + + /* "CAStar/AATC_Monitor_Viewer.pyx":37 + * _fonts[(Font,Size)]=result + * while len(_fonts) > 1500: + * _fonts.pop(random.sample(_fonts.keys(),1)[0]) #If cache is full evict old versions # <<<<<<<<<<<<<< + * return result + * + */ + __pyx_t_1 = __Pyx_GetModuleGlobalName(__pyx_n_s_fonts); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 37, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_1); + __pyx_t_2 = __Pyx_PyObject_GetAttrStr(__pyx_t_1, __pyx_n_s_pop); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 37, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_2); + __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; + __pyx_t_5 = __Pyx_GetModuleGlobalName(__pyx_n_s_random); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 37, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_5); + __pyx_t_4 = __Pyx_PyObject_GetAttrStr(__pyx_t_5, __pyx_n_s_sample); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 37, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_4); + __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0; + __pyx_t_9 = __Pyx_GetModuleGlobalName(__pyx_n_s_fonts); if (unlikely(!__pyx_t_9)) __PYX_ERR(0, 37, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_9); + __pyx_t_10 = __Pyx_PyObject_GetAttrStr(__pyx_t_9, __pyx_n_s_keys); if (unlikely(!__pyx_t_10)) __PYX_ERR(0, 37, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_10); + __Pyx_DECREF(__pyx_t_9); __pyx_t_9 = 0; + __pyx_t_9 = NULL; + if (CYTHON_UNPACK_METHODS && unlikely(PyMethod_Check(__pyx_t_10))) { + __pyx_t_9 = PyMethod_GET_SELF(__pyx_t_10); + if (likely(__pyx_t_9)) { + PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_10); + __Pyx_INCREF(__pyx_t_9); + __Pyx_INCREF(function); + __Pyx_DECREF_SET(__pyx_t_10, function); + } + } + if (__pyx_t_9) { + __pyx_t_5 = __Pyx_PyObject_CallOneArg(__pyx_t_10, __pyx_t_9); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 37, __pyx_L1_error) + __Pyx_DECREF(__pyx_t_9); __pyx_t_9 = 0; + } else { + __pyx_t_5 = __Pyx_PyObject_CallNoArg(__pyx_t_10); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 37, __pyx_L1_error) + } + __Pyx_GOTREF(__pyx_t_5); + __Pyx_DECREF(__pyx_t_10); __pyx_t_10 = 0; + __pyx_t_10 = NULL; + __pyx_t_7 = 0; + if (CYTHON_UNPACK_METHODS && unlikely(PyMethod_Check(__pyx_t_4))) { + __pyx_t_10 = PyMethod_GET_SELF(__pyx_t_4); + if (likely(__pyx_t_10)) { + PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_4); + __Pyx_INCREF(__pyx_t_10); + __Pyx_INCREF(function); + __Pyx_DECREF_SET(__pyx_t_4, function); + __pyx_t_7 = 1; + } + } + #if CYTHON_FAST_PYCALL + if (PyFunction_Check(__pyx_t_4)) { + PyObject *__pyx_temp[3] = {__pyx_t_10, __pyx_t_5, __pyx_int_1}; + __pyx_t_1 = __Pyx_PyFunction_FastCall(__pyx_t_4, __pyx_temp+1-__pyx_t_7, 2+__pyx_t_7); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 37, __pyx_L1_error) + __Pyx_XDECREF(__pyx_t_10); __pyx_t_10 = 0; + __Pyx_GOTREF(__pyx_t_1); + __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0; + } else + #endif + #if CYTHON_FAST_PYCCALL + if (__Pyx_PyFastCFunction_Check(__pyx_t_4)) { + PyObject *__pyx_temp[3] = {__pyx_t_10, __pyx_t_5, __pyx_int_1}; + __pyx_t_1 = __Pyx_PyCFunction_FastCall(__pyx_t_4, __pyx_temp+1-__pyx_t_7, 2+__pyx_t_7); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 37, __pyx_L1_error) + __Pyx_XDECREF(__pyx_t_10); __pyx_t_10 = 0; + __Pyx_GOTREF(__pyx_t_1); + __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0; + } else + #endif + { + __pyx_t_9 = PyTuple_New(2+__pyx_t_7); if (unlikely(!__pyx_t_9)) __PYX_ERR(0, 37, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_9); + if (__pyx_t_10) { + __Pyx_GIVEREF(__pyx_t_10); PyTuple_SET_ITEM(__pyx_t_9, 0, __pyx_t_10); __pyx_t_10 = NULL; + } + __Pyx_GIVEREF(__pyx_t_5); + PyTuple_SET_ITEM(__pyx_t_9, 0+__pyx_t_7, __pyx_t_5); + __Pyx_INCREF(__pyx_int_1); + __Pyx_GIVEREF(__pyx_int_1); + PyTuple_SET_ITEM(__pyx_t_9, 1+__pyx_t_7, __pyx_int_1); + __pyx_t_5 = 0; + __pyx_t_1 = __Pyx_PyObject_Call(__pyx_t_4, __pyx_t_9, NULL); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 37, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_1); + __Pyx_DECREF(__pyx_t_9); __pyx_t_9 = 0; + } + __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0; + __pyx_t_4 = __Pyx_GetItemInt(__pyx_t_1, 0, long, 1, __Pyx_PyInt_From_long, 0, 0, 0); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 37, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_4); + __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; + __pyx_t_1 = NULL; + if (CYTHON_UNPACK_METHODS && unlikely(PyMethod_Check(__pyx_t_2))) { + __pyx_t_1 = PyMethod_GET_SELF(__pyx_t_2); + if (likely(__pyx_t_1)) { + PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_2); + __Pyx_INCREF(__pyx_t_1); + __Pyx_INCREF(function); + __Pyx_DECREF_SET(__pyx_t_2, function); + } + } + if (!__pyx_t_1) { + __pyx_t_3 = __Pyx_PyObject_CallOneArg(__pyx_t_2, __pyx_t_4); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 37, __pyx_L1_error) + __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0; + __Pyx_GOTREF(__pyx_t_3); + } else { + #if CYTHON_FAST_PYCALL + if (PyFunction_Check(__pyx_t_2)) { + PyObject *__pyx_temp[2] = {__pyx_t_1, __pyx_t_4}; + __pyx_t_3 = __Pyx_PyFunction_FastCall(__pyx_t_2, __pyx_temp+1-1, 1+1); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 37, __pyx_L1_error) + __Pyx_XDECREF(__pyx_t_1); __pyx_t_1 = 0; + __Pyx_GOTREF(__pyx_t_3); + __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0; + } else + #endif + #if CYTHON_FAST_PYCCALL + if (__Pyx_PyFastCFunction_Check(__pyx_t_2)) { + PyObject *__pyx_temp[2] = {__pyx_t_1, __pyx_t_4}; + __pyx_t_3 = __Pyx_PyCFunction_FastCall(__pyx_t_2, __pyx_temp+1-1, 1+1); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 37, __pyx_L1_error) + __Pyx_XDECREF(__pyx_t_1); __pyx_t_1 = 0; + __Pyx_GOTREF(__pyx_t_3); + __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0; + } else + #endif + { + __pyx_t_9 = PyTuple_New(1+1); if (unlikely(!__pyx_t_9)) __PYX_ERR(0, 37, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_9); + __Pyx_GIVEREF(__pyx_t_1); PyTuple_SET_ITEM(__pyx_t_9, 0, __pyx_t_1); __pyx_t_1 = NULL; + __Pyx_GIVEREF(__pyx_t_4); + PyTuple_SET_ITEM(__pyx_t_9, 0+1, __pyx_t_4); + __pyx_t_4 = 0; + __pyx_t_3 = __Pyx_PyObject_Call(__pyx_t_2, __pyx_t_9, NULL); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 37, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_3); + __Pyx_DECREF(__pyx_t_9); __pyx_t_9 = 0; + } + } + __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; + __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; + } + + /* "CAStar/AATC_Monitor_Viewer.pyx":38 + * while len(_fonts) > 1500: + * _fonts.pop(random.sample(_fonts.keys(),1)[0]) #If cache is full evict old versions + * return result # <<<<<<<<<<<<<< + * + * + */ + __Pyx_XDECREF(__pyx_r); + __Pyx_INCREF(__pyx_v_result); + __pyx_r = __pyx_v_result; + goto __pyx_L0; + + /* "CAStar/AATC_Monitor_Viewer.pyx":31 + * + * _fonts = {} + * def GetFont(Font,Size): # <<<<<<<<<<<<<< + * result = _fonts.get((Font,Size)) + * if result == None: + */ + + /* function exit code */ + __pyx_L1_error:; + __Pyx_XDECREF(__pyx_t_1); + __Pyx_XDECREF(__pyx_t_2); + __Pyx_XDECREF(__pyx_t_3); + __Pyx_XDECREF(__pyx_t_4); + __Pyx_XDECREF(__pyx_t_5); + __Pyx_XDECREF(__pyx_t_9); + __Pyx_XDECREF(__pyx_t_10); + __Pyx_AddTraceback("CAStar.AATC_Monitor_Viewer.GetFont", __pyx_clineno, __pyx_lineno, __pyx_filename); + __pyx_r = NULL; + __pyx_L0:; + __Pyx_XDECREF(__pyx_v_result); + __Pyx_XGIVEREF(__pyx_r); + __Pyx_RefNannyFinishContext(); + return __pyx_r; +} + +/* "CAStar/AATC_Monitor_Viewer.pyx":41 + * + * + * cdef int MaxLimit( int value, int Max): # <<<<<<<<<<<<<< + * if value > Max: + * value = Max + */ + +static int __pyx_f_6CAStar_19AATC_Monitor_Viewer_MaxLimit(int __pyx_v_value, int __pyx_v_Max) { + int __pyx_r; + __Pyx_RefNannyDeclarations + int __pyx_t_1; + __Pyx_RefNannySetupContext("MaxLimit", 0); + + /* "CAStar/AATC_Monitor_Viewer.pyx":42 + * + * cdef int MaxLimit( int value, int Max): + * if value > Max: # <<<<<<<<<<<<<< + * value = Max + * return value + */ + __pyx_t_1 = ((__pyx_v_value > __pyx_v_Max) != 0); + if (__pyx_t_1) { + + /* "CAStar/AATC_Monitor_Viewer.pyx":43 + * cdef int MaxLimit( int value, int Max): + * if value > Max: + * value = Max # <<<<<<<<<<<<<< + * return value + * + */ + __pyx_v_value = __pyx_v_Max; + + /* "CAStar/AATC_Monitor_Viewer.pyx":42 + * + * cdef int MaxLimit( int value, int Max): + * if value > Max: # <<<<<<<<<<<<<< + * value = Max + * return value + */ + } + + /* "CAStar/AATC_Monitor_Viewer.pyx":44 + * if value > Max: + * value = Max + * return value # <<<<<<<<<<<<<< + * + * + */ + __pyx_r = __pyx_v_value; + goto __pyx_L0; + + /* "CAStar/AATC_Monitor_Viewer.pyx":41 + * + * + * cdef int MaxLimit( int value, int Max): # <<<<<<<<<<<<<< + * if value > Max: + * value = Max + */ + + /* function exit code */ + __pyx_L0:; + __Pyx_RefNannyFinishContext(); + return __pyx_r; +} + +/* "CAStar/AATC_Monitor_Viewer.pyx":49 + * + * class Camera: + * def __init__(self,xpixel,ypixel,MinCoords,MaxCoords): #COORDS (X,Y,Z) # <<<<<<<<<<<<<< + * self.xpixel = xpixel + * self.ypixel = ypixel + */ + +/* Python wrapper */ +static PyObject *__pyx_pw_6CAStar_19AATC_Monitor_Viewer_6Camera_1__init__(PyObject *__pyx_self, PyObject *__pyx_args, PyObject *__pyx_kwds); /*proto*/ +static PyMethodDef __pyx_mdef_6CAStar_19AATC_Monitor_Viewer_6Camera_1__init__ = {"__init__", (PyCFunction)__pyx_pw_6CAStar_19AATC_Monitor_Viewer_6Camera_1__init__, METH_VARARGS|METH_KEYWORDS, 0}; +static PyObject *__pyx_pw_6CAStar_19AATC_Monitor_Viewer_6Camera_1__init__(PyObject *__pyx_self, PyObject *__pyx_args, PyObject *__pyx_kwds) { + PyObject *__pyx_v_self = 0; + PyObject *__pyx_v_xpixel = 0; + PyObject *__pyx_v_ypixel = 0; + PyObject *__pyx_v_MinCoords = 0; + PyObject *__pyx_v_MaxCoords = 0; + PyObject *__pyx_r = 0; + __Pyx_RefNannyDeclarations + __Pyx_RefNannySetupContext("__init__ (wrapper)", 0); + { + static PyObject **__pyx_pyargnames[] = {&__pyx_n_s_self,&__pyx_n_s_xpixel,&__pyx_n_s_ypixel,&__pyx_n_s_MinCoords,&__pyx_n_s_MaxCoords,0}; + PyObject* values[5] = {0,0,0,0,0}; + if (unlikely(__pyx_kwds)) { + Py_ssize_t kw_args; + const Py_ssize_t pos_args = PyTuple_GET_SIZE(__pyx_args); + switch (pos_args) { + case 5: values[4] = PyTuple_GET_ITEM(__pyx_args, 4); + CYTHON_FALLTHROUGH; + case 4: values[3] = PyTuple_GET_ITEM(__pyx_args, 3); + CYTHON_FALLTHROUGH; + case 3: values[2] = PyTuple_GET_ITEM(__pyx_args, 2); + CYTHON_FALLTHROUGH; + case 2: values[1] = PyTuple_GET_ITEM(__pyx_args, 1); + CYTHON_FALLTHROUGH; + case 1: values[0] = PyTuple_GET_ITEM(__pyx_args, 0); + CYTHON_FALLTHROUGH; + case 0: break; + default: goto __pyx_L5_argtuple_error; + } + kw_args = PyDict_Size(__pyx_kwds); + switch (pos_args) { + case 0: + if (likely((values[0] = PyDict_GetItem(__pyx_kwds, __pyx_n_s_self)) != 0)) kw_args--; + else goto __pyx_L5_argtuple_error; + CYTHON_FALLTHROUGH; + case 1: + if (likely((values[1] = PyDict_GetItem(__pyx_kwds, __pyx_n_s_xpixel)) != 0)) kw_args--; + else { + __Pyx_RaiseArgtupleInvalid("__init__", 1, 5, 5, 1); __PYX_ERR(0, 49, __pyx_L3_error) + } + CYTHON_FALLTHROUGH; + case 2: + if (likely((values[2] = PyDict_GetItem(__pyx_kwds, __pyx_n_s_ypixel)) != 0)) kw_args--; + else { + __Pyx_RaiseArgtupleInvalid("__init__", 1, 5, 5, 2); __PYX_ERR(0, 49, __pyx_L3_error) + } + CYTHON_FALLTHROUGH; + case 3: + if (likely((values[3] = PyDict_GetItem(__pyx_kwds, __pyx_n_s_MinCoords)) != 0)) kw_args--; + else { + __Pyx_RaiseArgtupleInvalid("__init__", 1, 5, 5, 3); __PYX_ERR(0, 49, __pyx_L3_error) + } + CYTHON_FALLTHROUGH; + case 4: + if (likely((values[4] = PyDict_GetItem(__pyx_kwds, __pyx_n_s_MaxCoords)) != 0)) kw_args--; + else { + __Pyx_RaiseArgtupleInvalid("__init__", 1, 5, 5, 4); __PYX_ERR(0, 49, __pyx_L3_error) + } + } + if (unlikely(kw_args > 0)) { + if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_pyargnames, 0, values, pos_args, "__init__") < 0)) __PYX_ERR(0, 49, __pyx_L3_error) + } + } else if (PyTuple_GET_SIZE(__pyx_args) != 5) { + goto __pyx_L5_argtuple_error; + } else { + values[0] = PyTuple_GET_ITEM(__pyx_args, 0); + values[1] = PyTuple_GET_ITEM(__pyx_args, 1); + values[2] = PyTuple_GET_ITEM(__pyx_args, 2); + values[3] = PyTuple_GET_ITEM(__pyx_args, 3); + values[4] = PyTuple_GET_ITEM(__pyx_args, 4); + } + __pyx_v_self = values[0]; + __pyx_v_xpixel = values[1]; + __pyx_v_ypixel = values[2]; + __pyx_v_MinCoords = values[3]; + __pyx_v_MaxCoords = values[4]; + } + goto __pyx_L4_argument_unpacking_done; + __pyx_L5_argtuple_error:; + __Pyx_RaiseArgtupleInvalid("__init__", 1, 5, 5, PyTuple_GET_SIZE(__pyx_args)); __PYX_ERR(0, 49, __pyx_L3_error) + __pyx_L3_error:; + __Pyx_AddTraceback("CAStar.AATC_Monitor_Viewer.Camera.__init__", __pyx_clineno, __pyx_lineno, __pyx_filename); + __Pyx_RefNannyFinishContext(); + return NULL; + __pyx_L4_argument_unpacking_done:; + __pyx_r = __pyx_pf_6CAStar_19AATC_Monitor_Viewer_6Camera___init__(__pyx_self, __pyx_v_self, __pyx_v_xpixel, __pyx_v_ypixel, __pyx_v_MinCoords, __pyx_v_MaxCoords); + + /* function exit code */ + __Pyx_RefNannyFinishContext(); + return __pyx_r; +} + +static PyObject *__pyx_pf_6CAStar_19AATC_Monitor_Viewer_6Camera___init__(CYTHON_UNUSED PyObject *__pyx_self, PyObject *__pyx_v_self, PyObject *__pyx_v_xpixel, PyObject *__pyx_v_ypixel, PyObject *__pyx_v_MinCoords, PyObject *__pyx_v_MaxCoords) { + PyObject *__pyx_r = NULL; + __Pyx_RefNannyDeclarations + PyObject *__pyx_t_1 = NULL; + PyObject *__pyx_t_2 = NULL; + PyObject *__pyx_t_3 = NULL; + PyObject *__pyx_t_4 = NULL; + PyObject *__pyx_t_5 = NULL; + PyObject *__pyx_t_6 = NULL; + __Pyx_RefNannySetupContext("__init__", 0); + + /* "CAStar/AATC_Monitor_Viewer.pyx":50 + * class Camera: + * def __init__(self,xpixel,ypixel,MinCoords,MaxCoords): #COORDS (X,Y,Z) + * self.xpixel = xpixel # <<<<<<<<<<<<<< + * self.ypixel = ypixel + * self.gameDisplay = pygame.display.set_mode((self.xpixel,self.ypixel)) + */ + if (__Pyx_PyObject_SetAttrStr(__pyx_v_self, __pyx_n_s_xpixel, __pyx_v_xpixel) < 0) __PYX_ERR(0, 50, __pyx_L1_error) + + /* "CAStar/AATC_Monitor_Viewer.pyx":51 + * def __init__(self,xpixel,ypixel,MinCoords,MaxCoords): #COORDS (X,Y,Z) + * self.xpixel = xpixel + * self.ypixel = ypixel # <<<<<<<<<<<<<< + * self.gameDisplay = pygame.display.set_mode((self.xpixel,self.ypixel)) + * self.MinCoords = MinCoords + */ + if (__Pyx_PyObject_SetAttrStr(__pyx_v_self, __pyx_n_s_ypixel, __pyx_v_ypixel) < 0) __PYX_ERR(0, 51, __pyx_L1_error) + + /* "CAStar/AATC_Monitor_Viewer.pyx":52 + * self.xpixel = xpixel + * self.ypixel = ypixel + * self.gameDisplay = pygame.display.set_mode((self.xpixel,self.ypixel)) # <<<<<<<<<<<<<< + * self.MinCoords = MinCoords + * self.MaxCoords = MaxCoords + */ + __pyx_t_2 = __Pyx_GetModuleGlobalName(__pyx_n_s_pygame); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 52, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_2); + __pyx_t_3 = __Pyx_PyObject_GetAttrStr(__pyx_t_2, __pyx_n_s_display); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 52, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_3); + __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; + __pyx_t_2 = __Pyx_PyObject_GetAttrStr(__pyx_t_3, __pyx_n_s_set_mode); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 52, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_2); + __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; + __pyx_t_3 = __Pyx_PyObject_GetAttrStr(__pyx_v_self, __pyx_n_s_xpixel); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 52, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_3); + __pyx_t_4 = __Pyx_PyObject_GetAttrStr(__pyx_v_self, __pyx_n_s_ypixel); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 52, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_4); + __pyx_t_5 = PyTuple_New(2); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 52, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_5); + __Pyx_GIVEREF(__pyx_t_3); + PyTuple_SET_ITEM(__pyx_t_5, 0, __pyx_t_3); + __Pyx_GIVEREF(__pyx_t_4); + PyTuple_SET_ITEM(__pyx_t_5, 1, __pyx_t_4); + __pyx_t_3 = 0; + __pyx_t_4 = 0; + __pyx_t_4 = NULL; + if (CYTHON_UNPACK_METHODS && likely(PyMethod_Check(__pyx_t_2))) { + __pyx_t_4 = PyMethod_GET_SELF(__pyx_t_2); + if (likely(__pyx_t_4)) { + PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_2); + __Pyx_INCREF(__pyx_t_4); + __Pyx_INCREF(function); + __Pyx_DECREF_SET(__pyx_t_2, function); + } + } + if (!__pyx_t_4) { + __pyx_t_1 = __Pyx_PyObject_CallOneArg(__pyx_t_2, __pyx_t_5); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 52, __pyx_L1_error) + __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0; + __Pyx_GOTREF(__pyx_t_1); + } else { + #if CYTHON_FAST_PYCALL + if (PyFunction_Check(__pyx_t_2)) { + PyObject *__pyx_temp[2] = {__pyx_t_4, __pyx_t_5}; + __pyx_t_1 = __Pyx_PyFunction_FastCall(__pyx_t_2, __pyx_temp+1-1, 1+1); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 52, __pyx_L1_error) + __Pyx_XDECREF(__pyx_t_4); __pyx_t_4 = 0; + __Pyx_GOTREF(__pyx_t_1); + __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0; + } else + #endif + #if CYTHON_FAST_PYCCALL + if (__Pyx_PyFastCFunction_Check(__pyx_t_2)) { + PyObject *__pyx_temp[2] = {__pyx_t_4, __pyx_t_5}; + __pyx_t_1 = __Pyx_PyCFunction_FastCall(__pyx_t_2, __pyx_temp+1-1, 1+1); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 52, __pyx_L1_error) + __Pyx_XDECREF(__pyx_t_4); __pyx_t_4 = 0; + __Pyx_GOTREF(__pyx_t_1); + __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0; + } else + #endif + { + __pyx_t_3 = PyTuple_New(1+1); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 52, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_3); + __Pyx_GIVEREF(__pyx_t_4); PyTuple_SET_ITEM(__pyx_t_3, 0, __pyx_t_4); __pyx_t_4 = NULL; + __Pyx_GIVEREF(__pyx_t_5); + PyTuple_SET_ITEM(__pyx_t_3, 0+1, __pyx_t_5); + __pyx_t_5 = 0; + __pyx_t_1 = __Pyx_PyObject_Call(__pyx_t_2, __pyx_t_3, NULL); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 52, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_1); + __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; + } + } + __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; + if (__Pyx_PyObject_SetAttrStr(__pyx_v_self, __pyx_n_s_gameDisplay, __pyx_t_1) < 0) __PYX_ERR(0, 52, __pyx_L1_error) + __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; + + /* "CAStar/AATC_Monitor_Viewer.pyx":53 + * self.ypixel = ypixel + * self.gameDisplay = pygame.display.set_mode((self.xpixel,self.ypixel)) + * self.MinCoords = MinCoords # <<<<<<<<<<<<<< + * self.MaxCoords = MaxCoords + * self.CameraCoord = self.MinCoords.copy() + */ + if (__Pyx_PyObject_SetAttrStr(__pyx_v_self, __pyx_n_s_MinCoords, __pyx_v_MinCoords) < 0) __PYX_ERR(0, 53, __pyx_L1_error) + + /* "CAStar/AATC_Monitor_Viewer.pyx":54 + * self.gameDisplay = pygame.display.set_mode((self.xpixel,self.ypixel)) + * self.MinCoords = MinCoords + * self.MaxCoords = MaxCoords # <<<<<<<<<<<<<< + * self.CameraCoord = self.MinCoords.copy() + * self.CameraCoord.Set_XSize( self.MaxCoords.Get_X() - self.MinCoords.Get_X()) + */ + if (__Pyx_PyObject_SetAttrStr(__pyx_v_self, __pyx_n_s_MaxCoords, __pyx_v_MaxCoords) < 0) __PYX_ERR(0, 54, __pyx_L1_error) + + /* "CAStar/AATC_Monitor_Viewer.pyx":55 + * self.MinCoords = MinCoords + * self.MaxCoords = MaxCoords + * self.CameraCoord = self.MinCoords.copy() # <<<<<<<<<<<<<< + * self.CameraCoord.Set_XSize( self.MaxCoords.Get_X() - self.MinCoords.Get_X()) + * self.CameraCoord.Set_YSize( self.MaxCoords.Get_Y() - self.MinCoords.Get_Y()) + */ + __pyx_t_2 = __Pyx_PyObject_GetAttrStr(__pyx_v_self, __pyx_n_s_MinCoords); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 55, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_2); + __pyx_t_3 = __Pyx_PyObject_GetAttrStr(__pyx_t_2, __pyx_n_s_copy); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 55, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_3); + __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; + __pyx_t_2 = NULL; + if (CYTHON_UNPACK_METHODS && likely(PyMethod_Check(__pyx_t_3))) { + __pyx_t_2 = PyMethod_GET_SELF(__pyx_t_3); + if (likely(__pyx_t_2)) { + PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_3); + __Pyx_INCREF(__pyx_t_2); + __Pyx_INCREF(function); + __Pyx_DECREF_SET(__pyx_t_3, function); + } + } + if (__pyx_t_2) { + __pyx_t_1 = __Pyx_PyObject_CallOneArg(__pyx_t_3, __pyx_t_2); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 55, __pyx_L1_error) + __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; + } else { + __pyx_t_1 = __Pyx_PyObject_CallNoArg(__pyx_t_3); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 55, __pyx_L1_error) + } + __Pyx_GOTREF(__pyx_t_1); + __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; + if (__Pyx_PyObject_SetAttrStr(__pyx_v_self, __pyx_n_s_CameraCoord, __pyx_t_1) < 0) __PYX_ERR(0, 55, __pyx_L1_error) + __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; + + /* "CAStar/AATC_Monitor_Viewer.pyx":56 + * self.MaxCoords = MaxCoords + * self.CameraCoord = self.MinCoords.copy() + * self.CameraCoord.Set_XSize( self.MaxCoords.Get_X() - self.MinCoords.Get_X()) # <<<<<<<<<<<<<< + * self.CameraCoord.Set_YSize( self.MaxCoords.Get_Y() - self.MinCoords.Get_Y()) + * self.CameraZoom = 1 + */ + __pyx_t_3 = __Pyx_PyObject_GetAttrStr(__pyx_v_self, __pyx_n_s_CameraCoord); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 56, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_3); + __pyx_t_2 = __Pyx_PyObject_GetAttrStr(__pyx_t_3, __pyx_n_s_Set_XSize); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 56, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_2); + __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; + __pyx_t_5 = __Pyx_PyObject_GetAttrStr(__pyx_v_self, __pyx_n_s_MaxCoords); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 56, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_5); + __pyx_t_4 = __Pyx_PyObject_GetAttrStr(__pyx_t_5, __pyx_n_s_Get_X); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 56, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_4); + __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0; + __pyx_t_5 = NULL; + if (CYTHON_UNPACK_METHODS && likely(PyMethod_Check(__pyx_t_4))) { + __pyx_t_5 = PyMethod_GET_SELF(__pyx_t_4); + if (likely(__pyx_t_5)) { + PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_4); + __Pyx_INCREF(__pyx_t_5); + __Pyx_INCREF(function); + __Pyx_DECREF_SET(__pyx_t_4, function); + } + } + if (__pyx_t_5) { + __pyx_t_3 = __Pyx_PyObject_CallOneArg(__pyx_t_4, __pyx_t_5); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 56, __pyx_L1_error) + __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0; + } else { + __pyx_t_3 = __Pyx_PyObject_CallNoArg(__pyx_t_4); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 56, __pyx_L1_error) + } + __Pyx_GOTREF(__pyx_t_3); + __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0; + __pyx_t_5 = __Pyx_PyObject_GetAttrStr(__pyx_v_self, __pyx_n_s_MinCoords); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 56, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_5); + __pyx_t_6 = __Pyx_PyObject_GetAttrStr(__pyx_t_5, __pyx_n_s_Get_X); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 56, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_6); + __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0; + __pyx_t_5 = NULL; + if (CYTHON_UNPACK_METHODS && likely(PyMethod_Check(__pyx_t_6))) { + __pyx_t_5 = PyMethod_GET_SELF(__pyx_t_6); + if (likely(__pyx_t_5)) { + PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_6); + __Pyx_INCREF(__pyx_t_5); + __Pyx_INCREF(function); + __Pyx_DECREF_SET(__pyx_t_6, function); + } + } + if (__pyx_t_5) { + __pyx_t_4 = __Pyx_PyObject_CallOneArg(__pyx_t_6, __pyx_t_5); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 56, __pyx_L1_error) + __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0; + } else { + __pyx_t_4 = __Pyx_PyObject_CallNoArg(__pyx_t_6); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 56, __pyx_L1_error) + } + __Pyx_GOTREF(__pyx_t_4); + __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0; + __pyx_t_6 = PyNumber_Subtract(__pyx_t_3, __pyx_t_4); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 56, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_6); + __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; + __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0; + __pyx_t_4 = NULL; + if (CYTHON_UNPACK_METHODS && likely(PyMethod_Check(__pyx_t_2))) { + __pyx_t_4 = PyMethod_GET_SELF(__pyx_t_2); + if (likely(__pyx_t_4)) { + PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_2); + __Pyx_INCREF(__pyx_t_4); + __Pyx_INCREF(function); + __Pyx_DECREF_SET(__pyx_t_2, function); + } + } + if (!__pyx_t_4) { + __pyx_t_1 = __Pyx_PyObject_CallOneArg(__pyx_t_2, __pyx_t_6); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 56, __pyx_L1_error) + __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0; + __Pyx_GOTREF(__pyx_t_1); + } else { + #if CYTHON_FAST_PYCALL + if (PyFunction_Check(__pyx_t_2)) { + PyObject *__pyx_temp[2] = {__pyx_t_4, __pyx_t_6}; + __pyx_t_1 = __Pyx_PyFunction_FastCall(__pyx_t_2, __pyx_temp+1-1, 1+1); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 56, __pyx_L1_error) + __Pyx_XDECREF(__pyx_t_4); __pyx_t_4 = 0; + __Pyx_GOTREF(__pyx_t_1); + __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0; + } else + #endif + #if CYTHON_FAST_PYCCALL + if (__Pyx_PyFastCFunction_Check(__pyx_t_2)) { + PyObject *__pyx_temp[2] = {__pyx_t_4, __pyx_t_6}; + __pyx_t_1 = __Pyx_PyCFunction_FastCall(__pyx_t_2, __pyx_temp+1-1, 1+1); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 56, __pyx_L1_error) + __Pyx_XDECREF(__pyx_t_4); __pyx_t_4 = 0; + __Pyx_GOTREF(__pyx_t_1); + __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0; + } else + #endif + { + __pyx_t_3 = PyTuple_New(1+1); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 56, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_3); + __Pyx_GIVEREF(__pyx_t_4); PyTuple_SET_ITEM(__pyx_t_3, 0, __pyx_t_4); __pyx_t_4 = NULL; + __Pyx_GIVEREF(__pyx_t_6); + PyTuple_SET_ITEM(__pyx_t_3, 0+1, __pyx_t_6); + __pyx_t_6 = 0; + __pyx_t_1 = __Pyx_PyObject_Call(__pyx_t_2, __pyx_t_3, NULL); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 56, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_1); + __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; + } + } + __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; + __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; + + /* "CAStar/AATC_Monitor_Viewer.pyx":57 + * self.CameraCoord = self.MinCoords.copy() + * self.CameraCoord.Set_XSize( self.MaxCoords.Get_X() - self.MinCoords.Get_X()) + * self.CameraCoord.Set_YSize( self.MaxCoords.Get_Y() - self.MinCoords.Get_Y()) # <<<<<<<<<<<<<< + * self.CameraZoom = 1 + * self.DrawObjects = [] + */ + __pyx_t_2 = __Pyx_PyObject_GetAttrStr(__pyx_v_self, __pyx_n_s_CameraCoord); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 57, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_2); + __pyx_t_3 = __Pyx_PyObject_GetAttrStr(__pyx_t_2, __pyx_n_s_Set_YSize); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 57, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_3); + __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; + __pyx_t_6 = __Pyx_PyObject_GetAttrStr(__pyx_v_self, __pyx_n_s_MaxCoords); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 57, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_6); + __pyx_t_4 = __Pyx_PyObject_GetAttrStr(__pyx_t_6, __pyx_n_s_Get_Y); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 57, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_4); + __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0; + __pyx_t_6 = NULL; + if (CYTHON_UNPACK_METHODS && likely(PyMethod_Check(__pyx_t_4))) { + __pyx_t_6 = PyMethod_GET_SELF(__pyx_t_4); + if (likely(__pyx_t_6)) { + PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_4); + __Pyx_INCREF(__pyx_t_6); + __Pyx_INCREF(function); + __Pyx_DECREF_SET(__pyx_t_4, function); + } + } + if (__pyx_t_6) { + __pyx_t_2 = __Pyx_PyObject_CallOneArg(__pyx_t_4, __pyx_t_6); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 57, __pyx_L1_error) + __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0; + } else { + __pyx_t_2 = __Pyx_PyObject_CallNoArg(__pyx_t_4); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 57, __pyx_L1_error) + } + __Pyx_GOTREF(__pyx_t_2); + __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0; + __pyx_t_6 = __Pyx_PyObject_GetAttrStr(__pyx_v_self, __pyx_n_s_MinCoords); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 57, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_6); + __pyx_t_5 = __Pyx_PyObject_GetAttrStr(__pyx_t_6, __pyx_n_s_Get_Y); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 57, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_5); + __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0; + __pyx_t_6 = NULL; + if (CYTHON_UNPACK_METHODS && likely(PyMethod_Check(__pyx_t_5))) { + __pyx_t_6 = PyMethod_GET_SELF(__pyx_t_5); + if (likely(__pyx_t_6)) { + PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_5); + __Pyx_INCREF(__pyx_t_6); + __Pyx_INCREF(function); + __Pyx_DECREF_SET(__pyx_t_5, function); + } + } + if (__pyx_t_6) { + __pyx_t_4 = __Pyx_PyObject_CallOneArg(__pyx_t_5, __pyx_t_6); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 57, __pyx_L1_error) + __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0; + } else { + __pyx_t_4 = __Pyx_PyObject_CallNoArg(__pyx_t_5); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 57, __pyx_L1_error) + } + __Pyx_GOTREF(__pyx_t_4); + __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0; + __pyx_t_5 = PyNumber_Subtract(__pyx_t_2, __pyx_t_4); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 57, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_5); + __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; + __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0; + __pyx_t_4 = NULL; + if (CYTHON_UNPACK_METHODS && likely(PyMethod_Check(__pyx_t_3))) { + __pyx_t_4 = PyMethod_GET_SELF(__pyx_t_3); + if (likely(__pyx_t_4)) { + PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_3); + __Pyx_INCREF(__pyx_t_4); + __Pyx_INCREF(function); + __Pyx_DECREF_SET(__pyx_t_3, function); + } + } + if (!__pyx_t_4) { + __pyx_t_1 = __Pyx_PyObject_CallOneArg(__pyx_t_3, __pyx_t_5); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 57, __pyx_L1_error) + __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0; + __Pyx_GOTREF(__pyx_t_1); + } else { + #if CYTHON_FAST_PYCALL + if (PyFunction_Check(__pyx_t_3)) { + PyObject *__pyx_temp[2] = {__pyx_t_4, __pyx_t_5}; + __pyx_t_1 = __Pyx_PyFunction_FastCall(__pyx_t_3, __pyx_temp+1-1, 1+1); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 57, __pyx_L1_error) + __Pyx_XDECREF(__pyx_t_4); __pyx_t_4 = 0; + __Pyx_GOTREF(__pyx_t_1); + __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0; + } else + #endif + #if CYTHON_FAST_PYCCALL + if (__Pyx_PyFastCFunction_Check(__pyx_t_3)) { + PyObject *__pyx_temp[2] = {__pyx_t_4, __pyx_t_5}; + __pyx_t_1 = __Pyx_PyCFunction_FastCall(__pyx_t_3, __pyx_temp+1-1, 1+1); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 57, __pyx_L1_error) + __Pyx_XDECREF(__pyx_t_4); __pyx_t_4 = 0; + __Pyx_GOTREF(__pyx_t_1); + __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0; + } else + #endif + { + __pyx_t_2 = PyTuple_New(1+1); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 57, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_2); + __Pyx_GIVEREF(__pyx_t_4); PyTuple_SET_ITEM(__pyx_t_2, 0, __pyx_t_4); __pyx_t_4 = NULL; + __Pyx_GIVEREF(__pyx_t_5); + PyTuple_SET_ITEM(__pyx_t_2, 0+1, __pyx_t_5); + __pyx_t_5 = 0; + __pyx_t_1 = __Pyx_PyObject_Call(__pyx_t_3, __pyx_t_2, NULL); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 57, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_1); + __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; + } + } + __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; + __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; + + /* "CAStar/AATC_Monitor_Viewer.pyx":58 + * self.CameraCoord.Set_XSize( self.MaxCoords.Get_X() - self.MinCoords.Get_X()) + * self.CameraCoord.Set_YSize( self.MaxCoords.Get_Y() - self.MinCoords.Get_Y()) + * self.CameraZoom = 1 # <<<<<<<<<<<<<< + * self.DrawObjects = [] + * + */ + if (__Pyx_PyObject_SetAttrStr(__pyx_v_self, __pyx_n_s_CameraZoom, __pyx_int_1) < 0) __PYX_ERR(0, 58, __pyx_L1_error) + + /* "CAStar/AATC_Monitor_Viewer.pyx":59 + * self.CameraCoord.Set_YSize( self.MaxCoords.Get_Y() - self.MinCoords.Get_Y()) + * self.CameraZoom = 1 + * self.DrawObjects = [] # <<<<<<<<<<<<<< + * + * def GetZoom(self): + */ + __pyx_t_1 = PyList_New(0); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 59, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_1); + if (__Pyx_PyObject_SetAttrStr(__pyx_v_self, __pyx_n_s_DrawObjects, __pyx_t_1) < 0) __PYX_ERR(0, 59, __pyx_L1_error) + __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; + + /* "CAStar/AATC_Monitor_Viewer.pyx":49 + * + * class Camera: + * def __init__(self,xpixel,ypixel,MinCoords,MaxCoords): #COORDS (X,Y,Z) # <<<<<<<<<<<<<< + * self.xpixel = xpixel + * self.ypixel = ypixel + */ + + /* function exit code */ + __pyx_r = Py_None; __Pyx_INCREF(Py_None); + goto __pyx_L0; + __pyx_L1_error:; + __Pyx_XDECREF(__pyx_t_1); + __Pyx_XDECREF(__pyx_t_2); + __Pyx_XDECREF(__pyx_t_3); + __Pyx_XDECREF(__pyx_t_4); + __Pyx_XDECREF(__pyx_t_5); + __Pyx_XDECREF(__pyx_t_6); + __Pyx_AddTraceback("CAStar.AATC_Monitor_Viewer.Camera.__init__", __pyx_clineno, __pyx_lineno, __pyx_filename); + __pyx_r = NULL; + __pyx_L0:; + __Pyx_XGIVEREF(__pyx_r); + __Pyx_RefNannyFinishContext(); + return __pyx_r; +} + +/* "CAStar/AATC_Monitor_Viewer.pyx":61 + * self.DrawObjects = [] + * + * def GetZoom(self): # <<<<<<<<<<<<<< + * return self.CameraZoom + * def SetZoom(self,Zoom): + */ + +/* Python wrapper */ +static PyObject *__pyx_pw_6CAStar_19AATC_Monitor_Viewer_6Camera_3GetZoom(PyObject *__pyx_self, PyObject *__pyx_v_self); /*proto*/ +static PyMethodDef __pyx_mdef_6CAStar_19AATC_Monitor_Viewer_6Camera_3GetZoom = {"GetZoom", (PyCFunction)__pyx_pw_6CAStar_19AATC_Monitor_Viewer_6Camera_3GetZoom, METH_O, 0}; +static PyObject *__pyx_pw_6CAStar_19AATC_Monitor_Viewer_6Camera_3GetZoom(PyObject *__pyx_self, PyObject *__pyx_v_self) { + PyObject *__pyx_r = 0; + __Pyx_RefNannyDeclarations + __Pyx_RefNannySetupContext("GetZoom (wrapper)", 0); + __pyx_r = __pyx_pf_6CAStar_19AATC_Monitor_Viewer_6Camera_2GetZoom(__pyx_self, ((PyObject *)__pyx_v_self)); + + /* function exit code */ + __Pyx_RefNannyFinishContext(); + return __pyx_r; +} + +static PyObject *__pyx_pf_6CAStar_19AATC_Monitor_Viewer_6Camera_2GetZoom(CYTHON_UNUSED PyObject *__pyx_self, PyObject *__pyx_v_self) { + PyObject *__pyx_r = NULL; + __Pyx_RefNannyDeclarations + PyObject *__pyx_t_1 = NULL; + __Pyx_RefNannySetupContext("GetZoom", 0); + + /* "CAStar/AATC_Monitor_Viewer.pyx":62 + * + * def GetZoom(self): + * return self.CameraZoom # <<<<<<<<<<<<<< + * def SetZoom(self,Zoom): + * self.CameraZoom = Zoom + */ + __Pyx_XDECREF(__pyx_r); + __pyx_t_1 = __Pyx_PyObject_GetAttrStr(__pyx_v_self, __pyx_n_s_CameraZoom); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 62, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_1); + __pyx_r = __pyx_t_1; + __pyx_t_1 = 0; + goto __pyx_L0; + + /* "CAStar/AATC_Monitor_Viewer.pyx":61 + * self.DrawObjects = [] + * + * def GetZoom(self): # <<<<<<<<<<<<<< + * return self.CameraZoom + * def SetZoom(self,Zoom): + */ + + /* function exit code */ + __pyx_L1_error:; + __Pyx_XDECREF(__pyx_t_1); + __Pyx_AddTraceback("CAStar.AATC_Monitor_Viewer.Camera.GetZoom", __pyx_clineno, __pyx_lineno, __pyx_filename); + __pyx_r = NULL; + __pyx_L0:; + __Pyx_XGIVEREF(__pyx_r); + __Pyx_RefNannyFinishContext(); + return __pyx_r; +} + +/* "CAStar/AATC_Monitor_Viewer.pyx":63 + * def GetZoom(self): + * return self.CameraZoom + * def SetZoom(self,Zoom): # <<<<<<<<<<<<<< + * self.CameraZoom = Zoom + * + */ + +/* Python wrapper */ +static PyObject *__pyx_pw_6CAStar_19AATC_Monitor_Viewer_6Camera_5SetZoom(PyObject *__pyx_self, PyObject *__pyx_args, PyObject *__pyx_kwds); /*proto*/ +static PyMethodDef __pyx_mdef_6CAStar_19AATC_Monitor_Viewer_6Camera_5SetZoom = {"SetZoom", (PyCFunction)__pyx_pw_6CAStar_19AATC_Monitor_Viewer_6Camera_5SetZoom, METH_VARARGS|METH_KEYWORDS, 0}; +static PyObject *__pyx_pw_6CAStar_19AATC_Monitor_Viewer_6Camera_5SetZoom(PyObject *__pyx_self, PyObject *__pyx_args, PyObject *__pyx_kwds) { + PyObject *__pyx_v_self = 0; + PyObject *__pyx_v_Zoom = 0; + PyObject *__pyx_r = 0; + __Pyx_RefNannyDeclarations + __Pyx_RefNannySetupContext("SetZoom (wrapper)", 0); + { + static PyObject **__pyx_pyargnames[] = {&__pyx_n_s_self,&__pyx_n_s_Zoom,0}; + PyObject* values[2] = {0,0}; + if (unlikely(__pyx_kwds)) { + Py_ssize_t kw_args; + const Py_ssize_t pos_args = PyTuple_GET_SIZE(__pyx_args); + switch (pos_args) { + case 2: values[1] = PyTuple_GET_ITEM(__pyx_args, 1); + CYTHON_FALLTHROUGH; + case 1: values[0] = PyTuple_GET_ITEM(__pyx_args, 0); + CYTHON_FALLTHROUGH; + case 0: break; + default: goto __pyx_L5_argtuple_error; + } + kw_args = PyDict_Size(__pyx_kwds); + switch (pos_args) { + case 0: + if (likely((values[0] = PyDict_GetItem(__pyx_kwds, __pyx_n_s_self)) != 0)) kw_args--; + else goto __pyx_L5_argtuple_error; + CYTHON_FALLTHROUGH; + case 1: + if (likely((values[1] = PyDict_GetItem(__pyx_kwds, __pyx_n_s_Zoom)) != 0)) kw_args--; + else { + __Pyx_RaiseArgtupleInvalid("SetZoom", 1, 2, 2, 1); __PYX_ERR(0, 63, __pyx_L3_error) + } + } + if (unlikely(kw_args > 0)) { + if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_pyargnames, 0, values, pos_args, "SetZoom") < 0)) __PYX_ERR(0, 63, __pyx_L3_error) + } + } else if (PyTuple_GET_SIZE(__pyx_args) != 2) { + goto __pyx_L5_argtuple_error; + } else { + values[0] = PyTuple_GET_ITEM(__pyx_args, 0); + values[1] = PyTuple_GET_ITEM(__pyx_args, 1); + } + __pyx_v_self = values[0]; + __pyx_v_Zoom = values[1]; + } + goto __pyx_L4_argument_unpacking_done; + __pyx_L5_argtuple_error:; + __Pyx_RaiseArgtupleInvalid("SetZoom", 1, 2, 2, PyTuple_GET_SIZE(__pyx_args)); __PYX_ERR(0, 63, __pyx_L3_error) + __pyx_L3_error:; + __Pyx_AddTraceback("CAStar.AATC_Monitor_Viewer.Camera.SetZoom", __pyx_clineno, __pyx_lineno, __pyx_filename); + __Pyx_RefNannyFinishContext(); + return NULL; + __pyx_L4_argument_unpacking_done:; + __pyx_r = __pyx_pf_6CAStar_19AATC_Monitor_Viewer_6Camera_4SetZoom(__pyx_self, __pyx_v_self, __pyx_v_Zoom); + + /* function exit code */ + __Pyx_RefNannyFinishContext(); + return __pyx_r; +} + +static PyObject *__pyx_pf_6CAStar_19AATC_Monitor_Viewer_6Camera_4SetZoom(CYTHON_UNUSED PyObject *__pyx_self, PyObject *__pyx_v_self, PyObject *__pyx_v_Zoom) { + PyObject *__pyx_r = NULL; + __Pyx_RefNannyDeclarations + __Pyx_RefNannySetupContext("SetZoom", 0); + + /* "CAStar/AATC_Monitor_Viewer.pyx":64 + * return self.CameraZoom + * def SetZoom(self,Zoom): + * self.CameraZoom = Zoom # <<<<<<<<<<<<<< + * + * def GetCameraCoords(self): + */ + if (__Pyx_PyObject_SetAttrStr(__pyx_v_self, __pyx_n_s_CameraZoom, __pyx_v_Zoom) < 0) __PYX_ERR(0, 64, __pyx_L1_error) + + /* "CAStar/AATC_Monitor_Viewer.pyx":63 + * def GetZoom(self): + * return self.CameraZoom + * def SetZoom(self,Zoom): # <<<<<<<<<<<<<< + * self.CameraZoom = Zoom + * + */ + + /* function exit code */ + __pyx_r = Py_None; __Pyx_INCREF(Py_None); + goto __pyx_L0; + __pyx_L1_error:; + __Pyx_AddTraceback("CAStar.AATC_Monitor_Viewer.Camera.SetZoom", __pyx_clineno, __pyx_lineno, __pyx_filename); + __pyx_r = NULL; + __pyx_L0:; + __Pyx_XGIVEREF(__pyx_r); + __Pyx_RefNannyFinishContext(); + return __pyx_r; +} + +/* "CAStar/AATC_Monitor_Viewer.pyx":66 + * self.CameraZoom = Zoom + * + * def GetCameraCoords(self): # <<<<<<<<<<<<<< + * return self.CameraCoord + * def IncrementCameraCoordX(self,Amount): + */ + +/* Python wrapper */ +static PyObject *__pyx_pw_6CAStar_19AATC_Monitor_Viewer_6Camera_7GetCameraCoords(PyObject *__pyx_self, PyObject *__pyx_v_self); /*proto*/ +static PyMethodDef __pyx_mdef_6CAStar_19AATC_Monitor_Viewer_6Camera_7GetCameraCoords = {"GetCameraCoords", (PyCFunction)__pyx_pw_6CAStar_19AATC_Monitor_Viewer_6Camera_7GetCameraCoords, METH_O, 0}; +static PyObject *__pyx_pw_6CAStar_19AATC_Monitor_Viewer_6Camera_7GetCameraCoords(PyObject *__pyx_self, PyObject *__pyx_v_self) { + PyObject *__pyx_r = 0; + __Pyx_RefNannyDeclarations + __Pyx_RefNannySetupContext("GetCameraCoords (wrapper)", 0); + __pyx_r = __pyx_pf_6CAStar_19AATC_Monitor_Viewer_6Camera_6GetCameraCoords(__pyx_self, ((PyObject *)__pyx_v_self)); + + /* function exit code */ + __Pyx_RefNannyFinishContext(); + return __pyx_r; +} + +static PyObject *__pyx_pf_6CAStar_19AATC_Monitor_Viewer_6Camera_6GetCameraCoords(CYTHON_UNUSED PyObject *__pyx_self, PyObject *__pyx_v_self) { + PyObject *__pyx_r = NULL; + __Pyx_RefNannyDeclarations + PyObject *__pyx_t_1 = NULL; + __Pyx_RefNannySetupContext("GetCameraCoords", 0); + + /* "CAStar/AATC_Monitor_Viewer.pyx":67 + * + * def GetCameraCoords(self): + * return self.CameraCoord # <<<<<<<<<<<<<< + * def IncrementCameraCoordX(self,Amount): + * self.CameraCoord.Set_X( Amount+self.CameraCoord.Get_X()) + */ + __Pyx_XDECREF(__pyx_r); + __pyx_t_1 = __Pyx_PyObject_GetAttrStr(__pyx_v_self, __pyx_n_s_CameraCoord); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 67, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_1); + __pyx_r = __pyx_t_1; + __pyx_t_1 = 0; + goto __pyx_L0; + + /* "CAStar/AATC_Monitor_Viewer.pyx":66 + * self.CameraZoom = Zoom + * + * def GetCameraCoords(self): # <<<<<<<<<<<<<< + * return self.CameraCoord + * def IncrementCameraCoordX(self,Amount): + */ + + /* function exit code */ + __pyx_L1_error:; + __Pyx_XDECREF(__pyx_t_1); + __Pyx_AddTraceback("CAStar.AATC_Monitor_Viewer.Camera.GetCameraCoords", __pyx_clineno, __pyx_lineno, __pyx_filename); + __pyx_r = NULL; + __pyx_L0:; + __Pyx_XGIVEREF(__pyx_r); + __Pyx_RefNannyFinishContext(); + return __pyx_r; +} + +/* "CAStar/AATC_Monitor_Viewer.pyx":68 + * def GetCameraCoords(self): + * return self.CameraCoord + * def IncrementCameraCoordX(self,Amount): # <<<<<<<<<<<<<< + * self.CameraCoord.Set_X( Amount+self.CameraCoord.Get_X()) + * + */ + +/* Python wrapper */ +static PyObject *__pyx_pw_6CAStar_19AATC_Monitor_Viewer_6Camera_9IncrementCameraCoordX(PyObject *__pyx_self, PyObject *__pyx_args, PyObject *__pyx_kwds); /*proto*/ +static PyMethodDef __pyx_mdef_6CAStar_19AATC_Monitor_Viewer_6Camera_9IncrementCameraCoordX = {"IncrementCameraCoordX", (PyCFunction)__pyx_pw_6CAStar_19AATC_Monitor_Viewer_6Camera_9IncrementCameraCoordX, METH_VARARGS|METH_KEYWORDS, 0}; +static PyObject *__pyx_pw_6CAStar_19AATC_Monitor_Viewer_6Camera_9IncrementCameraCoordX(PyObject *__pyx_self, PyObject *__pyx_args, PyObject *__pyx_kwds) { + PyObject *__pyx_v_self = 0; + PyObject *__pyx_v_Amount = 0; + PyObject *__pyx_r = 0; + __Pyx_RefNannyDeclarations + __Pyx_RefNannySetupContext("IncrementCameraCoordX (wrapper)", 0); + { + static PyObject **__pyx_pyargnames[] = {&__pyx_n_s_self,&__pyx_n_s_Amount,0}; + PyObject* values[2] = {0,0}; + if (unlikely(__pyx_kwds)) { + Py_ssize_t kw_args; + const Py_ssize_t pos_args = PyTuple_GET_SIZE(__pyx_args); + switch (pos_args) { + case 2: values[1] = PyTuple_GET_ITEM(__pyx_args, 1); + CYTHON_FALLTHROUGH; + case 1: values[0] = PyTuple_GET_ITEM(__pyx_args, 0); + CYTHON_FALLTHROUGH; + case 0: break; + default: goto __pyx_L5_argtuple_error; + } + kw_args = PyDict_Size(__pyx_kwds); + switch (pos_args) { + case 0: + if (likely((values[0] = PyDict_GetItem(__pyx_kwds, __pyx_n_s_self)) != 0)) kw_args--; + else goto __pyx_L5_argtuple_error; + CYTHON_FALLTHROUGH; + case 1: + if (likely((values[1] = PyDict_GetItem(__pyx_kwds, __pyx_n_s_Amount)) != 0)) kw_args--; + else { + __Pyx_RaiseArgtupleInvalid("IncrementCameraCoordX", 1, 2, 2, 1); __PYX_ERR(0, 68, __pyx_L3_error) + } + } + if (unlikely(kw_args > 0)) { + if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_pyargnames, 0, values, pos_args, "IncrementCameraCoordX") < 0)) __PYX_ERR(0, 68, __pyx_L3_error) + } + } else if (PyTuple_GET_SIZE(__pyx_args) != 2) { + goto __pyx_L5_argtuple_error; + } else { + values[0] = PyTuple_GET_ITEM(__pyx_args, 0); + values[1] = PyTuple_GET_ITEM(__pyx_args, 1); + } + __pyx_v_self = values[0]; + __pyx_v_Amount = values[1]; + } + goto __pyx_L4_argument_unpacking_done; + __pyx_L5_argtuple_error:; + __Pyx_RaiseArgtupleInvalid("IncrementCameraCoordX", 1, 2, 2, PyTuple_GET_SIZE(__pyx_args)); __PYX_ERR(0, 68, __pyx_L3_error) + __pyx_L3_error:; + __Pyx_AddTraceback("CAStar.AATC_Monitor_Viewer.Camera.IncrementCameraCoordX", __pyx_clineno, __pyx_lineno, __pyx_filename); + __Pyx_RefNannyFinishContext(); + return NULL; + __pyx_L4_argument_unpacking_done:; + __pyx_r = __pyx_pf_6CAStar_19AATC_Monitor_Viewer_6Camera_8IncrementCameraCoordX(__pyx_self, __pyx_v_self, __pyx_v_Amount); + + /* function exit code */ + __Pyx_RefNannyFinishContext(); + return __pyx_r; +} + +static PyObject *__pyx_pf_6CAStar_19AATC_Monitor_Viewer_6Camera_8IncrementCameraCoordX(CYTHON_UNUSED PyObject *__pyx_self, PyObject *__pyx_v_self, PyObject *__pyx_v_Amount) { + PyObject *__pyx_r = NULL; + __Pyx_RefNannyDeclarations + PyObject *__pyx_t_1 = NULL; + PyObject *__pyx_t_2 = NULL; + PyObject *__pyx_t_3 = NULL; + PyObject *__pyx_t_4 = NULL; + PyObject *__pyx_t_5 = NULL; + __Pyx_RefNannySetupContext("IncrementCameraCoordX", 0); + + /* "CAStar/AATC_Monitor_Viewer.pyx":69 + * return self.CameraCoord + * def IncrementCameraCoordX(self,Amount): + * self.CameraCoord.Set_X( Amount+self.CameraCoord.Get_X()) # <<<<<<<<<<<<<< + * + * def IncrementCameraCoordY(self,Amount): + */ + __pyx_t_2 = __Pyx_PyObject_GetAttrStr(__pyx_v_self, __pyx_n_s_CameraCoord); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 69, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_2); + __pyx_t_3 = __Pyx_PyObject_GetAttrStr(__pyx_t_2, __pyx_n_s_Set_X); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 69, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_3); + __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; + __pyx_t_4 = __Pyx_PyObject_GetAttrStr(__pyx_v_self, __pyx_n_s_CameraCoord); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 69, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_4); + __pyx_t_5 = __Pyx_PyObject_GetAttrStr(__pyx_t_4, __pyx_n_s_Get_X); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 69, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_5); + __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0; + __pyx_t_4 = NULL; + if (CYTHON_UNPACK_METHODS && likely(PyMethod_Check(__pyx_t_5))) { + __pyx_t_4 = PyMethod_GET_SELF(__pyx_t_5); + if (likely(__pyx_t_4)) { + PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_5); + __Pyx_INCREF(__pyx_t_4); + __Pyx_INCREF(function); + __Pyx_DECREF_SET(__pyx_t_5, function); + } + } + if (__pyx_t_4) { + __pyx_t_2 = __Pyx_PyObject_CallOneArg(__pyx_t_5, __pyx_t_4); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 69, __pyx_L1_error) + __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0; + } else { + __pyx_t_2 = __Pyx_PyObject_CallNoArg(__pyx_t_5); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 69, __pyx_L1_error) + } + __Pyx_GOTREF(__pyx_t_2); + __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0; + __pyx_t_5 = PyNumber_Add(__pyx_v_Amount, __pyx_t_2); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 69, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_5); + __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; + __pyx_t_2 = NULL; + if (CYTHON_UNPACK_METHODS && likely(PyMethod_Check(__pyx_t_3))) { + __pyx_t_2 = PyMethod_GET_SELF(__pyx_t_3); + if (likely(__pyx_t_2)) { + PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_3); + __Pyx_INCREF(__pyx_t_2); + __Pyx_INCREF(function); + __Pyx_DECREF_SET(__pyx_t_3, function); + } + } + if (!__pyx_t_2) { + __pyx_t_1 = __Pyx_PyObject_CallOneArg(__pyx_t_3, __pyx_t_5); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 69, __pyx_L1_error) + __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0; + __Pyx_GOTREF(__pyx_t_1); + } else { + #if CYTHON_FAST_PYCALL + if (PyFunction_Check(__pyx_t_3)) { + PyObject *__pyx_temp[2] = {__pyx_t_2, __pyx_t_5}; + __pyx_t_1 = __Pyx_PyFunction_FastCall(__pyx_t_3, __pyx_temp+1-1, 1+1); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 69, __pyx_L1_error) + __Pyx_XDECREF(__pyx_t_2); __pyx_t_2 = 0; + __Pyx_GOTREF(__pyx_t_1); + __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0; + } else + #endif + #if CYTHON_FAST_PYCCALL + if (__Pyx_PyFastCFunction_Check(__pyx_t_3)) { + PyObject *__pyx_temp[2] = {__pyx_t_2, __pyx_t_5}; + __pyx_t_1 = __Pyx_PyCFunction_FastCall(__pyx_t_3, __pyx_temp+1-1, 1+1); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 69, __pyx_L1_error) + __Pyx_XDECREF(__pyx_t_2); __pyx_t_2 = 0; + __Pyx_GOTREF(__pyx_t_1); + __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0; + } else + #endif + { + __pyx_t_4 = PyTuple_New(1+1); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 69, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_4); + __Pyx_GIVEREF(__pyx_t_2); PyTuple_SET_ITEM(__pyx_t_4, 0, __pyx_t_2); __pyx_t_2 = NULL; + __Pyx_GIVEREF(__pyx_t_5); + PyTuple_SET_ITEM(__pyx_t_4, 0+1, __pyx_t_5); + __pyx_t_5 = 0; + __pyx_t_1 = __Pyx_PyObject_Call(__pyx_t_3, __pyx_t_4, NULL); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 69, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_1); + __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0; + } + } + __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; + __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; + + /* "CAStar/AATC_Monitor_Viewer.pyx":68 + * def GetCameraCoords(self): + * return self.CameraCoord + * def IncrementCameraCoordX(self,Amount): # <<<<<<<<<<<<<< + * self.CameraCoord.Set_X( Amount+self.CameraCoord.Get_X()) + * + */ + + /* function exit code */ + __pyx_r = Py_None; __Pyx_INCREF(Py_None); + goto __pyx_L0; + __pyx_L1_error:; + __Pyx_XDECREF(__pyx_t_1); + __Pyx_XDECREF(__pyx_t_2); + __Pyx_XDECREF(__pyx_t_3); + __Pyx_XDECREF(__pyx_t_4); + __Pyx_XDECREF(__pyx_t_5); + __Pyx_AddTraceback("CAStar.AATC_Monitor_Viewer.Camera.IncrementCameraCoordX", __pyx_clineno, __pyx_lineno, __pyx_filename); + __pyx_r = NULL; + __pyx_L0:; + __Pyx_XGIVEREF(__pyx_r); + __Pyx_RefNannyFinishContext(); + return __pyx_r; +} + +/* "CAStar/AATC_Monitor_Viewer.pyx":71 + * self.CameraCoord.Set_X( Amount+self.CameraCoord.Get_X()) + * + * def IncrementCameraCoordY(self,Amount): # <<<<<<<<<<<<<< + * self.CameraCoord.Set_Y( Amount+self.CameraCoord.Get_Y()) + * + */ + +/* Python wrapper */ +static PyObject *__pyx_pw_6CAStar_19AATC_Monitor_Viewer_6Camera_11IncrementCameraCoordY(PyObject *__pyx_self, PyObject *__pyx_args, PyObject *__pyx_kwds); /*proto*/ +static PyMethodDef __pyx_mdef_6CAStar_19AATC_Monitor_Viewer_6Camera_11IncrementCameraCoordY = {"IncrementCameraCoordY", (PyCFunction)__pyx_pw_6CAStar_19AATC_Monitor_Viewer_6Camera_11IncrementCameraCoordY, METH_VARARGS|METH_KEYWORDS, 0}; +static PyObject *__pyx_pw_6CAStar_19AATC_Monitor_Viewer_6Camera_11IncrementCameraCoordY(PyObject *__pyx_self, PyObject *__pyx_args, PyObject *__pyx_kwds) { + PyObject *__pyx_v_self = 0; + PyObject *__pyx_v_Amount = 0; + PyObject *__pyx_r = 0; + __Pyx_RefNannyDeclarations + __Pyx_RefNannySetupContext("IncrementCameraCoordY (wrapper)", 0); + { + static PyObject **__pyx_pyargnames[] = {&__pyx_n_s_self,&__pyx_n_s_Amount,0}; + PyObject* values[2] = {0,0}; + if (unlikely(__pyx_kwds)) { + Py_ssize_t kw_args; + const Py_ssize_t pos_args = PyTuple_GET_SIZE(__pyx_args); + switch (pos_args) { + case 2: values[1] = PyTuple_GET_ITEM(__pyx_args, 1); + CYTHON_FALLTHROUGH; + case 1: values[0] = PyTuple_GET_ITEM(__pyx_args, 0); + CYTHON_FALLTHROUGH; + case 0: break; + default: goto __pyx_L5_argtuple_error; + } + kw_args = PyDict_Size(__pyx_kwds); + switch (pos_args) { + case 0: + if (likely((values[0] = PyDict_GetItem(__pyx_kwds, __pyx_n_s_self)) != 0)) kw_args--; + else goto __pyx_L5_argtuple_error; + CYTHON_FALLTHROUGH; + case 1: + if (likely((values[1] = PyDict_GetItem(__pyx_kwds, __pyx_n_s_Amount)) != 0)) kw_args--; + else { + __Pyx_RaiseArgtupleInvalid("IncrementCameraCoordY", 1, 2, 2, 1); __PYX_ERR(0, 71, __pyx_L3_error) + } + } + if (unlikely(kw_args > 0)) { + if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_pyargnames, 0, values, pos_args, "IncrementCameraCoordY") < 0)) __PYX_ERR(0, 71, __pyx_L3_error) + } + } else if (PyTuple_GET_SIZE(__pyx_args) != 2) { + goto __pyx_L5_argtuple_error; + } else { + values[0] = PyTuple_GET_ITEM(__pyx_args, 0); + values[1] = PyTuple_GET_ITEM(__pyx_args, 1); + } + __pyx_v_self = values[0]; + __pyx_v_Amount = values[1]; + } + goto __pyx_L4_argument_unpacking_done; + __pyx_L5_argtuple_error:; + __Pyx_RaiseArgtupleInvalid("IncrementCameraCoordY", 1, 2, 2, PyTuple_GET_SIZE(__pyx_args)); __PYX_ERR(0, 71, __pyx_L3_error) + __pyx_L3_error:; + __Pyx_AddTraceback("CAStar.AATC_Monitor_Viewer.Camera.IncrementCameraCoordY", __pyx_clineno, __pyx_lineno, __pyx_filename); + __Pyx_RefNannyFinishContext(); + return NULL; + __pyx_L4_argument_unpacking_done:; + __pyx_r = __pyx_pf_6CAStar_19AATC_Monitor_Viewer_6Camera_10IncrementCameraCoordY(__pyx_self, __pyx_v_self, __pyx_v_Amount); + + /* function exit code */ + __Pyx_RefNannyFinishContext(); + return __pyx_r; +} + +static PyObject *__pyx_pf_6CAStar_19AATC_Monitor_Viewer_6Camera_10IncrementCameraCoordY(CYTHON_UNUSED PyObject *__pyx_self, PyObject *__pyx_v_self, PyObject *__pyx_v_Amount) { + PyObject *__pyx_r = NULL; + __Pyx_RefNannyDeclarations + PyObject *__pyx_t_1 = NULL; + PyObject *__pyx_t_2 = NULL; + PyObject *__pyx_t_3 = NULL; + PyObject *__pyx_t_4 = NULL; + PyObject *__pyx_t_5 = NULL; + __Pyx_RefNannySetupContext("IncrementCameraCoordY", 0); + + /* "CAStar/AATC_Monitor_Viewer.pyx":72 + * + * def IncrementCameraCoordY(self,Amount): + * self.CameraCoord.Set_Y( Amount+self.CameraCoord.Get_Y()) # <<<<<<<<<<<<<< + * + * def SetCameraCoords(self,CameraX,CameraY): + */ + __pyx_t_2 = __Pyx_PyObject_GetAttrStr(__pyx_v_self, __pyx_n_s_CameraCoord); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 72, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_2); + __pyx_t_3 = __Pyx_PyObject_GetAttrStr(__pyx_t_2, __pyx_n_s_Set_Y); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 72, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_3); + __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; + __pyx_t_4 = __Pyx_PyObject_GetAttrStr(__pyx_v_self, __pyx_n_s_CameraCoord); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 72, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_4); + __pyx_t_5 = __Pyx_PyObject_GetAttrStr(__pyx_t_4, __pyx_n_s_Get_Y); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 72, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_5); + __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0; + __pyx_t_4 = NULL; + if (CYTHON_UNPACK_METHODS && likely(PyMethod_Check(__pyx_t_5))) { + __pyx_t_4 = PyMethod_GET_SELF(__pyx_t_5); + if (likely(__pyx_t_4)) { + PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_5); + __Pyx_INCREF(__pyx_t_4); + __Pyx_INCREF(function); + __Pyx_DECREF_SET(__pyx_t_5, function); + } + } + if (__pyx_t_4) { + __pyx_t_2 = __Pyx_PyObject_CallOneArg(__pyx_t_5, __pyx_t_4); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 72, __pyx_L1_error) + __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0; + } else { + __pyx_t_2 = __Pyx_PyObject_CallNoArg(__pyx_t_5); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 72, __pyx_L1_error) + } + __Pyx_GOTREF(__pyx_t_2); + __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0; + __pyx_t_5 = PyNumber_Add(__pyx_v_Amount, __pyx_t_2); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 72, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_5); + __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; + __pyx_t_2 = NULL; + if (CYTHON_UNPACK_METHODS && likely(PyMethod_Check(__pyx_t_3))) { + __pyx_t_2 = PyMethod_GET_SELF(__pyx_t_3); + if (likely(__pyx_t_2)) { + PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_3); + __Pyx_INCREF(__pyx_t_2); + __Pyx_INCREF(function); + __Pyx_DECREF_SET(__pyx_t_3, function); + } + } + if (!__pyx_t_2) { + __pyx_t_1 = __Pyx_PyObject_CallOneArg(__pyx_t_3, __pyx_t_5); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 72, __pyx_L1_error) + __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0; + __Pyx_GOTREF(__pyx_t_1); + } else { + #if CYTHON_FAST_PYCALL + if (PyFunction_Check(__pyx_t_3)) { + PyObject *__pyx_temp[2] = {__pyx_t_2, __pyx_t_5}; + __pyx_t_1 = __Pyx_PyFunction_FastCall(__pyx_t_3, __pyx_temp+1-1, 1+1); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 72, __pyx_L1_error) + __Pyx_XDECREF(__pyx_t_2); __pyx_t_2 = 0; + __Pyx_GOTREF(__pyx_t_1); + __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0; + } else + #endif + #if CYTHON_FAST_PYCCALL + if (__Pyx_PyFastCFunction_Check(__pyx_t_3)) { + PyObject *__pyx_temp[2] = {__pyx_t_2, __pyx_t_5}; + __pyx_t_1 = __Pyx_PyCFunction_FastCall(__pyx_t_3, __pyx_temp+1-1, 1+1); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 72, __pyx_L1_error) + __Pyx_XDECREF(__pyx_t_2); __pyx_t_2 = 0; + __Pyx_GOTREF(__pyx_t_1); + __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0; + } else + #endif + { + __pyx_t_4 = PyTuple_New(1+1); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 72, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_4); + __Pyx_GIVEREF(__pyx_t_2); PyTuple_SET_ITEM(__pyx_t_4, 0, __pyx_t_2); __pyx_t_2 = NULL; + __Pyx_GIVEREF(__pyx_t_5); + PyTuple_SET_ITEM(__pyx_t_4, 0+1, __pyx_t_5); + __pyx_t_5 = 0; + __pyx_t_1 = __Pyx_PyObject_Call(__pyx_t_3, __pyx_t_4, NULL); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 72, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_1); + __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0; + } + } + __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; + __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; + + /* "CAStar/AATC_Monitor_Viewer.pyx":71 + * self.CameraCoord.Set_X( Amount+self.CameraCoord.Get_X()) + * + * def IncrementCameraCoordY(self,Amount): # <<<<<<<<<<<<<< + * self.CameraCoord.Set_Y( Amount+self.CameraCoord.Get_Y()) + * + */ + + /* function exit code */ + __pyx_r = Py_None; __Pyx_INCREF(Py_None); + goto __pyx_L0; + __pyx_L1_error:; + __Pyx_XDECREF(__pyx_t_1); + __Pyx_XDECREF(__pyx_t_2); + __Pyx_XDECREF(__pyx_t_3); + __Pyx_XDECREF(__pyx_t_4); + __Pyx_XDECREF(__pyx_t_5); + __Pyx_AddTraceback("CAStar.AATC_Monitor_Viewer.Camera.IncrementCameraCoordY", __pyx_clineno, __pyx_lineno, __pyx_filename); + __pyx_r = NULL; + __pyx_L0:; + __Pyx_XGIVEREF(__pyx_r); + __Pyx_RefNannyFinishContext(); + return __pyx_r; +} + +/* "CAStar/AATC_Monitor_Viewer.pyx":74 + * self.CameraCoord.Set_Y( Amount+self.CameraCoord.Get_Y()) + * + * def SetCameraCoords(self,CameraX,CameraY): # <<<<<<<<<<<<<< + * self.CameraCoord.Set_X( CameraX) + * self.CameraCoord.Set_Y(CameraY) + */ + +/* Python wrapper */ +static PyObject *__pyx_pw_6CAStar_19AATC_Monitor_Viewer_6Camera_13SetCameraCoords(PyObject *__pyx_self, PyObject *__pyx_args, PyObject *__pyx_kwds); /*proto*/ +static PyMethodDef __pyx_mdef_6CAStar_19AATC_Monitor_Viewer_6Camera_13SetCameraCoords = {"SetCameraCoords", (PyCFunction)__pyx_pw_6CAStar_19AATC_Monitor_Viewer_6Camera_13SetCameraCoords, METH_VARARGS|METH_KEYWORDS, 0}; +static PyObject *__pyx_pw_6CAStar_19AATC_Monitor_Viewer_6Camera_13SetCameraCoords(PyObject *__pyx_self, PyObject *__pyx_args, PyObject *__pyx_kwds) { + PyObject *__pyx_v_self = 0; + PyObject *__pyx_v_CameraX = 0; + PyObject *__pyx_v_CameraY = 0; + PyObject *__pyx_r = 0; + __Pyx_RefNannyDeclarations + __Pyx_RefNannySetupContext("SetCameraCoords (wrapper)", 0); + { + static PyObject **__pyx_pyargnames[] = {&__pyx_n_s_self,&__pyx_n_s_CameraX,&__pyx_n_s_CameraY,0}; + PyObject* values[3] = {0,0,0}; + if (unlikely(__pyx_kwds)) { + Py_ssize_t kw_args; + const Py_ssize_t pos_args = PyTuple_GET_SIZE(__pyx_args); + switch (pos_args) { + case 3: values[2] = PyTuple_GET_ITEM(__pyx_args, 2); + CYTHON_FALLTHROUGH; + case 2: values[1] = PyTuple_GET_ITEM(__pyx_args, 1); + CYTHON_FALLTHROUGH; + case 1: values[0] = PyTuple_GET_ITEM(__pyx_args, 0); + CYTHON_FALLTHROUGH; + case 0: break; + default: goto __pyx_L5_argtuple_error; + } + kw_args = PyDict_Size(__pyx_kwds); + switch (pos_args) { + case 0: + if (likely((values[0] = PyDict_GetItem(__pyx_kwds, __pyx_n_s_self)) != 0)) kw_args--; + else goto __pyx_L5_argtuple_error; + CYTHON_FALLTHROUGH; + case 1: + if (likely((values[1] = PyDict_GetItem(__pyx_kwds, __pyx_n_s_CameraX)) != 0)) kw_args--; + else { + __Pyx_RaiseArgtupleInvalid("SetCameraCoords", 1, 3, 3, 1); __PYX_ERR(0, 74, __pyx_L3_error) + } + CYTHON_FALLTHROUGH; + case 2: + if (likely((values[2] = PyDict_GetItem(__pyx_kwds, __pyx_n_s_CameraY)) != 0)) kw_args--; + else { + __Pyx_RaiseArgtupleInvalid("SetCameraCoords", 1, 3, 3, 2); __PYX_ERR(0, 74, __pyx_L3_error) + } + } + if (unlikely(kw_args > 0)) { + if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_pyargnames, 0, values, pos_args, "SetCameraCoords") < 0)) __PYX_ERR(0, 74, __pyx_L3_error) + } + } else if (PyTuple_GET_SIZE(__pyx_args) != 3) { + goto __pyx_L5_argtuple_error; + } else { + values[0] = PyTuple_GET_ITEM(__pyx_args, 0); + values[1] = PyTuple_GET_ITEM(__pyx_args, 1); + values[2] = PyTuple_GET_ITEM(__pyx_args, 2); + } + __pyx_v_self = values[0]; + __pyx_v_CameraX = values[1]; + __pyx_v_CameraY = values[2]; + } + goto __pyx_L4_argument_unpacking_done; + __pyx_L5_argtuple_error:; + __Pyx_RaiseArgtupleInvalid("SetCameraCoords", 1, 3, 3, PyTuple_GET_SIZE(__pyx_args)); __PYX_ERR(0, 74, __pyx_L3_error) + __pyx_L3_error:; + __Pyx_AddTraceback("CAStar.AATC_Monitor_Viewer.Camera.SetCameraCoords", __pyx_clineno, __pyx_lineno, __pyx_filename); + __Pyx_RefNannyFinishContext(); + return NULL; + __pyx_L4_argument_unpacking_done:; + __pyx_r = __pyx_pf_6CAStar_19AATC_Monitor_Viewer_6Camera_12SetCameraCoords(__pyx_self, __pyx_v_self, __pyx_v_CameraX, __pyx_v_CameraY); + + /* function exit code */ + __Pyx_RefNannyFinishContext(); + return __pyx_r; +} + +static PyObject *__pyx_pf_6CAStar_19AATC_Monitor_Viewer_6Camera_12SetCameraCoords(CYTHON_UNUSED PyObject *__pyx_self, PyObject *__pyx_v_self, PyObject *__pyx_v_CameraX, PyObject *__pyx_v_CameraY) { + PyObject *__pyx_r = NULL; + __Pyx_RefNannyDeclarations + PyObject *__pyx_t_1 = NULL; + PyObject *__pyx_t_2 = NULL; + PyObject *__pyx_t_3 = NULL; + PyObject *__pyx_t_4 = NULL; + __Pyx_RefNannySetupContext("SetCameraCoords", 0); + + /* "CAStar/AATC_Monitor_Viewer.pyx":75 + * + * def SetCameraCoords(self,CameraX,CameraY): + * self.CameraCoord.Set_X( CameraX) # <<<<<<<<<<<<<< + * self.CameraCoord.Set_Y(CameraY) + * + */ + __pyx_t_2 = __Pyx_PyObject_GetAttrStr(__pyx_v_self, __pyx_n_s_CameraCoord); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 75, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_2); + __pyx_t_3 = __Pyx_PyObject_GetAttrStr(__pyx_t_2, __pyx_n_s_Set_X); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 75, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_3); + __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; + __pyx_t_2 = NULL; + if (CYTHON_UNPACK_METHODS && likely(PyMethod_Check(__pyx_t_3))) { + __pyx_t_2 = PyMethod_GET_SELF(__pyx_t_3); + if (likely(__pyx_t_2)) { + PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_3); + __Pyx_INCREF(__pyx_t_2); + __Pyx_INCREF(function); + __Pyx_DECREF_SET(__pyx_t_3, function); + } + } + if (!__pyx_t_2) { + __pyx_t_1 = __Pyx_PyObject_CallOneArg(__pyx_t_3, __pyx_v_CameraX); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 75, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_1); + } else { + #if CYTHON_FAST_PYCALL + if (PyFunction_Check(__pyx_t_3)) { + PyObject *__pyx_temp[2] = {__pyx_t_2, __pyx_v_CameraX}; + __pyx_t_1 = __Pyx_PyFunction_FastCall(__pyx_t_3, __pyx_temp+1-1, 1+1); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 75, __pyx_L1_error) + __Pyx_XDECREF(__pyx_t_2); __pyx_t_2 = 0; + __Pyx_GOTREF(__pyx_t_1); + } else + #endif + #if CYTHON_FAST_PYCCALL + if (__Pyx_PyFastCFunction_Check(__pyx_t_3)) { + PyObject *__pyx_temp[2] = {__pyx_t_2, __pyx_v_CameraX}; + __pyx_t_1 = __Pyx_PyCFunction_FastCall(__pyx_t_3, __pyx_temp+1-1, 1+1); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 75, __pyx_L1_error) + __Pyx_XDECREF(__pyx_t_2); __pyx_t_2 = 0; + __Pyx_GOTREF(__pyx_t_1); + } else + #endif + { + __pyx_t_4 = PyTuple_New(1+1); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 75, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_4); + __Pyx_GIVEREF(__pyx_t_2); PyTuple_SET_ITEM(__pyx_t_4, 0, __pyx_t_2); __pyx_t_2 = NULL; + __Pyx_INCREF(__pyx_v_CameraX); + __Pyx_GIVEREF(__pyx_v_CameraX); + PyTuple_SET_ITEM(__pyx_t_4, 0+1, __pyx_v_CameraX); + __pyx_t_1 = __Pyx_PyObject_Call(__pyx_t_3, __pyx_t_4, NULL); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 75, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_1); + __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0; + } + } + __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; + __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; + + /* "CAStar/AATC_Monitor_Viewer.pyx":76 + * def SetCameraCoords(self,CameraX,CameraY): + * self.CameraCoord.Set_X( CameraX) + * self.CameraCoord.Set_Y(CameraY) # <<<<<<<<<<<<<< + * + * def UpdateCameraSize(self): #Gets width of map divided by zoom level eg at zoom 1x it has whole map + */ + __pyx_t_3 = __Pyx_PyObject_GetAttrStr(__pyx_v_self, __pyx_n_s_CameraCoord); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 76, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_3); + __pyx_t_4 = __Pyx_PyObject_GetAttrStr(__pyx_t_3, __pyx_n_s_Set_Y); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 76, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_4); + __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; + __pyx_t_3 = NULL; + if (CYTHON_UNPACK_METHODS && likely(PyMethod_Check(__pyx_t_4))) { + __pyx_t_3 = PyMethod_GET_SELF(__pyx_t_4); + if (likely(__pyx_t_3)) { + PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_4); + __Pyx_INCREF(__pyx_t_3); + __Pyx_INCREF(function); + __Pyx_DECREF_SET(__pyx_t_4, function); + } + } + if (!__pyx_t_3) { + __pyx_t_1 = __Pyx_PyObject_CallOneArg(__pyx_t_4, __pyx_v_CameraY); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 76, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_1); + } else { + #if CYTHON_FAST_PYCALL + if (PyFunction_Check(__pyx_t_4)) { + PyObject *__pyx_temp[2] = {__pyx_t_3, __pyx_v_CameraY}; + __pyx_t_1 = __Pyx_PyFunction_FastCall(__pyx_t_4, __pyx_temp+1-1, 1+1); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 76, __pyx_L1_error) + __Pyx_XDECREF(__pyx_t_3); __pyx_t_3 = 0; + __Pyx_GOTREF(__pyx_t_1); + } else + #endif + #if CYTHON_FAST_PYCCALL + if (__Pyx_PyFastCFunction_Check(__pyx_t_4)) { + PyObject *__pyx_temp[2] = {__pyx_t_3, __pyx_v_CameraY}; + __pyx_t_1 = __Pyx_PyCFunction_FastCall(__pyx_t_4, __pyx_temp+1-1, 1+1); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 76, __pyx_L1_error) + __Pyx_XDECREF(__pyx_t_3); __pyx_t_3 = 0; + __Pyx_GOTREF(__pyx_t_1); + } else + #endif + { + __pyx_t_2 = PyTuple_New(1+1); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 76, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_2); + __Pyx_GIVEREF(__pyx_t_3); PyTuple_SET_ITEM(__pyx_t_2, 0, __pyx_t_3); __pyx_t_3 = NULL; + __Pyx_INCREF(__pyx_v_CameraY); + __Pyx_GIVEREF(__pyx_v_CameraY); + PyTuple_SET_ITEM(__pyx_t_2, 0+1, __pyx_v_CameraY); + __pyx_t_1 = __Pyx_PyObject_Call(__pyx_t_4, __pyx_t_2, NULL); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 76, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_1); + __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; + } + } + __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0; + __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; + + /* "CAStar/AATC_Monitor_Viewer.pyx":74 + * self.CameraCoord.Set_Y( Amount+self.CameraCoord.Get_Y()) + * + * def SetCameraCoords(self,CameraX,CameraY): # <<<<<<<<<<<<<< + * self.CameraCoord.Set_X( CameraX) + * self.CameraCoord.Set_Y(CameraY) + */ + + /* function exit code */ + __pyx_r = Py_None; __Pyx_INCREF(Py_None); + goto __pyx_L0; + __pyx_L1_error:; + __Pyx_XDECREF(__pyx_t_1); + __Pyx_XDECREF(__pyx_t_2); + __Pyx_XDECREF(__pyx_t_3); + __Pyx_XDECREF(__pyx_t_4); + __Pyx_AddTraceback("CAStar.AATC_Monitor_Viewer.Camera.SetCameraCoords", __pyx_clineno, __pyx_lineno, __pyx_filename); + __pyx_r = NULL; + __pyx_L0:; + __Pyx_XGIVEREF(__pyx_r); + __Pyx_RefNannyFinishContext(); + return __pyx_r; +} + +/* "CAStar/AATC_Monitor_Viewer.pyx":78 + * self.CameraCoord.Set_Y(CameraY) + * + * def UpdateCameraSize(self): #Gets width of map divided by zoom level eg at zoom 1x it has whole map # <<<<<<<<<<<<<< + * self.CameraCoord.Set_XSize ((self.MaxCoords.Get_X() - self.MinCoords.Get_X())/self.CameraZoom) + * self.CameraCoord.Set_YSize ((self.MaxCoords.Get_Y() - self.MinCoords.Get_Y())/self.CameraZoom) + */ + +/* Python wrapper */ +static PyObject *__pyx_pw_6CAStar_19AATC_Monitor_Viewer_6Camera_15UpdateCameraSize(PyObject *__pyx_self, PyObject *__pyx_v_self); /*proto*/ +static PyMethodDef __pyx_mdef_6CAStar_19AATC_Monitor_Viewer_6Camera_15UpdateCameraSize = {"UpdateCameraSize", (PyCFunction)__pyx_pw_6CAStar_19AATC_Monitor_Viewer_6Camera_15UpdateCameraSize, METH_O, 0}; +static PyObject *__pyx_pw_6CAStar_19AATC_Monitor_Viewer_6Camera_15UpdateCameraSize(PyObject *__pyx_self, PyObject *__pyx_v_self) { + PyObject *__pyx_r = 0; + __Pyx_RefNannyDeclarations + __Pyx_RefNannySetupContext("UpdateCameraSize (wrapper)", 0); + __pyx_r = __pyx_pf_6CAStar_19AATC_Monitor_Viewer_6Camera_14UpdateCameraSize(__pyx_self, ((PyObject *)__pyx_v_self)); + + /* function exit code */ + __Pyx_RefNannyFinishContext(); + return __pyx_r; +} + +static PyObject *__pyx_pf_6CAStar_19AATC_Monitor_Viewer_6Camera_14UpdateCameraSize(CYTHON_UNUSED PyObject *__pyx_self, PyObject *__pyx_v_self) { + PyObject *__pyx_r = NULL; + __Pyx_RefNannyDeclarations + PyObject *__pyx_t_1 = NULL; + PyObject *__pyx_t_2 = NULL; + PyObject *__pyx_t_3 = NULL; + PyObject *__pyx_t_4 = NULL; + PyObject *__pyx_t_5 = NULL; + PyObject *__pyx_t_6 = NULL; + __Pyx_RefNannySetupContext("UpdateCameraSize", 0); + + /* "CAStar/AATC_Monitor_Viewer.pyx":79 + * + * def UpdateCameraSize(self): #Gets width of map divided by zoom level eg at zoom 1x it has whole map + * self.CameraCoord.Set_XSize ((self.MaxCoords.Get_X() - self.MinCoords.Get_X())/self.CameraZoom) # <<<<<<<<<<<<<< + * self.CameraCoord.Set_YSize ((self.MaxCoords.Get_Y() - self.MinCoords.Get_Y())/self.CameraZoom) + * + */ + __pyx_t_2 = __Pyx_PyObject_GetAttrStr(__pyx_v_self, __pyx_n_s_CameraCoord); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 79, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_2); + __pyx_t_3 = __Pyx_PyObject_GetAttrStr(__pyx_t_2, __pyx_n_s_Set_XSize); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 79, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_3); + __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; + __pyx_t_4 = __Pyx_PyObject_GetAttrStr(__pyx_v_self, __pyx_n_s_MaxCoords); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 79, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_4); + __pyx_t_5 = __Pyx_PyObject_GetAttrStr(__pyx_t_4, __pyx_n_s_Get_X); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 79, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_5); + __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0; + __pyx_t_4 = NULL; + if (CYTHON_UNPACK_METHODS && likely(PyMethod_Check(__pyx_t_5))) { + __pyx_t_4 = PyMethod_GET_SELF(__pyx_t_5); + if (likely(__pyx_t_4)) { + PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_5); + __Pyx_INCREF(__pyx_t_4); + __Pyx_INCREF(function); + __Pyx_DECREF_SET(__pyx_t_5, function); + } + } + if (__pyx_t_4) { + __pyx_t_2 = __Pyx_PyObject_CallOneArg(__pyx_t_5, __pyx_t_4); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 79, __pyx_L1_error) + __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0; + } else { + __pyx_t_2 = __Pyx_PyObject_CallNoArg(__pyx_t_5); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 79, __pyx_L1_error) + } + __Pyx_GOTREF(__pyx_t_2); + __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0; + __pyx_t_4 = __Pyx_PyObject_GetAttrStr(__pyx_v_self, __pyx_n_s_MinCoords); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 79, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_4); + __pyx_t_6 = __Pyx_PyObject_GetAttrStr(__pyx_t_4, __pyx_n_s_Get_X); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 79, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_6); + __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0; + __pyx_t_4 = NULL; + if (CYTHON_UNPACK_METHODS && likely(PyMethod_Check(__pyx_t_6))) { + __pyx_t_4 = PyMethod_GET_SELF(__pyx_t_6); + if (likely(__pyx_t_4)) { + PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_6); + __Pyx_INCREF(__pyx_t_4); + __Pyx_INCREF(function); + __Pyx_DECREF_SET(__pyx_t_6, function); + } + } + if (__pyx_t_4) { + __pyx_t_5 = __Pyx_PyObject_CallOneArg(__pyx_t_6, __pyx_t_4); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 79, __pyx_L1_error) + __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0; + } else { + __pyx_t_5 = __Pyx_PyObject_CallNoArg(__pyx_t_6); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 79, __pyx_L1_error) + } + __Pyx_GOTREF(__pyx_t_5); + __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0; + __pyx_t_6 = PyNumber_Subtract(__pyx_t_2, __pyx_t_5); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 79, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_6); + __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; + __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0; + __pyx_t_5 = __Pyx_PyObject_GetAttrStr(__pyx_v_self, __pyx_n_s_CameraZoom); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 79, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_5); + __pyx_t_2 = __Pyx_PyNumber_Divide(__pyx_t_6, __pyx_t_5); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 79, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_2); + __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0; + __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0; + __pyx_t_5 = NULL; + if (CYTHON_UNPACK_METHODS && likely(PyMethod_Check(__pyx_t_3))) { + __pyx_t_5 = PyMethod_GET_SELF(__pyx_t_3); + if (likely(__pyx_t_5)) { + PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_3); + __Pyx_INCREF(__pyx_t_5); + __Pyx_INCREF(function); + __Pyx_DECREF_SET(__pyx_t_3, function); + } + } + if (!__pyx_t_5) { + __pyx_t_1 = __Pyx_PyObject_CallOneArg(__pyx_t_3, __pyx_t_2); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 79, __pyx_L1_error) + __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; + __Pyx_GOTREF(__pyx_t_1); + } else { + #if CYTHON_FAST_PYCALL + if (PyFunction_Check(__pyx_t_3)) { + PyObject *__pyx_temp[2] = {__pyx_t_5, __pyx_t_2}; + __pyx_t_1 = __Pyx_PyFunction_FastCall(__pyx_t_3, __pyx_temp+1-1, 1+1); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 79, __pyx_L1_error) + __Pyx_XDECREF(__pyx_t_5); __pyx_t_5 = 0; + __Pyx_GOTREF(__pyx_t_1); + __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; + } else + #endif + #if CYTHON_FAST_PYCCALL + if (__Pyx_PyFastCFunction_Check(__pyx_t_3)) { + PyObject *__pyx_temp[2] = {__pyx_t_5, __pyx_t_2}; + __pyx_t_1 = __Pyx_PyCFunction_FastCall(__pyx_t_3, __pyx_temp+1-1, 1+1); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 79, __pyx_L1_error) + __Pyx_XDECREF(__pyx_t_5); __pyx_t_5 = 0; + __Pyx_GOTREF(__pyx_t_1); + __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; + } else + #endif + { + __pyx_t_6 = PyTuple_New(1+1); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 79, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_6); + __Pyx_GIVEREF(__pyx_t_5); PyTuple_SET_ITEM(__pyx_t_6, 0, __pyx_t_5); __pyx_t_5 = NULL; + __Pyx_GIVEREF(__pyx_t_2); + PyTuple_SET_ITEM(__pyx_t_6, 0+1, __pyx_t_2); + __pyx_t_2 = 0; + __pyx_t_1 = __Pyx_PyObject_Call(__pyx_t_3, __pyx_t_6, NULL); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 79, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_1); + __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0; + } + } + __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; + __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; + + /* "CAStar/AATC_Monitor_Viewer.pyx":80 + * def UpdateCameraSize(self): #Gets width of map divided by zoom level eg at zoom 1x it has whole map + * self.CameraCoord.Set_XSize ((self.MaxCoords.Get_X() - self.MinCoords.Get_X())/self.CameraZoom) + * self.CameraCoord.Set_YSize ((self.MaxCoords.Get_Y() - self.MinCoords.Get_Y())/self.CameraZoom) # <<<<<<<<<<<<<< + * + * def CameraWipe(self,Colour = (0,0,0)): + */ + __pyx_t_3 = __Pyx_PyObject_GetAttrStr(__pyx_v_self, __pyx_n_s_CameraCoord); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 80, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_3); + __pyx_t_6 = __Pyx_PyObject_GetAttrStr(__pyx_t_3, __pyx_n_s_Set_YSize); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 80, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_6); + __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; + __pyx_t_2 = __Pyx_PyObject_GetAttrStr(__pyx_v_self, __pyx_n_s_MaxCoords); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 80, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_2); + __pyx_t_5 = __Pyx_PyObject_GetAttrStr(__pyx_t_2, __pyx_n_s_Get_Y); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 80, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_5); + __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; + __pyx_t_2 = NULL; + if (CYTHON_UNPACK_METHODS && likely(PyMethod_Check(__pyx_t_5))) { + __pyx_t_2 = PyMethod_GET_SELF(__pyx_t_5); + if (likely(__pyx_t_2)) { + PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_5); + __Pyx_INCREF(__pyx_t_2); + __Pyx_INCREF(function); + __Pyx_DECREF_SET(__pyx_t_5, function); + } + } + if (__pyx_t_2) { + __pyx_t_3 = __Pyx_PyObject_CallOneArg(__pyx_t_5, __pyx_t_2); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 80, __pyx_L1_error) + __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; + } else { + __pyx_t_3 = __Pyx_PyObject_CallNoArg(__pyx_t_5); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 80, __pyx_L1_error) + } + __Pyx_GOTREF(__pyx_t_3); + __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0; + __pyx_t_2 = __Pyx_PyObject_GetAttrStr(__pyx_v_self, __pyx_n_s_MinCoords); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 80, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_2); + __pyx_t_4 = __Pyx_PyObject_GetAttrStr(__pyx_t_2, __pyx_n_s_Get_Y); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 80, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_4); + __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; + __pyx_t_2 = NULL; + if (CYTHON_UNPACK_METHODS && likely(PyMethod_Check(__pyx_t_4))) { + __pyx_t_2 = PyMethod_GET_SELF(__pyx_t_4); + if (likely(__pyx_t_2)) { + PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_4); + __Pyx_INCREF(__pyx_t_2); + __Pyx_INCREF(function); + __Pyx_DECREF_SET(__pyx_t_4, function); + } + } + if (__pyx_t_2) { + __pyx_t_5 = __Pyx_PyObject_CallOneArg(__pyx_t_4, __pyx_t_2); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 80, __pyx_L1_error) + __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; + } else { + __pyx_t_5 = __Pyx_PyObject_CallNoArg(__pyx_t_4); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 80, __pyx_L1_error) + } + __Pyx_GOTREF(__pyx_t_5); + __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0; + __pyx_t_4 = PyNumber_Subtract(__pyx_t_3, __pyx_t_5); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 80, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_4); + __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; + __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0; + __pyx_t_5 = __Pyx_PyObject_GetAttrStr(__pyx_v_self, __pyx_n_s_CameraZoom); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 80, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_5); + __pyx_t_3 = __Pyx_PyNumber_Divide(__pyx_t_4, __pyx_t_5); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 80, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_3); + __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0; + __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0; + __pyx_t_5 = NULL; + if (CYTHON_UNPACK_METHODS && likely(PyMethod_Check(__pyx_t_6))) { + __pyx_t_5 = PyMethod_GET_SELF(__pyx_t_6); + if (likely(__pyx_t_5)) { + PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_6); + __Pyx_INCREF(__pyx_t_5); + __Pyx_INCREF(function); + __Pyx_DECREF_SET(__pyx_t_6, function); + } + } + if (!__pyx_t_5) { + __pyx_t_1 = __Pyx_PyObject_CallOneArg(__pyx_t_6, __pyx_t_3); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 80, __pyx_L1_error) + __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; + __Pyx_GOTREF(__pyx_t_1); + } else { + #if CYTHON_FAST_PYCALL + if (PyFunction_Check(__pyx_t_6)) { + PyObject *__pyx_temp[2] = {__pyx_t_5, __pyx_t_3}; + __pyx_t_1 = __Pyx_PyFunction_FastCall(__pyx_t_6, __pyx_temp+1-1, 1+1); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 80, __pyx_L1_error) + __Pyx_XDECREF(__pyx_t_5); __pyx_t_5 = 0; + __Pyx_GOTREF(__pyx_t_1); + __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; + } else + #endif + #if CYTHON_FAST_PYCCALL + if (__Pyx_PyFastCFunction_Check(__pyx_t_6)) { + PyObject *__pyx_temp[2] = {__pyx_t_5, __pyx_t_3}; + __pyx_t_1 = __Pyx_PyCFunction_FastCall(__pyx_t_6, __pyx_temp+1-1, 1+1); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 80, __pyx_L1_error) + __Pyx_XDECREF(__pyx_t_5); __pyx_t_5 = 0; + __Pyx_GOTREF(__pyx_t_1); + __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; + } else + #endif + { + __pyx_t_4 = PyTuple_New(1+1); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 80, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_4); + __Pyx_GIVEREF(__pyx_t_5); PyTuple_SET_ITEM(__pyx_t_4, 0, __pyx_t_5); __pyx_t_5 = NULL; + __Pyx_GIVEREF(__pyx_t_3); + PyTuple_SET_ITEM(__pyx_t_4, 0+1, __pyx_t_3); + __pyx_t_3 = 0; + __pyx_t_1 = __Pyx_PyObject_Call(__pyx_t_6, __pyx_t_4, NULL); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 80, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_1); + __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0; + } + } + __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0; + __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; + + /* "CAStar/AATC_Monitor_Viewer.pyx":78 + * self.CameraCoord.Set_Y(CameraY) + * + * def UpdateCameraSize(self): #Gets width of map divided by zoom level eg at zoom 1x it has whole map # <<<<<<<<<<<<<< + * self.CameraCoord.Set_XSize ((self.MaxCoords.Get_X() - self.MinCoords.Get_X())/self.CameraZoom) + * self.CameraCoord.Set_YSize ((self.MaxCoords.Get_Y() - self.MinCoords.Get_Y())/self.CameraZoom) + */ + + /* function exit code */ + __pyx_r = Py_None; __Pyx_INCREF(Py_None); + goto __pyx_L0; + __pyx_L1_error:; + __Pyx_XDECREF(__pyx_t_1); + __Pyx_XDECREF(__pyx_t_2); + __Pyx_XDECREF(__pyx_t_3); + __Pyx_XDECREF(__pyx_t_4); + __Pyx_XDECREF(__pyx_t_5); + __Pyx_XDECREF(__pyx_t_6); + __Pyx_AddTraceback("CAStar.AATC_Monitor_Viewer.Camera.UpdateCameraSize", __pyx_clineno, __pyx_lineno, __pyx_filename); + __pyx_r = NULL; + __pyx_L0:; + __Pyx_XGIVEREF(__pyx_r); + __Pyx_RefNannyFinishContext(); + return __pyx_r; +} + +/* "CAStar/AATC_Monitor_Viewer.pyx":82 + * self.CameraCoord.Set_YSize ((self.MaxCoords.Get_Y() - self.MinCoords.Get_Y())/self.CameraZoom) + * + * def CameraWipe(self,Colour = (0,0,0)): # <<<<<<<<<<<<<< + * self.gameDisplay.fill(Colour) + * def ResetDrawObject(self): + */ + +/* Python wrapper */ +static PyObject *__pyx_pw_6CAStar_19AATC_Monitor_Viewer_6Camera_17CameraWipe(PyObject *__pyx_self, PyObject *__pyx_args, PyObject *__pyx_kwds); /*proto*/ +static PyMethodDef __pyx_mdef_6CAStar_19AATC_Monitor_Viewer_6Camera_17CameraWipe = {"CameraWipe", (PyCFunction)__pyx_pw_6CAStar_19AATC_Monitor_Viewer_6Camera_17CameraWipe, METH_VARARGS|METH_KEYWORDS, 0}; +static PyObject *__pyx_pw_6CAStar_19AATC_Monitor_Viewer_6Camera_17CameraWipe(PyObject *__pyx_self, PyObject *__pyx_args, PyObject *__pyx_kwds) { + PyObject *__pyx_v_self = 0; + PyObject *__pyx_v_Colour = 0; + PyObject *__pyx_r = 0; + __Pyx_RefNannyDeclarations + __Pyx_RefNannySetupContext("CameraWipe (wrapper)", 0); + { + static PyObject **__pyx_pyargnames[] = {&__pyx_n_s_self,&__pyx_n_s_Colour,0}; + PyObject* values[2] = {0,0}; + values[1] = ((PyObject *)((PyObject*)__pyx_tuple_)); + if (unlikely(__pyx_kwds)) { + Py_ssize_t kw_args; + const Py_ssize_t pos_args = PyTuple_GET_SIZE(__pyx_args); + switch (pos_args) { + case 2: values[1] = PyTuple_GET_ITEM(__pyx_args, 1); + CYTHON_FALLTHROUGH; + case 1: values[0] = PyTuple_GET_ITEM(__pyx_args, 0); + CYTHON_FALLTHROUGH; + case 0: break; + default: goto __pyx_L5_argtuple_error; + } + kw_args = PyDict_Size(__pyx_kwds); + switch (pos_args) { + case 0: + if (likely((values[0] = PyDict_GetItem(__pyx_kwds, __pyx_n_s_self)) != 0)) kw_args--; + else goto __pyx_L5_argtuple_error; + CYTHON_FALLTHROUGH; + case 1: + if (kw_args > 0) { + PyObject* value = PyDict_GetItem(__pyx_kwds, __pyx_n_s_Colour); + if (value) { values[1] = value; kw_args--; } + } + } + if (unlikely(kw_args > 0)) { + if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_pyargnames, 0, values, pos_args, "CameraWipe") < 0)) __PYX_ERR(0, 82, __pyx_L3_error) + } + } else { + switch (PyTuple_GET_SIZE(__pyx_args)) { + case 2: values[1] = PyTuple_GET_ITEM(__pyx_args, 1); + CYTHON_FALLTHROUGH; + case 1: values[0] = PyTuple_GET_ITEM(__pyx_args, 0); + break; + default: goto __pyx_L5_argtuple_error; + } + } + __pyx_v_self = values[0]; + __pyx_v_Colour = values[1]; + } + goto __pyx_L4_argument_unpacking_done; + __pyx_L5_argtuple_error:; + __Pyx_RaiseArgtupleInvalid("CameraWipe", 0, 1, 2, PyTuple_GET_SIZE(__pyx_args)); __PYX_ERR(0, 82, __pyx_L3_error) + __pyx_L3_error:; + __Pyx_AddTraceback("CAStar.AATC_Monitor_Viewer.Camera.CameraWipe", __pyx_clineno, __pyx_lineno, __pyx_filename); + __Pyx_RefNannyFinishContext(); + return NULL; + __pyx_L4_argument_unpacking_done:; + __pyx_r = __pyx_pf_6CAStar_19AATC_Monitor_Viewer_6Camera_16CameraWipe(__pyx_self, __pyx_v_self, __pyx_v_Colour); + + /* function exit code */ + __Pyx_RefNannyFinishContext(); + return __pyx_r; +} + +static PyObject *__pyx_pf_6CAStar_19AATC_Monitor_Viewer_6Camera_16CameraWipe(CYTHON_UNUSED PyObject *__pyx_self, PyObject *__pyx_v_self, PyObject *__pyx_v_Colour) { + PyObject *__pyx_r = NULL; + __Pyx_RefNannyDeclarations + PyObject *__pyx_t_1 = NULL; + PyObject *__pyx_t_2 = NULL; + PyObject *__pyx_t_3 = NULL; + PyObject *__pyx_t_4 = NULL; + __Pyx_RefNannySetupContext("CameraWipe", 0); + + /* "CAStar/AATC_Monitor_Viewer.pyx":83 + * + * def CameraWipe(self,Colour = (0,0,0)): + * self.gameDisplay.fill(Colour) # <<<<<<<<<<<<<< + * def ResetDrawObject(self): + * self.DrawObjects = [] + */ + __pyx_t_2 = __Pyx_PyObject_GetAttrStr(__pyx_v_self, __pyx_n_s_gameDisplay); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 83, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_2); + __pyx_t_3 = __Pyx_PyObject_GetAttrStr(__pyx_t_2, __pyx_n_s_fill); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 83, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_3); + __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; + __pyx_t_2 = NULL; + if (CYTHON_UNPACK_METHODS && likely(PyMethod_Check(__pyx_t_3))) { + __pyx_t_2 = PyMethod_GET_SELF(__pyx_t_3); + if (likely(__pyx_t_2)) { + PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_3); + __Pyx_INCREF(__pyx_t_2); + __Pyx_INCREF(function); + __Pyx_DECREF_SET(__pyx_t_3, function); + } + } + if (!__pyx_t_2) { + __pyx_t_1 = __Pyx_PyObject_CallOneArg(__pyx_t_3, __pyx_v_Colour); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 83, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_1); + } else { + #if CYTHON_FAST_PYCALL + if (PyFunction_Check(__pyx_t_3)) { + PyObject *__pyx_temp[2] = {__pyx_t_2, __pyx_v_Colour}; + __pyx_t_1 = __Pyx_PyFunction_FastCall(__pyx_t_3, __pyx_temp+1-1, 1+1); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 83, __pyx_L1_error) + __Pyx_XDECREF(__pyx_t_2); __pyx_t_2 = 0; + __Pyx_GOTREF(__pyx_t_1); + } else + #endif + #if CYTHON_FAST_PYCCALL + if (__Pyx_PyFastCFunction_Check(__pyx_t_3)) { + PyObject *__pyx_temp[2] = {__pyx_t_2, __pyx_v_Colour}; + __pyx_t_1 = __Pyx_PyCFunction_FastCall(__pyx_t_3, __pyx_temp+1-1, 1+1); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 83, __pyx_L1_error) + __Pyx_XDECREF(__pyx_t_2); __pyx_t_2 = 0; + __Pyx_GOTREF(__pyx_t_1); + } else + #endif + { + __pyx_t_4 = PyTuple_New(1+1); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 83, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_4); + __Pyx_GIVEREF(__pyx_t_2); PyTuple_SET_ITEM(__pyx_t_4, 0, __pyx_t_2); __pyx_t_2 = NULL; + __Pyx_INCREF(__pyx_v_Colour); + __Pyx_GIVEREF(__pyx_v_Colour); + PyTuple_SET_ITEM(__pyx_t_4, 0+1, __pyx_v_Colour); + __pyx_t_1 = __Pyx_PyObject_Call(__pyx_t_3, __pyx_t_4, NULL); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 83, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_1); + __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0; + } + } + __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; + __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; + + /* "CAStar/AATC_Monitor_Viewer.pyx":82 + * self.CameraCoord.Set_YSize ((self.MaxCoords.Get_Y() - self.MinCoords.Get_Y())/self.CameraZoom) + * + * def CameraWipe(self,Colour = (0,0,0)): # <<<<<<<<<<<<<< + * self.gameDisplay.fill(Colour) + * def ResetDrawObject(self): + */ + + /* function exit code */ + __pyx_r = Py_None; __Pyx_INCREF(Py_None); + goto __pyx_L0; + __pyx_L1_error:; + __Pyx_XDECREF(__pyx_t_1); + __Pyx_XDECREF(__pyx_t_2); + __Pyx_XDECREF(__pyx_t_3); + __Pyx_XDECREF(__pyx_t_4); + __Pyx_AddTraceback("CAStar.AATC_Monitor_Viewer.Camera.CameraWipe", __pyx_clineno, __pyx_lineno, __pyx_filename); + __pyx_r = NULL; + __pyx_L0:; + __Pyx_XGIVEREF(__pyx_r); + __Pyx_RefNannyFinishContext(); + return __pyx_r; +} + +/* "CAStar/AATC_Monitor_Viewer.pyx":84 + * def CameraWipe(self,Colour = (0,0,0)): + * self.gameDisplay.fill(Colour) + * def ResetDrawObject(self): # <<<<<<<<<<<<<< + * self.DrawObjects = [] + * def AddDrawObject(self,Object,ForceDraw): + */ + +/* Python wrapper */ +static PyObject *__pyx_pw_6CAStar_19AATC_Monitor_Viewer_6Camera_19ResetDrawObject(PyObject *__pyx_self, PyObject *__pyx_v_self); /*proto*/ +static PyMethodDef __pyx_mdef_6CAStar_19AATC_Monitor_Viewer_6Camera_19ResetDrawObject = {"ResetDrawObject", (PyCFunction)__pyx_pw_6CAStar_19AATC_Monitor_Viewer_6Camera_19ResetDrawObject, METH_O, 0}; +static PyObject *__pyx_pw_6CAStar_19AATC_Monitor_Viewer_6Camera_19ResetDrawObject(PyObject *__pyx_self, PyObject *__pyx_v_self) { + PyObject *__pyx_r = 0; + __Pyx_RefNannyDeclarations + __Pyx_RefNannySetupContext("ResetDrawObject (wrapper)", 0); + __pyx_r = __pyx_pf_6CAStar_19AATC_Monitor_Viewer_6Camera_18ResetDrawObject(__pyx_self, ((PyObject *)__pyx_v_self)); + + /* function exit code */ + __Pyx_RefNannyFinishContext(); + return __pyx_r; +} + +static PyObject *__pyx_pf_6CAStar_19AATC_Monitor_Viewer_6Camera_18ResetDrawObject(CYTHON_UNUSED PyObject *__pyx_self, PyObject *__pyx_v_self) { + PyObject *__pyx_r = NULL; + __Pyx_RefNannyDeclarations + PyObject *__pyx_t_1 = NULL; + __Pyx_RefNannySetupContext("ResetDrawObject", 0); + + /* "CAStar/AATC_Monitor_Viewer.pyx":85 + * self.gameDisplay.fill(Colour) + * def ResetDrawObject(self): + * self.DrawObjects = [] # <<<<<<<<<<<<<< + * def AddDrawObject(self,Object,ForceDraw): + * self.DrawObjects.append({"Object":Object,"ForceDraw":ForceDraw}) + */ + __pyx_t_1 = PyList_New(0); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 85, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_1); + if (__Pyx_PyObject_SetAttrStr(__pyx_v_self, __pyx_n_s_DrawObjects, __pyx_t_1) < 0) __PYX_ERR(0, 85, __pyx_L1_error) + __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; + + /* "CAStar/AATC_Monitor_Viewer.pyx":84 + * def CameraWipe(self,Colour = (0,0,0)): + * self.gameDisplay.fill(Colour) + * def ResetDrawObject(self): # <<<<<<<<<<<<<< + * self.DrawObjects = [] + * def AddDrawObject(self,Object,ForceDraw): + */ + + /* function exit code */ + __pyx_r = Py_None; __Pyx_INCREF(Py_None); + goto __pyx_L0; + __pyx_L1_error:; + __Pyx_XDECREF(__pyx_t_1); + __Pyx_AddTraceback("CAStar.AATC_Monitor_Viewer.Camera.ResetDrawObject", __pyx_clineno, __pyx_lineno, __pyx_filename); + __pyx_r = NULL; + __pyx_L0:; + __Pyx_XGIVEREF(__pyx_r); + __Pyx_RefNannyFinishContext(); + return __pyx_r; +} + +/* "CAStar/AATC_Monitor_Viewer.pyx":86 + * def ResetDrawObject(self): + * self.DrawObjects = [] + * def AddDrawObject(self,Object,ForceDraw): # <<<<<<<<<<<<<< + * self.DrawObjects.append({"Object":Object,"ForceDraw":ForceDraw}) + * + */ + +/* Python wrapper */ +static PyObject *__pyx_pw_6CAStar_19AATC_Monitor_Viewer_6Camera_21AddDrawObject(PyObject *__pyx_self, PyObject *__pyx_args, PyObject *__pyx_kwds); /*proto*/ +static PyMethodDef __pyx_mdef_6CAStar_19AATC_Monitor_Viewer_6Camera_21AddDrawObject = {"AddDrawObject", (PyCFunction)__pyx_pw_6CAStar_19AATC_Monitor_Viewer_6Camera_21AddDrawObject, METH_VARARGS|METH_KEYWORDS, 0}; +static PyObject *__pyx_pw_6CAStar_19AATC_Monitor_Viewer_6Camera_21AddDrawObject(PyObject *__pyx_self, PyObject *__pyx_args, PyObject *__pyx_kwds) { + PyObject *__pyx_v_self = 0; + PyObject *__pyx_v_Object = 0; + PyObject *__pyx_v_ForceDraw = 0; + PyObject *__pyx_r = 0; + __Pyx_RefNannyDeclarations + __Pyx_RefNannySetupContext("AddDrawObject (wrapper)", 0); + { + static PyObject **__pyx_pyargnames[] = {&__pyx_n_s_self,&__pyx_n_s_Object,&__pyx_n_s_ForceDraw,0}; + PyObject* values[3] = {0,0,0}; + if (unlikely(__pyx_kwds)) { + Py_ssize_t kw_args; + const Py_ssize_t pos_args = PyTuple_GET_SIZE(__pyx_args); + switch (pos_args) { + case 3: values[2] = PyTuple_GET_ITEM(__pyx_args, 2); + CYTHON_FALLTHROUGH; + case 2: values[1] = PyTuple_GET_ITEM(__pyx_args, 1); + CYTHON_FALLTHROUGH; + case 1: values[0] = PyTuple_GET_ITEM(__pyx_args, 0); + CYTHON_FALLTHROUGH; + case 0: break; + default: goto __pyx_L5_argtuple_error; + } + kw_args = PyDict_Size(__pyx_kwds); + switch (pos_args) { + case 0: + if (likely((values[0] = PyDict_GetItem(__pyx_kwds, __pyx_n_s_self)) != 0)) kw_args--; + else goto __pyx_L5_argtuple_error; + CYTHON_FALLTHROUGH; + case 1: + if (likely((values[1] = PyDict_GetItem(__pyx_kwds, __pyx_n_s_Object)) != 0)) kw_args--; + else { + __Pyx_RaiseArgtupleInvalid("AddDrawObject", 1, 3, 3, 1); __PYX_ERR(0, 86, __pyx_L3_error) + } + CYTHON_FALLTHROUGH; + case 2: + if (likely((values[2] = PyDict_GetItem(__pyx_kwds, __pyx_n_s_ForceDraw)) != 0)) kw_args--; + else { + __Pyx_RaiseArgtupleInvalid("AddDrawObject", 1, 3, 3, 2); __PYX_ERR(0, 86, __pyx_L3_error) + } + } + if (unlikely(kw_args > 0)) { + if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_pyargnames, 0, values, pos_args, "AddDrawObject") < 0)) __PYX_ERR(0, 86, __pyx_L3_error) + } + } else if (PyTuple_GET_SIZE(__pyx_args) != 3) { + goto __pyx_L5_argtuple_error; + } else { + values[0] = PyTuple_GET_ITEM(__pyx_args, 0); + values[1] = PyTuple_GET_ITEM(__pyx_args, 1); + values[2] = PyTuple_GET_ITEM(__pyx_args, 2); + } + __pyx_v_self = values[0]; + __pyx_v_Object = values[1]; + __pyx_v_ForceDraw = values[2]; + } + goto __pyx_L4_argument_unpacking_done; + __pyx_L5_argtuple_error:; + __Pyx_RaiseArgtupleInvalid("AddDrawObject", 1, 3, 3, PyTuple_GET_SIZE(__pyx_args)); __PYX_ERR(0, 86, __pyx_L3_error) + __pyx_L3_error:; + __Pyx_AddTraceback("CAStar.AATC_Monitor_Viewer.Camera.AddDrawObject", __pyx_clineno, __pyx_lineno, __pyx_filename); + __Pyx_RefNannyFinishContext(); + return NULL; + __pyx_L4_argument_unpacking_done:; + __pyx_r = __pyx_pf_6CAStar_19AATC_Monitor_Viewer_6Camera_20AddDrawObject(__pyx_self, __pyx_v_self, __pyx_v_Object, __pyx_v_ForceDraw); + + /* function exit code */ + __Pyx_RefNannyFinishContext(); + return __pyx_r; +} + +static PyObject *__pyx_pf_6CAStar_19AATC_Monitor_Viewer_6Camera_20AddDrawObject(CYTHON_UNUSED PyObject *__pyx_self, PyObject *__pyx_v_self, PyObject *__pyx_v_Object, PyObject *__pyx_v_ForceDraw) { + PyObject *__pyx_r = NULL; + __Pyx_RefNannyDeclarations + PyObject *__pyx_t_1 = NULL; + PyObject *__pyx_t_2 = NULL; + int __pyx_t_3; + __Pyx_RefNannySetupContext("AddDrawObject", 0); + + /* "CAStar/AATC_Monitor_Viewer.pyx":87 + * self.DrawObjects = [] + * def AddDrawObject(self,Object,ForceDraw): + * self.DrawObjects.append({"Object":Object,"ForceDraw":ForceDraw}) # <<<<<<<<<<<<<< + * + * def Get_Coord(self): + */ + __pyx_t_1 = __Pyx_PyObject_GetAttrStr(__pyx_v_self, __pyx_n_s_DrawObjects); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 87, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_1); + __pyx_t_2 = PyDict_New(); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 87, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_2); + if (PyDict_SetItem(__pyx_t_2, __pyx_n_s_Object, __pyx_v_Object) < 0) __PYX_ERR(0, 87, __pyx_L1_error) + if (PyDict_SetItem(__pyx_t_2, __pyx_n_s_ForceDraw, __pyx_v_ForceDraw) < 0) __PYX_ERR(0, 87, __pyx_L1_error) + __pyx_t_3 = __Pyx_PyObject_Append(__pyx_t_1, __pyx_t_2); if (unlikely(__pyx_t_3 == -1)) __PYX_ERR(0, 87, __pyx_L1_error) + __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; + __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; + + /* "CAStar/AATC_Monitor_Viewer.pyx":86 + * def ResetDrawObject(self): + * self.DrawObjects = [] + * def AddDrawObject(self,Object,ForceDraw): # <<<<<<<<<<<<<< + * self.DrawObjects.append({"Object":Object,"ForceDraw":ForceDraw}) + * + */ + + /* function exit code */ + __pyx_r = Py_None; __Pyx_INCREF(Py_None); + goto __pyx_L0; + __pyx_L1_error:; + __Pyx_XDECREF(__pyx_t_1); + __Pyx_XDECREF(__pyx_t_2); + __Pyx_AddTraceback("CAStar.AATC_Monitor_Viewer.Camera.AddDrawObject", __pyx_clineno, __pyx_lineno, __pyx_filename); + __pyx_r = NULL; + __pyx_L0:; + __Pyx_XGIVEREF(__pyx_r); + __Pyx_RefNannyFinishContext(); + return __pyx_r; +} + +/* "CAStar/AATC_Monitor_Viewer.pyx":89 + * self.DrawObjects.append({"Object":Object,"ForceDraw":ForceDraw}) + * + * def Get_Coord(self): # <<<<<<<<<<<<<< + * return self.CameraCoord + * + */ + +/* Python wrapper */ +static PyObject *__pyx_pw_6CAStar_19AATC_Monitor_Viewer_6Camera_23Get_Coord(PyObject *__pyx_self, PyObject *__pyx_v_self); /*proto*/ +static PyMethodDef __pyx_mdef_6CAStar_19AATC_Monitor_Viewer_6Camera_23Get_Coord = {"Get_Coord", (PyCFunction)__pyx_pw_6CAStar_19AATC_Monitor_Viewer_6Camera_23Get_Coord, METH_O, 0}; +static PyObject *__pyx_pw_6CAStar_19AATC_Monitor_Viewer_6Camera_23Get_Coord(PyObject *__pyx_self, PyObject *__pyx_v_self) { + PyObject *__pyx_r = 0; + __Pyx_RefNannyDeclarations + __Pyx_RefNannySetupContext("Get_Coord (wrapper)", 0); + __pyx_r = __pyx_pf_6CAStar_19AATC_Monitor_Viewer_6Camera_22Get_Coord(__pyx_self, ((PyObject *)__pyx_v_self)); + + /* function exit code */ + __Pyx_RefNannyFinishContext(); + return __pyx_r; +} + +static PyObject *__pyx_pf_6CAStar_19AATC_Monitor_Viewer_6Camera_22Get_Coord(CYTHON_UNUSED PyObject *__pyx_self, PyObject *__pyx_v_self) { + PyObject *__pyx_r = NULL; + __Pyx_RefNannyDeclarations + PyObject *__pyx_t_1 = NULL; + __Pyx_RefNannySetupContext("Get_Coord", 0); + + /* "CAStar/AATC_Monitor_Viewer.pyx":90 + * + * def Get_Coord(self): + * return self.CameraCoord # <<<<<<<<<<<<<< + * + * def Draw(self): + */ + __Pyx_XDECREF(__pyx_r); + __pyx_t_1 = __Pyx_PyObject_GetAttrStr(__pyx_v_self, __pyx_n_s_CameraCoord); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 90, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_1); + __pyx_r = __pyx_t_1; + __pyx_t_1 = 0; + goto __pyx_L0; + + /* "CAStar/AATC_Monitor_Viewer.pyx":89 + * self.DrawObjects.append({"Object":Object,"ForceDraw":ForceDraw}) + * + * def Get_Coord(self): # <<<<<<<<<<<<<< + * return self.CameraCoord + * + */ + + /* function exit code */ + __pyx_L1_error:; + __Pyx_XDECREF(__pyx_t_1); + __Pyx_AddTraceback("CAStar.AATC_Monitor_Viewer.Camera.Get_Coord", __pyx_clineno, __pyx_lineno, __pyx_filename); + __pyx_r = NULL; + __pyx_L0:; + __Pyx_XGIVEREF(__pyx_r); + __Pyx_RefNannyFinishContext(); + return __pyx_r; +} + +/* "CAStar/AATC_Monitor_Viewer.pyx":92 + * return self.CameraCoord + * + * def Draw(self): # <<<<<<<<<<<<<< + * cdef float CameraEndX,CameraEndY,CameraX,CameraY,CameraXSize,CameraYSize,x,y,xSize,ySize,PosX,PosY + * cdef int width,height,xpixel,ypixel,font_size + */ + +/* Python wrapper */ +static PyObject *__pyx_pw_6CAStar_19AATC_Monitor_Viewer_6Camera_25Draw(PyObject *__pyx_self, PyObject *__pyx_v_self); /*proto*/ +static PyMethodDef __pyx_mdef_6CAStar_19AATC_Monitor_Viewer_6Camera_25Draw = {"Draw", (PyCFunction)__pyx_pw_6CAStar_19AATC_Monitor_Viewer_6Camera_25Draw, METH_O, 0}; +static PyObject *__pyx_pw_6CAStar_19AATC_Monitor_Viewer_6Camera_25Draw(PyObject *__pyx_self, PyObject *__pyx_v_self) { + PyObject *__pyx_r = 0; + __Pyx_RefNannyDeclarations + __Pyx_RefNannySetupContext("Draw (wrapper)", 0); + __pyx_r = __pyx_pf_6CAStar_19AATC_Monitor_Viewer_6Camera_24Draw(__pyx_self, ((PyObject *)__pyx_v_self)); + + /* function exit code */ + __Pyx_RefNannyFinishContext(); + return __pyx_r; +} + +static PyObject *__pyx_pf_6CAStar_19AATC_Monitor_Viewer_6Camera_24Draw(CYTHON_UNUSED PyObject *__pyx_self, PyObject *__pyx_v_self) { + float __pyx_v_CameraEndX; + float __pyx_v_CameraEndY; + float __pyx_v_CameraX; + float __pyx_v_CameraY; + float __pyx_v_CameraXSize; + float __pyx_v_CameraYSize; + float __pyx_v_x; + float __pyx_v_y; + float __pyx_v_xSize; + float __pyx_v_ySize; + float __pyx_v_PosX; + float __pyx_v_PosY; + int __pyx_v_width; + int __pyx_v_height; + int __pyx_v_xpixel; + int __pyx_v_ypixel; + int __pyx_v_font_size; + PyObject *__pyx_v_DrawObject = NULL; + PyObject *__pyx_v_Object = NULL; + PyObject *__pyx_v_Object_Coords = NULL; + PyObject *__pyx_v_image = NULL; + PyObject *__pyx_v_font = NULL; + PyObject *__pyx_r = NULL; + __Pyx_RefNannyDeclarations + PyObject *__pyx_t_1 = NULL; + PyObject *__pyx_t_2 = NULL; + PyObject *__pyx_t_3 = NULL; + PyObject *__pyx_t_4 = NULL; + float __pyx_t_5; + int __pyx_t_6; + int __pyx_t_7; + Py_ssize_t __pyx_t_8; + PyObject *(*__pyx_t_9)(PyObject *); + int __pyx_t_10; + int __pyx_t_11; + PyObject *__pyx_t_12 = NULL; + PyObject *__pyx_t_13 = NULL; + PyObject *__pyx_t_14 = NULL; + __Pyx_RefNannySetupContext("Draw", 0); + + /* "CAStar/AATC_Monitor_Viewer.pyx":96 + * cdef int width,height,xpixel,ypixel,font_size + * + * CameraEndX= self.CameraCoord.Get_X() + self.CameraCoord.Get_XSize() #Moved to new variablt to reduce recalculation # <<<<<<<<<<<<<< + * CameraEndY = self.CameraCoord.Get_Y() + self.CameraCoord.Get_YSize() + * CameraX = self.CameraCoord.Get_X() + */ + __pyx_t_2 = __Pyx_PyObject_GetAttrStr(__pyx_v_self, __pyx_n_s_CameraCoord); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 96, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_2); + __pyx_t_3 = __Pyx_PyObject_GetAttrStr(__pyx_t_2, __pyx_n_s_Get_X); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 96, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_3); + __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; + __pyx_t_2 = NULL; + if (CYTHON_UNPACK_METHODS && likely(PyMethod_Check(__pyx_t_3))) { + __pyx_t_2 = PyMethod_GET_SELF(__pyx_t_3); + if (likely(__pyx_t_2)) { + PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_3); + __Pyx_INCREF(__pyx_t_2); + __Pyx_INCREF(function); + __Pyx_DECREF_SET(__pyx_t_3, function); + } + } + if (__pyx_t_2) { + __pyx_t_1 = __Pyx_PyObject_CallOneArg(__pyx_t_3, __pyx_t_2); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 96, __pyx_L1_error) + __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; + } else { + __pyx_t_1 = __Pyx_PyObject_CallNoArg(__pyx_t_3); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 96, __pyx_L1_error) + } + __Pyx_GOTREF(__pyx_t_1); + __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; + __pyx_t_2 = __Pyx_PyObject_GetAttrStr(__pyx_v_self, __pyx_n_s_CameraCoord); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 96, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_2); + __pyx_t_4 = __Pyx_PyObject_GetAttrStr(__pyx_t_2, __pyx_n_s_Get_XSize); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 96, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_4); + __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; + __pyx_t_2 = NULL; + if (CYTHON_UNPACK_METHODS && likely(PyMethod_Check(__pyx_t_4))) { + __pyx_t_2 = PyMethod_GET_SELF(__pyx_t_4); + if (likely(__pyx_t_2)) { + PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_4); + __Pyx_INCREF(__pyx_t_2); + __Pyx_INCREF(function); + __Pyx_DECREF_SET(__pyx_t_4, function); + } + } + if (__pyx_t_2) { + __pyx_t_3 = __Pyx_PyObject_CallOneArg(__pyx_t_4, __pyx_t_2); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 96, __pyx_L1_error) + __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; + } else { + __pyx_t_3 = __Pyx_PyObject_CallNoArg(__pyx_t_4); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 96, __pyx_L1_error) + } + __Pyx_GOTREF(__pyx_t_3); + __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0; + __pyx_t_4 = PyNumber_Add(__pyx_t_1, __pyx_t_3); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 96, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_4); + __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; + __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; + __pyx_t_5 = __pyx_PyFloat_AsFloat(__pyx_t_4); if (unlikely((__pyx_t_5 == (float)-1) && PyErr_Occurred())) __PYX_ERR(0, 96, __pyx_L1_error) + __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0; + __pyx_v_CameraEndX = __pyx_t_5; + + /* "CAStar/AATC_Monitor_Viewer.pyx":97 + * + * CameraEndX= self.CameraCoord.Get_X() + self.CameraCoord.Get_XSize() #Moved to new variablt to reduce recalculation + * CameraEndY = self.CameraCoord.Get_Y() + self.CameraCoord.Get_YSize() # <<<<<<<<<<<<<< + * CameraX = self.CameraCoord.Get_X() + * CameraY = self.CameraCoord.Get_Y() + */ + __pyx_t_3 = __Pyx_PyObject_GetAttrStr(__pyx_v_self, __pyx_n_s_CameraCoord); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 97, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_3); + __pyx_t_1 = __Pyx_PyObject_GetAttrStr(__pyx_t_3, __pyx_n_s_Get_Y); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 97, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_1); + __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; + __pyx_t_3 = NULL; + if (CYTHON_UNPACK_METHODS && likely(PyMethod_Check(__pyx_t_1))) { + __pyx_t_3 = PyMethod_GET_SELF(__pyx_t_1); + if (likely(__pyx_t_3)) { + PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_1); + __Pyx_INCREF(__pyx_t_3); + __Pyx_INCREF(function); + __Pyx_DECREF_SET(__pyx_t_1, function); + } + } + if (__pyx_t_3) { + __pyx_t_4 = __Pyx_PyObject_CallOneArg(__pyx_t_1, __pyx_t_3); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 97, __pyx_L1_error) + __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; + } else { + __pyx_t_4 = __Pyx_PyObject_CallNoArg(__pyx_t_1); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 97, __pyx_L1_error) + } + __Pyx_GOTREF(__pyx_t_4); + __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; + __pyx_t_3 = __Pyx_PyObject_GetAttrStr(__pyx_v_self, __pyx_n_s_CameraCoord); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 97, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_3); + __pyx_t_2 = __Pyx_PyObject_GetAttrStr(__pyx_t_3, __pyx_n_s_Get_YSize); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 97, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_2); + __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; + __pyx_t_3 = NULL; + if (CYTHON_UNPACK_METHODS && likely(PyMethod_Check(__pyx_t_2))) { + __pyx_t_3 = PyMethod_GET_SELF(__pyx_t_2); + if (likely(__pyx_t_3)) { + PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_2); + __Pyx_INCREF(__pyx_t_3); + __Pyx_INCREF(function); + __Pyx_DECREF_SET(__pyx_t_2, function); + } + } + if (__pyx_t_3) { + __pyx_t_1 = __Pyx_PyObject_CallOneArg(__pyx_t_2, __pyx_t_3); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 97, __pyx_L1_error) + __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; + } else { + __pyx_t_1 = __Pyx_PyObject_CallNoArg(__pyx_t_2); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 97, __pyx_L1_error) + } + __Pyx_GOTREF(__pyx_t_1); + __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; + __pyx_t_2 = PyNumber_Add(__pyx_t_4, __pyx_t_1); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 97, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_2); + __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0; + __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; + __pyx_t_5 = __pyx_PyFloat_AsFloat(__pyx_t_2); if (unlikely((__pyx_t_5 == (float)-1) && PyErr_Occurred())) __PYX_ERR(0, 97, __pyx_L1_error) + __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; + __pyx_v_CameraEndY = __pyx_t_5; + + /* "CAStar/AATC_Monitor_Viewer.pyx":98 + * CameraEndX= self.CameraCoord.Get_X() + self.CameraCoord.Get_XSize() #Moved to new variablt to reduce recalculation + * CameraEndY = self.CameraCoord.Get_Y() + self.CameraCoord.Get_YSize() + * CameraX = self.CameraCoord.Get_X() # <<<<<<<<<<<<<< + * CameraY = self.CameraCoord.Get_Y() + * CameraXSize = self.CameraCoord.Get_XSize() + */ + __pyx_t_1 = __Pyx_PyObject_GetAttrStr(__pyx_v_self, __pyx_n_s_CameraCoord); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 98, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_1); + __pyx_t_4 = __Pyx_PyObject_GetAttrStr(__pyx_t_1, __pyx_n_s_Get_X); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 98, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_4); + __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; + __pyx_t_1 = NULL; + if (CYTHON_UNPACK_METHODS && likely(PyMethod_Check(__pyx_t_4))) { + __pyx_t_1 = PyMethod_GET_SELF(__pyx_t_4); + if (likely(__pyx_t_1)) { + PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_4); + __Pyx_INCREF(__pyx_t_1); + __Pyx_INCREF(function); + __Pyx_DECREF_SET(__pyx_t_4, function); + } + } + if (__pyx_t_1) { + __pyx_t_2 = __Pyx_PyObject_CallOneArg(__pyx_t_4, __pyx_t_1); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 98, __pyx_L1_error) + __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; + } else { + __pyx_t_2 = __Pyx_PyObject_CallNoArg(__pyx_t_4); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 98, __pyx_L1_error) + } + __Pyx_GOTREF(__pyx_t_2); + __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0; + __pyx_t_5 = __pyx_PyFloat_AsFloat(__pyx_t_2); if (unlikely((__pyx_t_5 == (float)-1) && PyErr_Occurred())) __PYX_ERR(0, 98, __pyx_L1_error) + __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; + __pyx_v_CameraX = __pyx_t_5; + + /* "CAStar/AATC_Monitor_Viewer.pyx":99 + * CameraEndY = self.CameraCoord.Get_Y() + self.CameraCoord.Get_YSize() + * CameraX = self.CameraCoord.Get_X() + * CameraY = self.CameraCoord.Get_Y() # <<<<<<<<<<<<<< + * CameraXSize = self.CameraCoord.Get_XSize() + * CameraYSize = self.CameraCoord.Get_YSize() + */ + __pyx_t_4 = __Pyx_PyObject_GetAttrStr(__pyx_v_self, __pyx_n_s_CameraCoord); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 99, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_4); + __pyx_t_1 = __Pyx_PyObject_GetAttrStr(__pyx_t_4, __pyx_n_s_Get_Y); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 99, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_1); + __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0; + __pyx_t_4 = NULL; + if (CYTHON_UNPACK_METHODS && likely(PyMethod_Check(__pyx_t_1))) { + __pyx_t_4 = PyMethod_GET_SELF(__pyx_t_1); + if (likely(__pyx_t_4)) { + PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_1); + __Pyx_INCREF(__pyx_t_4); + __Pyx_INCREF(function); + __Pyx_DECREF_SET(__pyx_t_1, function); + } + } + if (__pyx_t_4) { + __pyx_t_2 = __Pyx_PyObject_CallOneArg(__pyx_t_1, __pyx_t_4); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 99, __pyx_L1_error) + __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0; + } else { + __pyx_t_2 = __Pyx_PyObject_CallNoArg(__pyx_t_1); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 99, __pyx_L1_error) + } + __Pyx_GOTREF(__pyx_t_2); + __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; + __pyx_t_5 = __pyx_PyFloat_AsFloat(__pyx_t_2); if (unlikely((__pyx_t_5 == (float)-1) && PyErr_Occurred())) __PYX_ERR(0, 99, __pyx_L1_error) + __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; + __pyx_v_CameraY = __pyx_t_5; + + /* "CAStar/AATC_Monitor_Viewer.pyx":100 + * CameraX = self.CameraCoord.Get_X() + * CameraY = self.CameraCoord.Get_Y() + * CameraXSize = self.CameraCoord.Get_XSize() # <<<<<<<<<<<<<< + * CameraYSize = self.CameraCoord.Get_YSize() + * xpixel,ypixel = self.xpixel,self.ypixel + */ + __pyx_t_1 = __Pyx_PyObject_GetAttrStr(__pyx_v_self, __pyx_n_s_CameraCoord); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 100, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_1); + __pyx_t_4 = __Pyx_PyObject_GetAttrStr(__pyx_t_1, __pyx_n_s_Get_XSize); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 100, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_4); + __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; + __pyx_t_1 = NULL; + if (CYTHON_UNPACK_METHODS && likely(PyMethod_Check(__pyx_t_4))) { + __pyx_t_1 = PyMethod_GET_SELF(__pyx_t_4); + if (likely(__pyx_t_1)) { + PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_4); + __Pyx_INCREF(__pyx_t_1); + __Pyx_INCREF(function); + __Pyx_DECREF_SET(__pyx_t_4, function); + } + } + if (__pyx_t_1) { + __pyx_t_2 = __Pyx_PyObject_CallOneArg(__pyx_t_4, __pyx_t_1); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 100, __pyx_L1_error) + __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; + } else { + __pyx_t_2 = __Pyx_PyObject_CallNoArg(__pyx_t_4); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 100, __pyx_L1_error) + } + __Pyx_GOTREF(__pyx_t_2); + __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0; + __pyx_t_5 = __pyx_PyFloat_AsFloat(__pyx_t_2); if (unlikely((__pyx_t_5 == (float)-1) && PyErr_Occurred())) __PYX_ERR(0, 100, __pyx_L1_error) + __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; + __pyx_v_CameraXSize = __pyx_t_5; + + /* "CAStar/AATC_Monitor_Viewer.pyx":101 + * CameraY = self.CameraCoord.Get_Y() + * CameraXSize = self.CameraCoord.Get_XSize() + * CameraYSize = self.CameraCoord.Get_YSize() # <<<<<<<<<<<<<< + * xpixel,ypixel = self.xpixel,self.ypixel + * + */ + __pyx_t_4 = __Pyx_PyObject_GetAttrStr(__pyx_v_self, __pyx_n_s_CameraCoord); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 101, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_4); + __pyx_t_1 = __Pyx_PyObject_GetAttrStr(__pyx_t_4, __pyx_n_s_Get_YSize); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 101, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_1); + __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0; + __pyx_t_4 = NULL; + if (CYTHON_UNPACK_METHODS && likely(PyMethod_Check(__pyx_t_1))) { + __pyx_t_4 = PyMethod_GET_SELF(__pyx_t_1); + if (likely(__pyx_t_4)) { + PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_1); + __Pyx_INCREF(__pyx_t_4); + __Pyx_INCREF(function); + __Pyx_DECREF_SET(__pyx_t_1, function); + } + } + if (__pyx_t_4) { + __pyx_t_2 = __Pyx_PyObject_CallOneArg(__pyx_t_1, __pyx_t_4); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 101, __pyx_L1_error) + __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0; + } else { + __pyx_t_2 = __Pyx_PyObject_CallNoArg(__pyx_t_1); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 101, __pyx_L1_error) + } + __Pyx_GOTREF(__pyx_t_2); + __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; + __pyx_t_5 = __pyx_PyFloat_AsFloat(__pyx_t_2); if (unlikely((__pyx_t_5 == (float)-1) && PyErr_Occurred())) __PYX_ERR(0, 101, __pyx_L1_error) + __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; + __pyx_v_CameraYSize = __pyx_t_5; + + /* "CAStar/AATC_Monitor_Viewer.pyx":102 + * CameraXSize = self.CameraCoord.Get_XSize() + * CameraYSize = self.CameraCoord.Get_YSize() + * xpixel,ypixel = self.xpixel,self.ypixel # <<<<<<<<<<<<<< + * + * for DrawObject in self.DrawObjects: + */ + __pyx_t_2 = __Pyx_PyObject_GetAttrStr(__pyx_v_self, __pyx_n_s_xpixel); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 102, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_2); + __pyx_t_6 = __Pyx_PyInt_As_int(__pyx_t_2); if (unlikely((__pyx_t_6 == (int)-1) && PyErr_Occurred())) __PYX_ERR(0, 102, __pyx_L1_error) + __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; + __pyx_t_2 = __Pyx_PyObject_GetAttrStr(__pyx_v_self, __pyx_n_s_ypixel); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 102, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_2); + __pyx_t_7 = __Pyx_PyInt_As_int(__pyx_t_2); if (unlikely((__pyx_t_7 == (int)-1) && PyErr_Occurred())) __PYX_ERR(0, 102, __pyx_L1_error) + __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; + __pyx_v_xpixel = __pyx_t_6; + __pyx_v_ypixel = __pyx_t_7; + + /* "CAStar/AATC_Monitor_Viewer.pyx":104 + * xpixel,ypixel = self.xpixel,self.ypixel + * + * for DrawObject in self.DrawObjects: # <<<<<<<<<<<<<< + * Object = DrawObject["Object"] + * Object_Coords = Object.Get_Coords() + */ + __pyx_t_2 = __Pyx_PyObject_GetAttrStr(__pyx_v_self, __pyx_n_s_DrawObjects); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 104, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_2); + if (likely(PyList_CheckExact(__pyx_t_2)) || PyTuple_CheckExact(__pyx_t_2)) { + __pyx_t_1 = __pyx_t_2; __Pyx_INCREF(__pyx_t_1); __pyx_t_8 = 0; + __pyx_t_9 = NULL; + } else { + __pyx_t_8 = -1; __pyx_t_1 = PyObject_GetIter(__pyx_t_2); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 104, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_1); + __pyx_t_9 = Py_TYPE(__pyx_t_1)->tp_iternext; if (unlikely(!__pyx_t_9)) __PYX_ERR(0, 104, __pyx_L1_error) + } + __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; + for (;;) { + if (likely(!__pyx_t_9)) { + if (likely(PyList_CheckExact(__pyx_t_1))) { + if (__pyx_t_8 >= PyList_GET_SIZE(__pyx_t_1)) break; + #if CYTHON_ASSUME_SAFE_MACROS && !CYTHON_AVOID_BORROWED_REFS + __pyx_t_2 = PyList_GET_ITEM(__pyx_t_1, __pyx_t_8); __Pyx_INCREF(__pyx_t_2); __pyx_t_8++; if (unlikely(0 < 0)) __PYX_ERR(0, 104, __pyx_L1_error) + #else + __pyx_t_2 = PySequence_ITEM(__pyx_t_1, __pyx_t_8); __pyx_t_8++; if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 104, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_2); + #endif + } else { + if (__pyx_t_8 >= PyTuple_GET_SIZE(__pyx_t_1)) break; + #if CYTHON_ASSUME_SAFE_MACROS && !CYTHON_AVOID_BORROWED_REFS + __pyx_t_2 = PyTuple_GET_ITEM(__pyx_t_1, __pyx_t_8); __Pyx_INCREF(__pyx_t_2); __pyx_t_8++; if (unlikely(0 < 0)) __PYX_ERR(0, 104, __pyx_L1_error) + #else + __pyx_t_2 = PySequence_ITEM(__pyx_t_1, __pyx_t_8); __pyx_t_8++; if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 104, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_2); + #endif + } + } else { + __pyx_t_2 = __pyx_t_9(__pyx_t_1); + if (unlikely(!__pyx_t_2)) { + PyObject* exc_type = PyErr_Occurred(); + if (exc_type) { + if (likely(exc_type == PyExc_StopIteration || PyErr_GivenExceptionMatches(exc_type, PyExc_StopIteration))) PyErr_Clear(); + else __PYX_ERR(0, 104, __pyx_L1_error) + } + break; + } + __Pyx_GOTREF(__pyx_t_2); + } + __Pyx_XDECREF_SET(__pyx_v_DrawObject, __pyx_t_2); + __pyx_t_2 = 0; + + /* "CAStar/AATC_Monitor_Viewer.pyx":105 + * + * for DrawObject in self.DrawObjects: + * Object = DrawObject["Object"] # <<<<<<<<<<<<<< + * Object_Coords = Object.Get_Coords() + * x = Object_Coords.Get_X() + */ + __pyx_t_2 = PyObject_GetItem(__pyx_v_DrawObject, __pyx_n_s_Object); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 105, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_2); + __Pyx_XDECREF_SET(__pyx_v_Object, __pyx_t_2); + __pyx_t_2 = 0; + + /* "CAStar/AATC_Monitor_Viewer.pyx":106 + * for DrawObject in self.DrawObjects: + * Object = DrawObject["Object"] + * Object_Coords = Object.Get_Coords() # <<<<<<<<<<<<<< + * x = Object_Coords.Get_X() + * y = Object_Coords.Get_Y() + */ + __pyx_t_4 = __Pyx_PyObject_GetAttrStr(__pyx_v_Object, __pyx_n_s_Get_Coords); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 106, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_4); + __pyx_t_3 = NULL; + if (CYTHON_UNPACK_METHODS && likely(PyMethod_Check(__pyx_t_4))) { + __pyx_t_3 = PyMethod_GET_SELF(__pyx_t_4); + if (likely(__pyx_t_3)) { + PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_4); + __Pyx_INCREF(__pyx_t_3); + __Pyx_INCREF(function); + __Pyx_DECREF_SET(__pyx_t_4, function); + } + } + if (__pyx_t_3) { + __pyx_t_2 = __Pyx_PyObject_CallOneArg(__pyx_t_4, __pyx_t_3); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 106, __pyx_L1_error) + __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; + } else { + __pyx_t_2 = __Pyx_PyObject_CallNoArg(__pyx_t_4); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 106, __pyx_L1_error) + } + __Pyx_GOTREF(__pyx_t_2); + __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0; + __Pyx_XDECREF_SET(__pyx_v_Object_Coords, __pyx_t_2); + __pyx_t_2 = 0; + + /* "CAStar/AATC_Monitor_Viewer.pyx":107 + * Object = DrawObject["Object"] + * Object_Coords = Object.Get_Coords() + * x = Object_Coords.Get_X() # <<<<<<<<<<<<<< + * y = Object_Coords.Get_Y() + * xSize = Object_Coords.Get_XSize() + */ + __pyx_t_4 = __Pyx_PyObject_GetAttrStr(__pyx_v_Object_Coords, __pyx_n_s_Get_X); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 107, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_4); + __pyx_t_3 = NULL; + if (CYTHON_UNPACK_METHODS && likely(PyMethod_Check(__pyx_t_4))) { + __pyx_t_3 = PyMethod_GET_SELF(__pyx_t_4); + if (likely(__pyx_t_3)) { + PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_4); + __Pyx_INCREF(__pyx_t_3); + __Pyx_INCREF(function); + __Pyx_DECREF_SET(__pyx_t_4, function); + } + } + if (__pyx_t_3) { + __pyx_t_2 = __Pyx_PyObject_CallOneArg(__pyx_t_4, __pyx_t_3); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 107, __pyx_L1_error) + __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; + } else { + __pyx_t_2 = __Pyx_PyObject_CallNoArg(__pyx_t_4); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 107, __pyx_L1_error) + } + __Pyx_GOTREF(__pyx_t_2); + __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0; + __pyx_t_5 = __pyx_PyFloat_AsFloat(__pyx_t_2); if (unlikely((__pyx_t_5 == (float)-1) && PyErr_Occurred())) __PYX_ERR(0, 107, __pyx_L1_error) + __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; + __pyx_v_x = __pyx_t_5; + + /* "CAStar/AATC_Monitor_Viewer.pyx":108 + * Object_Coords = Object.Get_Coords() + * x = Object_Coords.Get_X() + * y = Object_Coords.Get_Y() # <<<<<<<<<<<<<< + * xSize = Object_Coords.Get_XSize() + * ySize = Object_Coords.Get_YSize() + */ + __pyx_t_4 = __Pyx_PyObject_GetAttrStr(__pyx_v_Object_Coords, __pyx_n_s_Get_Y); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 108, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_4); + __pyx_t_3 = NULL; + if (CYTHON_UNPACK_METHODS && likely(PyMethod_Check(__pyx_t_4))) { + __pyx_t_3 = PyMethod_GET_SELF(__pyx_t_4); + if (likely(__pyx_t_3)) { + PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_4); + __Pyx_INCREF(__pyx_t_3); + __Pyx_INCREF(function); + __Pyx_DECREF_SET(__pyx_t_4, function); + } + } + if (__pyx_t_3) { + __pyx_t_2 = __Pyx_PyObject_CallOneArg(__pyx_t_4, __pyx_t_3); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 108, __pyx_L1_error) + __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; + } else { + __pyx_t_2 = __Pyx_PyObject_CallNoArg(__pyx_t_4); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 108, __pyx_L1_error) + } + __Pyx_GOTREF(__pyx_t_2); + __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0; + __pyx_t_5 = __pyx_PyFloat_AsFloat(__pyx_t_2); if (unlikely((__pyx_t_5 == (float)-1) && PyErr_Occurred())) __PYX_ERR(0, 108, __pyx_L1_error) + __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; + __pyx_v_y = __pyx_t_5; + + /* "CAStar/AATC_Monitor_Viewer.pyx":109 + * x = Object_Coords.Get_X() + * y = Object_Coords.Get_Y() + * xSize = Object_Coords.Get_XSize() # <<<<<<<<<<<<<< + * ySize = Object_Coords.Get_YSize() + * if ((x < CameraEndX) and ((x+xSize) > CameraX)) and \ + */ + __pyx_t_4 = __Pyx_PyObject_GetAttrStr(__pyx_v_Object_Coords, __pyx_n_s_Get_XSize); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 109, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_4); + __pyx_t_3 = NULL; + if (CYTHON_UNPACK_METHODS && likely(PyMethod_Check(__pyx_t_4))) { + __pyx_t_3 = PyMethod_GET_SELF(__pyx_t_4); + if (likely(__pyx_t_3)) { + PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_4); + __Pyx_INCREF(__pyx_t_3); + __Pyx_INCREF(function); + __Pyx_DECREF_SET(__pyx_t_4, function); + } + } + if (__pyx_t_3) { + __pyx_t_2 = __Pyx_PyObject_CallOneArg(__pyx_t_4, __pyx_t_3); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 109, __pyx_L1_error) + __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; + } else { + __pyx_t_2 = __Pyx_PyObject_CallNoArg(__pyx_t_4); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 109, __pyx_L1_error) + } + __Pyx_GOTREF(__pyx_t_2); + __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0; + __pyx_t_5 = __pyx_PyFloat_AsFloat(__pyx_t_2); if (unlikely((__pyx_t_5 == (float)-1) && PyErr_Occurred())) __PYX_ERR(0, 109, __pyx_L1_error) + __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; + __pyx_v_xSize = __pyx_t_5; + + /* "CAStar/AATC_Monitor_Viewer.pyx":110 + * y = Object_Coords.Get_Y() + * xSize = Object_Coords.Get_XSize() + * ySize = Object_Coords.Get_YSize() # <<<<<<<<<<<<<< + * if ((x < CameraEndX) and ((x+xSize) > CameraX)) and \ + * ((y < CameraEndY) and ((y+ySize) > CameraY )) : #If DrawObject intersects with Camera , Render, otherwise ignore + */ + __pyx_t_4 = __Pyx_PyObject_GetAttrStr(__pyx_v_Object_Coords, __pyx_n_s_Get_YSize); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 110, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_4); + __pyx_t_3 = NULL; + if (CYTHON_UNPACK_METHODS && likely(PyMethod_Check(__pyx_t_4))) { + __pyx_t_3 = PyMethod_GET_SELF(__pyx_t_4); + if (likely(__pyx_t_3)) { + PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_4); + __Pyx_INCREF(__pyx_t_3); + __Pyx_INCREF(function); + __Pyx_DECREF_SET(__pyx_t_4, function); + } + } + if (__pyx_t_3) { + __pyx_t_2 = __Pyx_PyObject_CallOneArg(__pyx_t_4, __pyx_t_3); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 110, __pyx_L1_error) + __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; + } else { + __pyx_t_2 = __Pyx_PyObject_CallNoArg(__pyx_t_4); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 110, __pyx_L1_error) + } + __Pyx_GOTREF(__pyx_t_2); + __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0; + __pyx_t_5 = __pyx_PyFloat_AsFloat(__pyx_t_2); if (unlikely((__pyx_t_5 == (float)-1) && PyErr_Occurred())) __PYX_ERR(0, 110, __pyx_L1_error) + __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; + __pyx_v_ySize = __pyx_t_5; + + /* "CAStar/AATC_Monitor_Viewer.pyx":111 + * xSize = Object_Coords.Get_XSize() + * ySize = Object_Coords.Get_YSize() + * if ((x < CameraEndX) and ((x+xSize) > CameraX)) and \ # <<<<<<<<<<<<<< + * ((y < CameraEndY) and ((y+ySize) > CameraY )) : #If DrawObject intersects with Camera , Render, otherwise ignore + * + */ + __pyx_t_11 = ((__pyx_v_x < __pyx_v_CameraEndX) != 0); + if (__pyx_t_11) { + } else { + __pyx_t_10 = __pyx_t_11; + goto __pyx_L6_bool_binop_done; + } + __pyx_t_11 = (((__pyx_v_x + __pyx_v_xSize) > __pyx_v_CameraX) != 0); + if (__pyx_t_11) { + } else { + __pyx_t_10 = __pyx_t_11; + goto __pyx_L6_bool_binop_done; + } + + /* "CAStar/AATC_Monitor_Viewer.pyx":112 + * ySize = Object_Coords.Get_YSize() + * if ((x < CameraEndX) and ((x+xSize) > CameraX)) and \ + * ((y < CameraEndY) and ((y+ySize) > CameraY )) : #If DrawObject intersects with Camera , Render, otherwise ignore # <<<<<<<<<<<<<< + * + * + */ + __pyx_t_11 = ((__pyx_v_y < __pyx_v_CameraEndY) != 0); + if (__pyx_t_11) { + } else { + __pyx_t_10 = __pyx_t_11; + goto __pyx_L6_bool_binop_done; + } + __pyx_t_11 = (((__pyx_v_y + __pyx_v_ySize) > __pyx_v_CameraY) != 0); + __pyx_t_10 = __pyx_t_11; + __pyx_L6_bool_binop_done:; + + /* "CAStar/AATC_Monitor_Viewer.pyx":111 + * xSize = Object_Coords.Get_XSize() + * ySize = Object_Coords.Get_YSize() + * if ((x < CameraEndX) and ((x+xSize) > CameraX)) and \ # <<<<<<<<<<<<<< + * ((y < CameraEndY) and ((y+ySize) > CameraY )) : #If DrawObject intersects with Camera , Render, otherwise ignore + * + */ + if (__pyx_t_10) { + + /* "CAStar/AATC_Monitor_Viewer.pyx":115 + * + * + * width,height = int(xSize/CameraXSize*xpixel) ,int(ySize/CameraYSize*ypixel) # Would benifit from being cythonised # <<<<<<<<<<<<<< + * if width > 0 and height > 0: + * PosX = ((x- CameraX)/CameraXSize)* xpixel # Would benifit from being cythonised + */ + __pyx_v_width = ((int)((__pyx_v_xSize / __pyx_v_CameraXSize) * __pyx_v_xpixel)); + __pyx_v_height = ((int)((__pyx_v_ySize / __pyx_v_CameraYSize) * __pyx_v_ypixel)); + + /* "CAStar/AATC_Monitor_Viewer.pyx":116 + * + * width,height = int(xSize/CameraXSize*xpixel) ,int(ySize/CameraYSize*ypixel) # Would benifit from being cythonised + * if width > 0 and height > 0: # <<<<<<<<<<<<<< + * PosX = ((x- CameraX)/CameraXSize)* xpixel # Would benifit from being cythonised + * PosY = ((y- CameraY)/CameraYSize)* ypixel + */ + __pyx_t_11 = ((__pyx_v_width > 0) != 0); + if (__pyx_t_11) { + } else { + __pyx_t_10 = __pyx_t_11; + goto __pyx_L11_bool_binop_done; + } + __pyx_t_11 = ((__pyx_v_height > 0) != 0); + __pyx_t_10 = __pyx_t_11; + __pyx_L11_bool_binop_done:; + if (__pyx_t_10) { + + /* "CAStar/AATC_Monitor_Viewer.pyx":117 + * width,height = int(xSize/CameraXSize*xpixel) ,int(ySize/CameraYSize*ypixel) # Would benifit from being cythonised + * if width > 0 and height > 0: + * PosX = ((x- CameraX)/CameraXSize)* xpixel # Would benifit from being cythonised # <<<<<<<<<<<<<< + * PosY = ((y- CameraY)/CameraYSize)* ypixel + * width = MaxLimit(width,xpixel) + */ + __pyx_v_PosX = (((__pyx_v_x - __pyx_v_CameraX) / __pyx_v_CameraXSize) * __pyx_v_xpixel); + + /* "CAStar/AATC_Monitor_Viewer.pyx":118 + * if width > 0 and height > 0: + * PosX = ((x- CameraX)/CameraXSize)* xpixel # Would benifit from being cythonised + * PosY = ((y- CameraY)/CameraYSize)* ypixel # <<<<<<<<<<<<<< + * width = MaxLimit(width,xpixel) + * height = MaxLimit(height,ypixel) + */ + __pyx_v_PosY = (((__pyx_v_y - __pyx_v_CameraY) / __pyx_v_CameraYSize) * __pyx_v_ypixel); + + /* "CAStar/AATC_Monitor_Viewer.pyx":119 + * PosX = ((x- CameraX)/CameraXSize)* xpixel # Would benifit from being cythonised + * PosY = ((y- CameraY)/CameraYSize)* ypixel + * width = MaxLimit(width,xpixel) # <<<<<<<<<<<<<< + * height = MaxLimit(height,ypixel) + * font_size = int(100*width/xpixel) # Would benifit from being cythonised + */ + __pyx_v_width = __pyx_f_6CAStar_19AATC_Monitor_Viewer_MaxLimit(__pyx_v_width, __pyx_v_xpixel); + + /* "CAStar/AATC_Monitor_Viewer.pyx":120 + * PosY = ((y- CameraY)/CameraYSize)* ypixel + * width = MaxLimit(width,xpixel) + * height = MaxLimit(height,ypixel) # <<<<<<<<<<<<<< + * font_size = int(100*width/xpixel) # Would benifit from being cythonised + * image = Object.Make_Image(width,height) + */ + __pyx_v_height = __pyx_f_6CAStar_19AATC_Monitor_Viewer_MaxLimit(__pyx_v_height, __pyx_v_ypixel); + + /* "CAStar/AATC_Monitor_Viewer.pyx":121 + * width = MaxLimit(width,xpixel) + * height = MaxLimit(height,ypixel) + * font_size = int(100*width/xpixel) # Would benifit from being cythonised # <<<<<<<<<<<<<< + * image = Object.Make_Image(width,height) + * self.gameDisplay.blit(image,(PosX,PosY)) + */ + __pyx_v_font_size = ((int)((0x64 * __pyx_v_width) / __pyx_v_xpixel)); + + /* "CAStar/AATC_Monitor_Viewer.pyx":122 + * height = MaxLimit(height,ypixel) + * font_size = int(100*width/xpixel) # Would benifit from being cythonised + * image = Object.Make_Image(width,height) # <<<<<<<<<<<<<< + * self.gameDisplay.blit(image,(PosX,PosY)) + * if font_size > 5: + */ + __pyx_t_4 = __Pyx_PyObject_GetAttrStr(__pyx_v_Object, __pyx_n_s_Make_Image); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 122, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_4); + __pyx_t_3 = __Pyx_PyInt_From_int(__pyx_v_width); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 122, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_3); + __pyx_t_12 = __Pyx_PyInt_From_int(__pyx_v_height); if (unlikely(!__pyx_t_12)) __PYX_ERR(0, 122, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_12); + __pyx_t_13 = NULL; + __pyx_t_7 = 0; + if (CYTHON_UNPACK_METHODS && likely(PyMethod_Check(__pyx_t_4))) { + __pyx_t_13 = PyMethod_GET_SELF(__pyx_t_4); + if (likely(__pyx_t_13)) { + PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_4); + __Pyx_INCREF(__pyx_t_13); + __Pyx_INCREF(function); + __Pyx_DECREF_SET(__pyx_t_4, function); + __pyx_t_7 = 1; + } + } + #if CYTHON_FAST_PYCALL + if (PyFunction_Check(__pyx_t_4)) { + PyObject *__pyx_temp[3] = {__pyx_t_13, __pyx_t_3, __pyx_t_12}; + __pyx_t_2 = __Pyx_PyFunction_FastCall(__pyx_t_4, __pyx_temp+1-__pyx_t_7, 2+__pyx_t_7); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 122, __pyx_L1_error) + __Pyx_XDECREF(__pyx_t_13); __pyx_t_13 = 0; + __Pyx_GOTREF(__pyx_t_2); + __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; + __Pyx_DECREF(__pyx_t_12); __pyx_t_12 = 0; + } else + #endif + #if CYTHON_FAST_PYCCALL + if (__Pyx_PyFastCFunction_Check(__pyx_t_4)) { + PyObject *__pyx_temp[3] = {__pyx_t_13, __pyx_t_3, __pyx_t_12}; + __pyx_t_2 = __Pyx_PyCFunction_FastCall(__pyx_t_4, __pyx_temp+1-__pyx_t_7, 2+__pyx_t_7); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 122, __pyx_L1_error) + __Pyx_XDECREF(__pyx_t_13); __pyx_t_13 = 0; + __Pyx_GOTREF(__pyx_t_2); + __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; + __Pyx_DECREF(__pyx_t_12); __pyx_t_12 = 0; + } else + #endif + { + __pyx_t_14 = PyTuple_New(2+__pyx_t_7); if (unlikely(!__pyx_t_14)) __PYX_ERR(0, 122, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_14); + if (__pyx_t_13) { + __Pyx_GIVEREF(__pyx_t_13); PyTuple_SET_ITEM(__pyx_t_14, 0, __pyx_t_13); __pyx_t_13 = NULL; + } + __Pyx_GIVEREF(__pyx_t_3); + PyTuple_SET_ITEM(__pyx_t_14, 0+__pyx_t_7, __pyx_t_3); + __Pyx_GIVEREF(__pyx_t_12); + PyTuple_SET_ITEM(__pyx_t_14, 1+__pyx_t_7, __pyx_t_12); + __pyx_t_3 = 0; + __pyx_t_12 = 0; + __pyx_t_2 = __Pyx_PyObject_Call(__pyx_t_4, __pyx_t_14, NULL); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 122, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_2); + __Pyx_DECREF(__pyx_t_14); __pyx_t_14 = 0; + } + __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0; + __Pyx_XDECREF_SET(__pyx_v_image, __pyx_t_2); + __pyx_t_2 = 0; + + /* "CAStar/AATC_Monitor_Viewer.pyx":123 + * font_size = int(100*width/xpixel) # Would benifit from being cythonised + * image = Object.Make_Image(width,height) + * self.gameDisplay.blit(image,(PosX,PosY)) # <<<<<<<<<<<<<< + * if font_size > 5: + * font = (None, font_size) + */ + __pyx_t_4 = __Pyx_PyObject_GetAttrStr(__pyx_v_self, __pyx_n_s_gameDisplay); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 123, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_4); + __pyx_t_14 = __Pyx_PyObject_GetAttrStr(__pyx_t_4, __pyx_n_s_blit); if (unlikely(!__pyx_t_14)) __PYX_ERR(0, 123, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_14); + __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0; + __pyx_t_4 = PyFloat_FromDouble(__pyx_v_PosX); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 123, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_4); + __pyx_t_12 = PyFloat_FromDouble(__pyx_v_PosY); if (unlikely(!__pyx_t_12)) __PYX_ERR(0, 123, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_12); + __pyx_t_3 = PyTuple_New(2); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 123, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_3); + __Pyx_GIVEREF(__pyx_t_4); + PyTuple_SET_ITEM(__pyx_t_3, 0, __pyx_t_4); + __Pyx_GIVEREF(__pyx_t_12); + PyTuple_SET_ITEM(__pyx_t_3, 1, __pyx_t_12); + __pyx_t_4 = 0; + __pyx_t_12 = 0; + __pyx_t_12 = NULL; + __pyx_t_7 = 0; + if (CYTHON_UNPACK_METHODS && likely(PyMethod_Check(__pyx_t_14))) { + __pyx_t_12 = PyMethod_GET_SELF(__pyx_t_14); + if (likely(__pyx_t_12)) { + PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_14); + __Pyx_INCREF(__pyx_t_12); + __Pyx_INCREF(function); + __Pyx_DECREF_SET(__pyx_t_14, function); + __pyx_t_7 = 1; + } + } + #if CYTHON_FAST_PYCALL + if (PyFunction_Check(__pyx_t_14)) { + PyObject *__pyx_temp[3] = {__pyx_t_12, __pyx_v_image, __pyx_t_3}; + __pyx_t_2 = __Pyx_PyFunction_FastCall(__pyx_t_14, __pyx_temp+1-__pyx_t_7, 2+__pyx_t_7); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 123, __pyx_L1_error) + __Pyx_XDECREF(__pyx_t_12); __pyx_t_12 = 0; + __Pyx_GOTREF(__pyx_t_2); + __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; + } else + #endif + #if CYTHON_FAST_PYCCALL + if (__Pyx_PyFastCFunction_Check(__pyx_t_14)) { + PyObject *__pyx_temp[3] = {__pyx_t_12, __pyx_v_image, __pyx_t_3}; + __pyx_t_2 = __Pyx_PyCFunction_FastCall(__pyx_t_14, __pyx_temp+1-__pyx_t_7, 2+__pyx_t_7); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 123, __pyx_L1_error) + __Pyx_XDECREF(__pyx_t_12); __pyx_t_12 = 0; + __Pyx_GOTREF(__pyx_t_2); + __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; + } else + #endif + { + __pyx_t_4 = PyTuple_New(2+__pyx_t_7); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 123, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_4); + if (__pyx_t_12) { + __Pyx_GIVEREF(__pyx_t_12); PyTuple_SET_ITEM(__pyx_t_4, 0, __pyx_t_12); __pyx_t_12 = NULL; + } + __Pyx_INCREF(__pyx_v_image); + __Pyx_GIVEREF(__pyx_v_image); + PyTuple_SET_ITEM(__pyx_t_4, 0+__pyx_t_7, __pyx_v_image); + __Pyx_GIVEREF(__pyx_t_3); + PyTuple_SET_ITEM(__pyx_t_4, 1+__pyx_t_7, __pyx_t_3); + __pyx_t_3 = 0; + __pyx_t_2 = __Pyx_PyObject_Call(__pyx_t_14, __pyx_t_4, NULL); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 123, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_2); + __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0; + } + __Pyx_DECREF(__pyx_t_14); __pyx_t_14 = 0; + __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; + + /* "CAStar/AATC_Monitor_Viewer.pyx":124 + * image = Object.Make_Image(width,height) + * self.gameDisplay.blit(image,(PosX,PosY)) + * if font_size > 5: # <<<<<<<<<<<<<< + * font = (None, font_size) + * self.gameDisplay.blit(Object.Make_Text(font) ,(PosX+width,PosY)) + */ + __pyx_t_10 = ((__pyx_v_font_size > 5) != 0); + if (__pyx_t_10) { + + /* "CAStar/AATC_Monitor_Viewer.pyx":125 + * self.gameDisplay.blit(image,(PosX,PosY)) + * if font_size > 5: + * font = (None, font_size) # <<<<<<<<<<<<<< + * self.gameDisplay.blit(Object.Make_Text(font) ,(PosX+width,PosY)) + * + */ + __pyx_t_2 = __Pyx_PyInt_From_int(__pyx_v_font_size); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 125, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_2); + __pyx_t_14 = PyTuple_New(2); if (unlikely(!__pyx_t_14)) __PYX_ERR(0, 125, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_14); + __Pyx_INCREF(Py_None); + __Pyx_GIVEREF(Py_None); + PyTuple_SET_ITEM(__pyx_t_14, 0, Py_None); + __Pyx_GIVEREF(__pyx_t_2); + PyTuple_SET_ITEM(__pyx_t_14, 1, __pyx_t_2); + __pyx_t_2 = 0; + __Pyx_XDECREF_SET(__pyx_v_font, ((PyObject*)__pyx_t_14)); + __pyx_t_14 = 0; + + /* "CAStar/AATC_Monitor_Viewer.pyx":126 + * if font_size > 5: + * font = (None, font_size) + * self.gameDisplay.blit(Object.Make_Text(font) ,(PosX+width,PosY)) # <<<<<<<<<<<<<< + * + * + */ + __pyx_t_2 = __Pyx_PyObject_GetAttrStr(__pyx_v_self, __pyx_n_s_gameDisplay); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 126, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_2); + __pyx_t_4 = __Pyx_PyObject_GetAttrStr(__pyx_t_2, __pyx_n_s_blit); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 126, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_4); + __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; + __pyx_t_3 = __Pyx_PyObject_GetAttrStr(__pyx_v_Object, __pyx_n_s_Make_Text); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 126, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_3); + __pyx_t_12 = NULL; + if (CYTHON_UNPACK_METHODS && likely(PyMethod_Check(__pyx_t_3))) { + __pyx_t_12 = PyMethod_GET_SELF(__pyx_t_3); + if (likely(__pyx_t_12)) { + PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_3); + __Pyx_INCREF(__pyx_t_12); + __Pyx_INCREF(function); + __Pyx_DECREF_SET(__pyx_t_3, function); + } + } + if (!__pyx_t_12) { + __pyx_t_2 = __Pyx_PyObject_CallOneArg(__pyx_t_3, __pyx_v_font); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 126, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_2); + } else { + #if CYTHON_FAST_PYCALL + if (PyFunction_Check(__pyx_t_3)) { + PyObject *__pyx_temp[2] = {__pyx_t_12, __pyx_v_font}; + __pyx_t_2 = __Pyx_PyFunction_FastCall(__pyx_t_3, __pyx_temp+1-1, 1+1); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 126, __pyx_L1_error) + __Pyx_XDECREF(__pyx_t_12); __pyx_t_12 = 0; + __Pyx_GOTREF(__pyx_t_2); + } else + #endif + #if CYTHON_FAST_PYCCALL + if (__Pyx_PyFastCFunction_Check(__pyx_t_3)) { + PyObject *__pyx_temp[2] = {__pyx_t_12, __pyx_v_font}; + __pyx_t_2 = __Pyx_PyCFunction_FastCall(__pyx_t_3, __pyx_temp+1-1, 1+1); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 126, __pyx_L1_error) + __Pyx_XDECREF(__pyx_t_12); __pyx_t_12 = 0; + __Pyx_GOTREF(__pyx_t_2); + } else + #endif + { + __pyx_t_13 = PyTuple_New(1+1); if (unlikely(!__pyx_t_13)) __PYX_ERR(0, 126, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_13); + __Pyx_GIVEREF(__pyx_t_12); PyTuple_SET_ITEM(__pyx_t_13, 0, __pyx_t_12); __pyx_t_12 = NULL; + __Pyx_INCREF(__pyx_v_font); + __Pyx_GIVEREF(__pyx_v_font); + PyTuple_SET_ITEM(__pyx_t_13, 0+1, __pyx_v_font); + __pyx_t_2 = __Pyx_PyObject_Call(__pyx_t_3, __pyx_t_13, NULL); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 126, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_2); + __Pyx_DECREF(__pyx_t_13); __pyx_t_13 = 0; + } + } + __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; + __pyx_t_3 = PyFloat_FromDouble((__pyx_v_PosX + __pyx_v_width)); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 126, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_3); + __pyx_t_13 = PyFloat_FromDouble(__pyx_v_PosY); if (unlikely(!__pyx_t_13)) __PYX_ERR(0, 126, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_13); + __pyx_t_12 = PyTuple_New(2); if (unlikely(!__pyx_t_12)) __PYX_ERR(0, 126, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_12); + __Pyx_GIVEREF(__pyx_t_3); + PyTuple_SET_ITEM(__pyx_t_12, 0, __pyx_t_3); + __Pyx_GIVEREF(__pyx_t_13); + PyTuple_SET_ITEM(__pyx_t_12, 1, __pyx_t_13); + __pyx_t_3 = 0; + __pyx_t_13 = 0; + __pyx_t_13 = NULL; + __pyx_t_7 = 0; + if (CYTHON_UNPACK_METHODS && likely(PyMethod_Check(__pyx_t_4))) { + __pyx_t_13 = PyMethod_GET_SELF(__pyx_t_4); + if (likely(__pyx_t_13)) { + PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_4); + __Pyx_INCREF(__pyx_t_13); + __Pyx_INCREF(function); + __Pyx_DECREF_SET(__pyx_t_4, function); + __pyx_t_7 = 1; + } + } + #if CYTHON_FAST_PYCALL + if (PyFunction_Check(__pyx_t_4)) { + PyObject *__pyx_temp[3] = {__pyx_t_13, __pyx_t_2, __pyx_t_12}; + __pyx_t_14 = __Pyx_PyFunction_FastCall(__pyx_t_4, __pyx_temp+1-__pyx_t_7, 2+__pyx_t_7); if (unlikely(!__pyx_t_14)) __PYX_ERR(0, 126, __pyx_L1_error) + __Pyx_XDECREF(__pyx_t_13); __pyx_t_13 = 0; + __Pyx_GOTREF(__pyx_t_14); + __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; + __Pyx_DECREF(__pyx_t_12); __pyx_t_12 = 0; + } else + #endif + #if CYTHON_FAST_PYCCALL + if (__Pyx_PyFastCFunction_Check(__pyx_t_4)) { + PyObject *__pyx_temp[3] = {__pyx_t_13, __pyx_t_2, __pyx_t_12}; + __pyx_t_14 = __Pyx_PyCFunction_FastCall(__pyx_t_4, __pyx_temp+1-__pyx_t_7, 2+__pyx_t_7); if (unlikely(!__pyx_t_14)) __PYX_ERR(0, 126, __pyx_L1_error) + __Pyx_XDECREF(__pyx_t_13); __pyx_t_13 = 0; + __Pyx_GOTREF(__pyx_t_14); + __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; + __Pyx_DECREF(__pyx_t_12); __pyx_t_12 = 0; + } else + #endif + { + __pyx_t_3 = PyTuple_New(2+__pyx_t_7); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 126, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_3); + if (__pyx_t_13) { + __Pyx_GIVEREF(__pyx_t_13); PyTuple_SET_ITEM(__pyx_t_3, 0, __pyx_t_13); __pyx_t_13 = NULL; + } + __Pyx_GIVEREF(__pyx_t_2); + PyTuple_SET_ITEM(__pyx_t_3, 0+__pyx_t_7, __pyx_t_2); + __Pyx_GIVEREF(__pyx_t_12); + PyTuple_SET_ITEM(__pyx_t_3, 1+__pyx_t_7, __pyx_t_12); + __pyx_t_2 = 0; + __pyx_t_12 = 0; + __pyx_t_14 = __Pyx_PyObject_Call(__pyx_t_4, __pyx_t_3, NULL); if (unlikely(!__pyx_t_14)) __PYX_ERR(0, 126, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_14); + __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; + } + __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0; + __Pyx_DECREF(__pyx_t_14); __pyx_t_14 = 0; + + /* "CAStar/AATC_Monitor_Viewer.pyx":124 + * image = Object.Make_Image(width,height) + * self.gameDisplay.blit(image,(PosX,PosY)) + * if font_size > 5: # <<<<<<<<<<<<<< + * font = (None, font_size) + * self.gameDisplay.blit(Object.Make_Text(font) ,(PosX+width,PosY)) + */ + } + + /* "CAStar/AATC_Monitor_Viewer.pyx":116 + * + * width,height = int(xSize/CameraXSize*xpixel) ,int(ySize/CameraYSize*ypixel) # Would benifit from being cythonised + * if width > 0 and height > 0: # <<<<<<<<<<<<<< + * PosX = ((x- CameraX)/CameraXSize)* xpixel # Would benifit from being cythonised + * PosY = ((y- CameraY)/CameraYSize)* ypixel + */ + } + + /* "CAStar/AATC_Monitor_Viewer.pyx":111 + * xSize = Object_Coords.Get_XSize() + * ySize = Object_Coords.Get_YSize() + * if ((x < CameraEndX) and ((x+xSize) > CameraX)) and \ # <<<<<<<<<<<<<< + * ((y < CameraEndY) and ((y+ySize) > CameraY )) : #If DrawObject intersects with Camera , Render, otherwise ignore + * + */ + } + + /* "CAStar/AATC_Monitor_Viewer.pyx":104 + * xpixel,ypixel = self.xpixel,self.ypixel + * + * for DrawObject in self.DrawObjects: # <<<<<<<<<<<<<< + * Object = DrawObject["Object"] + * Object_Coords = Object.Get_Coords() + */ + } + __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; + + /* "CAStar/AATC_Monitor_Viewer.pyx":92 + * return self.CameraCoord + * + * def Draw(self): # <<<<<<<<<<<<<< + * cdef float CameraEndX,CameraEndY,CameraX,CameraY,CameraXSize,CameraYSize,x,y,xSize,ySize,PosX,PosY + * cdef int width,height,xpixel,ypixel,font_size + */ + + /* function exit code */ + __pyx_r = Py_None; __Pyx_INCREF(Py_None); + goto __pyx_L0; + __pyx_L1_error:; + __Pyx_XDECREF(__pyx_t_1); + __Pyx_XDECREF(__pyx_t_2); + __Pyx_XDECREF(__pyx_t_3); + __Pyx_XDECREF(__pyx_t_4); + __Pyx_XDECREF(__pyx_t_12); + __Pyx_XDECREF(__pyx_t_13); + __Pyx_XDECREF(__pyx_t_14); + __Pyx_AddTraceback("CAStar.AATC_Monitor_Viewer.Camera.Draw", __pyx_clineno, __pyx_lineno, __pyx_filename); + __pyx_r = NULL; + __pyx_L0:; + __Pyx_XDECREF(__pyx_v_DrawObject); + __Pyx_XDECREF(__pyx_v_Object); + __Pyx_XDECREF(__pyx_v_Object_Coords); + __Pyx_XDECREF(__pyx_v_image); + __Pyx_XDECREF(__pyx_v_font); + __Pyx_XGIVEREF(__pyx_r); + __Pyx_RefNannyFinishContext(); + return __pyx_r; +} + +/* "CAStar/AATC_Monitor_Viewer.pyx":134 + * + * class Monitor_Sprite(pygame.sprite.Sprite): + * def __init__(self,CoordObject,Type = "",Text = "",Colour = (255,255,255)): # <<<<<<<<<<<<<< + * self.Coords = CoordObject + * self.Type = Type + */ + +/* Python wrapper */ +static PyObject *__pyx_pw_6CAStar_19AATC_Monitor_Viewer_14Monitor_Sprite_1__init__(PyObject *__pyx_self, PyObject *__pyx_args, PyObject *__pyx_kwds); /*proto*/ +static PyMethodDef __pyx_mdef_6CAStar_19AATC_Monitor_Viewer_14Monitor_Sprite_1__init__ = {"__init__", (PyCFunction)__pyx_pw_6CAStar_19AATC_Monitor_Viewer_14Monitor_Sprite_1__init__, METH_VARARGS|METH_KEYWORDS, 0}; +static PyObject *__pyx_pw_6CAStar_19AATC_Monitor_Viewer_14Monitor_Sprite_1__init__(PyObject *__pyx_self, PyObject *__pyx_args, PyObject *__pyx_kwds) { + PyObject *__pyx_v_self = 0; + PyObject *__pyx_v_CoordObject = 0; + PyObject *__pyx_v_Type = 0; + PyObject *__pyx_v_Text = 0; + PyObject *__pyx_v_Colour = 0; + PyObject *__pyx_r = 0; + __Pyx_RefNannyDeclarations + __Pyx_RefNannySetupContext("__init__ (wrapper)", 0); + { + static PyObject **__pyx_pyargnames[] = {&__pyx_n_s_self,&__pyx_n_s_CoordObject,&__pyx_n_s_Type,&__pyx_n_s_Text,&__pyx_n_s_Colour,0}; + PyObject* values[5] = {0,0,0,0,0}; + values[2] = ((PyObject *)((PyObject*)__pyx_kp_s__2)); + values[3] = ((PyObject *)((PyObject*)__pyx_kp_s__2)); + values[4] = ((PyObject *)((PyObject*)__pyx_tuple__3)); + if (unlikely(__pyx_kwds)) { + Py_ssize_t kw_args; + const Py_ssize_t pos_args = PyTuple_GET_SIZE(__pyx_args); + switch (pos_args) { + case 5: values[4] = PyTuple_GET_ITEM(__pyx_args, 4); + CYTHON_FALLTHROUGH; + case 4: values[3] = PyTuple_GET_ITEM(__pyx_args, 3); + CYTHON_FALLTHROUGH; + case 3: values[2] = PyTuple_GET_ITEM(__pyx_args, 2); + CYTHON_FALLTHROUGH; + case 2: values[1] = PyTuple_GET_ITEM(__pyx_args, 1); + CYTHON_FALLTHROUGH; + case 1: values[0] = PyTuple_GET_ITEM(__pyx_args, 0); + CYTHON_FALLTHROUGH; + case 0: break; + default: goto __pyx_L5_argtuple_error; + } + kw_args = PyDict_Size(__pyx_kwds); + switch (pos_args) { + case 0: + if (likely((values[0] = PyDict_GetItem(__pyx_kwds, __pyx_n_s_self)) != 0)) kw_args--; + else goto __pyx_L5_argtuple_error; + CYTHON_FALLTHROUGH; + case 1: + if (likely((values[1] = PyDict_GetItem(__pyx_kwds, __pyx_n_s_CoordObject)) != 0)) kw_args--; + else { + __Pyx_RaiseArgtupleInvalid("__init__", 0, 2, 5, 1); __PYX_ERR(0, 134, __pyx_L3_error) + } + CYTHON_FALLTHROUGH; + case 2: + if (kw_args > 0) { + PyObject* value = PyDict_GetItem(__pyx_kwds, __pyx_n_s_Type); + if (value) { values[2] = value; kw_args--; } + } + CYTHON_FALLTHROUGH; + case 3: + if (kw_args > 0) { + PyObject* value = PyDict_GetItem(__pyx_kwds, __pyx_n_s_Text); + if (value) { values[3] = value; kw_args--; } + } + CYTHON_FALLTHROUGH; + case 4: + if (kw_args > 0) { + PyObject* value = PyDict_GetItem(__pyx_kwds, __pyx_n_s_Colour); + if (value) { values[4] = value; kw_args--; } + } + } + if (unlikely(kw_args > 0)) { + if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_pyargnames, 0, values, pos_args, "__init__") < 0)) __PYX_ERR(0, 134, __pyx_L3_error) + } + } else { + switch (PyTuple_GET_SIZE(__pyx_args)) { + case 5: values[4] = PyTuple_GET_ITEM(__pyx_args, 4); + CYTHON_FALLTHROUGH; + case 4: values[3] = PyTuple_GET_ITEM(__pyx_args, 3); + CYTHON_FALLTHROUGH; + case 3: values[2] = PyTuple_GET_ITEM(__pyx_args, 2); + CYTHON_FALLTHROUGH; + case 2: values[1] = PyTuple_GET_ITEM(__pyx_args, 1); + values[0] = PyTuple_GET_ITEM(__pyx_args, 0); + break; + default: goto __pyx_L5_argtuple_error; + } + } + __pyx_v_self = values[0]; + __pyx_v_CoordObject = values[1]; + __pyx_v_Type = values[2]; + __pyx_v_Text = values[3]; + __pyx_v_Colour = values[4]; + } + goto __pyx_L4_argument_unpacking_done; + __pyx_L5_argtuple_error:; + __Pyx_RaiseArgtupleInvalid("__init__", 0, 2, 5, PyTuple_GET_SIZE(__pyx_args)); __PYX_ERR(0, 134, __pyx_L3_error) + __pyx_L3_error:; + __Pyx_AddTraceback("CAStar.AATC_Monitor_Viewer.Monitor_Sprite.__init__", __pyx_clineno, __pyx_lineno, __pyx_filename); + __Pyx_RefNannyFinishContext(); + return NULL; + __pyx_L4_argument_unpacking_done:; + __pyx_r = __pyx_pf_6CAStar_19AATC_Monitor_Viewer_14Monitor_Sprite___init__(__pyx_self, __pyx_v_self, __pyx_v_CoordObject, __pyx_v_Type, __pyx_v_Text, __pyx_v_Colour); + + /* function exit code */ + __Pyx_RefNannyFinishContext(); + return __pyx_r; +} + +static PyObject *__pyx_pf_6CAStar_19AATC_Monitor_Viewer_14Monitor_Sprite___init__(CYTHON_UNUSED PyObject *__pyx_self, PyObject *__pyx_v_self, PyObject *__pyx_v_CoordObject, PyObject *__pyx_v_Type, PyObject *__pyx_v_Text, PyObject *__pyx_v_Colour) { + PyObject *__pyx_r = NULL; + __Pyx_RefNannyDeclarations + PyObject *__pyx_t_1 = NULL; + PyObject *__pyx_t_2 = NULL; + __Pyx_RefNannySetupContext("__init__", 0); + + /* "CAStar/AATC_Monitor_Viewer.pyx":135 + * class Monitor_Sprite(pygame.sprite.Sprite): + * def __init__(self,CoordObject,Type = "",Text = "",Colour = (255,255,255)): + * self.Coords = CoordObject # <<<<<<<<<<<<<< + * self.Type = Type + * self.Text = Text + */ + if (__Pyx_PyObject_SetAttrStr(__pyx_v_self, __pyx_n_s_Coords, __pyx_v_CoordObject) < 0) __PYX_ERR(0, 135, __pyx_L1_error) + + /* "CAStar/AATC_Monitor_Viewer.pyx":136 + * def __init__(self,CoordObject,Type = "",Text = "",Colour = (255,255,255)): + * self.Coords = CoordObject + * self.Type = Type # <<<<<<<<<<<<<< + * self.Text = Text + * self.Colour = Colour + */ + if (__Pyx_PyObject_SetAttrStr(__pyx_v_self, __pyx_n_s_Type, __pyx_v_Type) < 0) __PYX_ERR(0, 136, __pyx_L1_error) + + /* "CAStar/AATC_Monitor_Viewer.pyx":137 + * self.Coords = CoordObject + * self.Type = Type + * self.Text = Text # <<<<<<<<<<<<<< + * self.Colour = Colour + * self.image = pygame.Surface((1,1)) + */ + if (__Pyx_PyObject_SetAttrStr(__pyx_v_self, __pyx_n_s_Text, __pyx_v_Text) < 0) __PYX_ERR(0, 137, __pyx_L1_error) + + /* "CAStar/AATC_Monitor_Viewer.pyx":138 + * self.Type = Type + * self.Text = Text + * self.Colour = Colour # <<<<<<<<<<<<<< + * self.image = pygame.Surface((1,1)) + * #self.Make_Image(2,2) # No longer needed, is similar to that above. + */ + if (__Pyx_PyObject_SetAttrStr(__pyx_v_self, __pyx_n_s_Colour, __pyx_v_Colour) < 0) __PYX_ERR(0, 138, __pyx_L1_error) + + /* "CAStar/AATC_Monitor_Viewer.pyx":139 + * self.Text = Text + * self.Colour = Colour + * self.image = pygame.Surface((1,1)) # <<<<<<<<<<<<<< + * #self.Make_Image(2,2) # No longer needed, is similar to that above. + * + */ + __pyx_t_1 = __Pyx_GetModuleGlobalName(__pyx_n_s_pygame); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 139, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_1); + __pyx_t_2 = __Pyx_PyObject_GetAttrStr(__pyx_t_1, __pyx_n_s_Surface); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 139, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_2); + __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; + __pyx_t_1 = __Pyx_PyObject_Call(__pyx_t_2, __pyx_tuple__5, NULL); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 139, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_1); + __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; + if (__Pyx_PyObject_SetAttrStr(__pyx_v_self, __pyx_n_s_image, __pyx_t_1) < 0) __PYX_ERR(0, 139, __pyx_L1_error) + __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; + + /* "CAStar/AATC_Monitor_Viewer.pyx":134 + * + * class Monitor_Sprite(pygame.sprite.Sprite): + * def __init__(self,CoordObject,Type = "",Text = "",Colour = (255,255,255)): # <<<<<<<<<<<<<< + * self.Coords = CoordObject + * self.Type = Type + */ + + /* function exit code */ + __pyx_r = Py_None; __Pyx_INCREF(Py_None); + goto __pyx_L0; + __pyx_L1_error:; + __Pyx_XDECREF(__pyx_t_1); + __Pyx_XDECREF(__pyx_t_2); + __Pyx_AddTraceback("CAStar.AATC_Monitor_Viewer.Monitor_Sprite.__init__", __pyx_clineno, __pyx_lineno, __pyx_filename); + __pyx_r = NULL; + __pyx_L0:; + __Pyx_XGIVEREF(__pyx_r); + __Pyx_RefNannyFinishContext(); + return __pyx_r; +} + +/* "CAStar/AATC_Monitor_Viewer.pyx":142 + * #self.Make_Image(2,2) # No longer needed, is similar to that above. + * + * def Make_Image(self, int width, int height): # <<<<<<<<<<<<<< + * if self.image.get_size() != (width,height): #If new image does not match with previous + * self.image = GetImage(width,height,self.Colour) + */ + +/* Python wrapper */ +static PyObject *__pyx_pw_6CAStar_19AATC_Monitor_Viewer_14Monitor_Sprite_3Make_Image(PyObject *__pyx_self, PyObject *__pyx_args, PyObject *__pyx_kwds); /*proto*/ +static PyMethodDef __pyx_mdef_6CAStar_19AATC_Monitor_Viewer_14Monitor_Sprite_3Make_Image = {"Make_Image", (PyCFunction)__pyx_pw_6CAStar_19AATC_Monitor_Viewer_14Monitor_Sprite_3Make_Image, METH_VARARGS|METH_KEYWORDS, 0}; +static PyObject *__pyx_pw_6CAStar_19AATC_Monitor_Viewer_14Monitor_Sprite_3Make_Image(PyObject *__pyx_self, PyObject *__pyx_args, PyObject *__pyx_kwds) { + PyObject *__pyx_v_self = 0; + int __pyx_v_width; + int __pyx_v_height; + PyObject *__pyx_r = 0; + __Pyx_RefNannyDeclarations + __Pyx_RefNannySetupContext("Make_Image (wrapper)", 0); + { + static PyObject **__pyx_pyargnames[] = {&__pyx_n_s_self,&__pyx_n_s_width,&__pyx_n_s_height,0}; + PyObject* values[3] = {0,0,0}; + if (unlikely(__pyx_kwds)) { + Py_ssize_t kw_args; + const Py_ssize_t pos_args = PyTuple_GET_SIZE(__pyx_args); + switch (pos_args) { + case 3: values[2] = PyTuple_GET_ITEM(__pyx_args, 2); + CYTHON_FALLTHROUGH; + case 2: values[1] = PyTuple_GET_ITEM(__pyx_args, 1); + CYTHON_FALLTHROUGH; + case 1: values[0] = PyTuple_GET_ITEM(__pyx_args, 0); + CYTHON_FALLTHROUGH; + case 0: break; + default: goto __pyx_L5_argtuple_error; + } + kw_args = PyDict_Size(__pyx_kwds); + switch (pos_args) { + case 0: + if (likely((values[0] = PyDict_GetItem(__pyx_kwds, __pyx_n_s_self)) != 0)) kw_args--; + else goto __pyx_L5_argtuple_error; + CYTHON_FALLTHROUGH; + case 1: + if (likely((values[1] = PyDict_GetItem(__pyx_kwds, __pyx_n_s_width)) != 0)) kw_args--; + else { + __Pyx_RaiseArgtupleInvalid("Make_Image", 1, 3, 3, 1); __PYX_ERR(0, 142, __pyx_L3_error) + } + CYTHON_FALLTHROUGH; + case 2: + if (likely((values[2] = PyDict_GetItem(__pyx_kwds, __pyx_n_s_height)) != 0)) kw_args--; + else { + __Pyx_RaiseArgtupleInvalid("Make_Image", 1, 3, 3, 2); __PYX_ERR(0, 142, __pyx_L3_error) + } + } + if (unlikely(kw_args > 0)) { + if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_pyargnames, 0, values, pos_args, "Make_Image") < 0)) __PYX_ERR(0, 142, __pyx_L3_error) + } + } else if (PyTuple_GET_SIZE(__pyx_args) != 3) { + goto __pyx_L5_argtuple_error; + } else { + values[0] = PyTuple_GET_ITEM(__pyx_args, 0); + values[1] = PyTuple_GET_ITEM(__pyx_args, 1); + values[2] = PyTuple_GET_ITEM(__pyx_args, 2); + } + __pyx_v_self = values[0]; + __pyx_v_width = __Pyx_PyInt_As_int(values[1]); if (unlikely((__pyx_v_width == (int)-1) && PyErr_Occurred())) __PYX_ERR(0, 142, __pyx_L3_error) + __pyx_v_height = __Pyx_PyInt_As_int(values[2]); if (unlikely((__pyx_v_height == (int)-1) && PyErr_Occurred())) __PYX_ERR(0, 142, __pyx_L3_error) + } + goto __pyx_L4_argument_unpacking_done; + __pyx_L5_argtuple_error:; + __Pyx_RaiseArgtupleInvalid("Make_Image", 1, 3, 3, PyTuple_GET_SIZE(__pyx_args)); __PYX_ERR(0, 142, __pyx_L3_error) + __pyx_L3_error:; + __Pyx_AddTraceback("CAStar.AATC_Monitor_Viewer.Monitor_Sprite.Make_Image", __pyx_clineno, __pyx_lineno, __pyx_filename); + __Pyx_RefNannyFinishContext(); + return NULL; + __pyx_L4_argument_unpacking_done:; + __pyx_r = __pyx_pf_6CAStar_19AATC_Monitor_Viewer_14Monitor_Sprite_2Make_Image(__pyx_self, __pyx_v_self, __pyx_v_width, __pyx_v_height); + + /* function exit code */ + __Pyx_RefNannyFinishContext(); + return __pyx_r; +} + +static PyObject *__pyx_pf_6CAStar_19AATC_Monitor_Viewer_14Monitor_Sprite_2Make_Image(CYTHON_UNUSED PyObject *__pyx_self, PyObject *__pyx_v_self, int __pyx_v_width, int __pyx_v_height) { + PyObject *__pyx_r = NULL; + __Pyx_RefNannyDeclarations + PyObject *__pyx_t_1 = NULL; + PyObject *__pyx_t_2 = NULL; + PyObject *__pyx_t_3 = NULL; + PyObject *__pyx_t_4 = NULL; + int __pyx_t_5; + PyObject *__pyx_t_6 = NULL; + PyObject *__pyx_t_7 = NULL; + int __pyx_t_8; + PyObject *__pyx_t_9 = NULL; + __Pyx_RefNannySetupContext("Make_Image", 0); + + /* "CAStar/AATC_Monitor_Viewer.pyx":143 + * + * def Make_Image(self, int width, int height): + * if self.image.get_size() != (width,height): #If new image does not match with previous # <<<<<<<<<<<<<< + * self.image = GetImage(width,height,self.Colour) + * + */ + __pyx_t_2 = __Pyx_PyObject_GetAttrStr(__pyx_v_self, __pyx_n_s_image); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 143, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_2); + __pyx_t_3 = __Pyx_PyObject_GetAttrStr(__pyx_t_2, __pyx_n_s_get_size); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 143, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_3); + __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; + __pyx_t_2 = NULL; + if (CYTHON_UNPACK_METHODS && likely(PyMethod_Check(__pyx_t_3))) { + __pyx_t_2 = PyMethod_GET_SELF(__pyx_t_3); + if (likely(__pyx_t_2)) { + PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_3); + __Pyx_INCREF(__pyx_t_2); + __Pyx_INCREF(function); + __Pyx_DECREF_SET(__pyx_t_3, function); + } + } + if (__pyx_t_2) { + __pyx_t_1 = __Pyx_PyObject_CallOneArg(__pyx_t_3, __pyx_t_2); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 143, __pyx_L1_error) + __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; + } else { + __pyx_t_1 = __Pyx_PyObject_CallNoArg(__pyx_t_3); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 143, __pyx_L1_error) + } + __Pyx_GOTREF(__pyx_t_1); + __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; + __pyx_t_3 = __Pyx_PyInt_From_int(__pyx_v_width); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 143, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_3); + __pyx_t_2 = __Pyx_PyInt_From_int(__pyx_v_height); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 143, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_2); + __pyx_t_4 = PyTuple_New(2); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 143, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_4); + __Pyx_GIVEREF(__pyx_t_3); + PyTuple_SET_ITEM(__pyx_t_4, 0, __pyx_t_3); + __Pyx_GIVEREF(__pyx_t_2); + PyTuple_SET_ITEM(__pyx_t_4, 1, __pyx_t_2); + __pyx_t_3 = 0; + __pyx_t_2 = 0; + __pyx_t_2 = PyObject_RichCompare(__pyx_t_1, __pyx_t_4, Py_NE); __Pyx_XGOTREF(__pyx_t_2); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 143, __pyx_L1_error) + __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; + __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0; + __pyx_t_5 = __Pyx_PyObject_IsTrue(__pyx_t_2); if (unlikely(__pyx_t_5 < 0)) __PYX_ERR(0, 143, __pyx_L1_error) + __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; + if (__pyx_t_5) { + + /* "CAStar/AATC_Monitor_Viewer.pyx":144 + * def Make_Image(self, int width, int height): + * if self.image.get_size() != (width,height): #If new image does not match with previous + * self.image = GetImage(width,height,self.Colour) # <<<<<<<<<<<<<< + * + * return self.image + */ + __pyx_t_4 = __Pyx_GetModuleGlobalName(__pyx_n_s_GetImage); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 144, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_4); + __pyx_t_1 = __Pyx_PyInt_From_int(__pyx_v_width); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 144, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_1); + __pyx_t_3 = __Pyx_PyInt_From_int(__pyx_v_height); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 144, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_3); + __pyx_t_6 = __Pyx_PyObject_GetAttrStr(__pyx_v_self, __pyx_n_s_Colour); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 144, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_6); + __pyx_t_7 = NULL; + __pyx_t_8 = 0; + if (CYTHON_UNPACK_METHODS && unlikely(PyMethod_Check(__pyx_t_4))) { + __pyx_t_7 = PyMethod_GET_SELF(__pyx_t_4); + if (likely(__pyx_t_7)) { + PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_4); + __Pyx_INCREF(__pyx_t_7); + __Pyx_INCREF(function); + __Pyx_DECREF_SET(__pyx_t_4, function); + __pyx_t_8 = 1; + } + } + #if CYTHON_FAST_PYCALL + if (PyFunction_Check(__pyx_t_4)) { + PyObject *__pyx_temp[4] = {__pyx_t_7, __pyx_t_1, __pyx_t_3, __pyx_t_6}; + __pyx_t_2 = __Pyx_PyFunction_FastCall(__pyx_t_4, __pyx_temp+1-__pyx_t_8, 3+__pyx_t_8); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 144, __pyx_L1_error) + __Pyx_XDECREF(__pyx_t_7); __pyx_t_7 = 0; + __Pyx_GOTREF(__pyx_t_2); + __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; + __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; + __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0; + } else + #endif + #if CYTHON_FAST_PYCCALL + if (__Pyx_PyFastCFunction_Check(__pyx_t_4)) { + PyObject *__pyx_temp[4] = {__pyx_t_7, __pyx_t_1, __pyx_t_3, __pyx_t_6}; + __pyx_t_2 = __Pyx_PyCFunction_FastCall(__pyx_t_4, __pyx_temp+1-__pyx_t_8, 3+__pyx_t_8); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 144, __pyx_L1_error) + __Pyx_XDECREF(__pyx_t_7); __pyx_t_7 = 0; + __Pyx_GOTREF(__pyx_t_2); + __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; + __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; + __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0; + } else + #endif + { + __pyx_t_9 = PyTuple_New(3+__pyx_t_8); if (unlikely(!__pyx_t_9)) __PYX_ERR(0, 144, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_9); + if (__pyx_t_7) { + __Pyx_GIVEREF(__pyx_t_7); PyTuple_SET_ITEM(__pyx_t_9, 0, __pyx_t_7); __pyx_t_7 = NULL; + } + __Pyx_GIVEREF(__pyx_t_1); + PyTuple_SET_ITEM(__pyx_t_9, 0+__pyx_t_8, __pyx_t_1); + __Pyx_GIVEREF(__pyx_t_3); + PyTuple_SET_ITEM(__pyx_t_9, 1+__pyx_t_8, __pyx_t_3); + __Pyx_GIVEREF(__pyx_t_6); + PyTuple_SET_ITEM(__pyx_t_9, 2+__pyx_t_8, __pyx_t_6); + __pyx_t_1 = 0; + __pyx_t_3 = 0; + __pyx_t_6 = 0; + __pyx_t_2 = __Pyx_PyObject_Call(__pyx_t_4, __pyx_t_9, NULL); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 144, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_2); + __Pyx_DECREF(__pyx_t_9); __pyx_t_9 = 0; + } + __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0; + if (__Pyx_PyObject_SetAttrStr(__pyx_v_self, __pyx_n_s_image, __pyx_t_2) < 0) __PYX_ERR(0, 144, __pyx_L1_error) + __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; + + /* "CAStar/AATC_Monitor_Viewer.pyx":143 + * + * def Make_Image(self, int width, int height): + * if self.image.get_size() != (width,height): #If new image does not match with previous # <<<<<<<<<<<<<< + * self.image = GetImage(width,height,self.Colour) + * + */ + } + + /* "CAStar/AATC_Monitor_Viewer.pyx":146 + * self.image = GetImage(width,height,self.Colour) + * + * return self.image # <<<<<<<<<<<<<< + * ## self.image = pygame.Surface((width,height)).convert() + * ## self.image.fill(self.Colour) + */ + __Pyx_XDECREF(__pyx_r); + __pyx_t_2 = __Pyx_PyObject_GetAttrStr(__pyx_v_self, __pyx_n_s_image); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 146, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_2); + __pyx_r = __pyx_t_2; + __pyx_t_2 = 0; + goto __pyx_L0; + + /* "CAStar/AATC_Monitor_Viewer.pyx":142 + * #self.Make_Image(2,2) # No longer needed, is similar to that above. + * + * def Make_Image(self, int width, int height): # <<<<<<<<<<<<<< + * if self.image.get_size() != (width,height): #If new image does not match with previous + * self.image = GetImage(width,height,self.Colour) + */ + + /* function exit code */ + __pyx_L1_error:; + __Pyx_XDECREF(__pyx_t_1); + __Pyx_XDECREF(__pyx_t_2); + __Pyx_XDECREF(__pyx_t_3); + __Pyx_XDECREF(__pyx_t_4); + __Pyx_XDECREF(__pyx_t_6); + __Pyx_XDECREF(__pyx_t_7); + __Pyx_XDECREF(__pyx_t_9); + __Pyx_AddTraceback("CAStar.AATC_Monitor_Viewer.Monitor_Sprite.Make_Image", __pyx_clineno, __pyx_lineno, __pyx_filename); + __pyx_r = NULL; + __pyx_L0:; + __Pyx_XGIVEREF(__pyx_r); + __Pyx_RefNannyFinishContext(); + return __pyx_r; +} + +/* "CAStar/AATC_Monitor_Viewer.pyx":150 + * ## self.image.fill(self.Colour) + * + * def Make_Text(self,font): # <<<<<<<<<<<<<< + * text = str((self.Coords.Get_X(),self.Coords.Get_Y(),self.Coords.Get_Z())) +" " +self.Text + " "+ self.Type + * return GetText(text,font,False,self.Colour) + */ + +/* Python wrapper */ +static PyObject *__pyx_pw_6CAStar_19AATC_Monitor_Viewer_14Monitor_Sprite_5Make_Text(PyObject *__pyx_self, PyObject *__pyx_args, PyObject *__pyx_kwds); /*proto*/ +static PyMethodDef __pyx_mdef_6CAStar_19AATC_Monitor_Viewer_14Monitor_Sprite_5Make_Text = {"Make_Text", (PyCFunction)__pyx_pw_6CAStar_19AATC_Monitor_Viewer_14Monitor_Sprite_5Make_Text, METH_VARARGS|METH_KEYWORDS, 0}; +static PyObject *__pyx_pw_6CAStar_19AATC_Monitor_Viewer_14Monitor_Sprite_5Make_Text(PyObject *__pyx_self, PyObject *__pyx_args, PyObject *__pyx_kwds) { + PyObject *__pyx_v_self = 0; + PyObject *__pyx_v_font = 0; + PyObject *__pyx_r = 0; + __Pyx_RefNannyDeclarations + __Pyx_RefNannySetupContext("Make_Text (wrapper)", 0); + { + static PyObject **__pyx_pyargnames[] = {&__pyx_n_s_self,&__pyx_n_s_font,0}; + PyObject* values[2] = {0,0}; + if (unlikely(__pyx_kwds)) { + Py_ssize_t kw_args; + const Py_ssize_t pos_args = PyTuple_GET_SIZE(__pyx_args); + switch (pos_args) { + case 2: values[1] = PyTuple_GET_ITEM(__pyx_args, 1); + CYTHON_FALLTHROUGH; + case 1: values[0] = PyTuple_GET_ITEM(__pyx_args, 0); + CYTHON_FALLTHROUGH; + case 0: break; + default: goto __pyx_L5_argtuple_error; + } + kw_args = PyDict_Size(__pyx_kwds); + switch (pos_args) { + case 0: + if (likely((values[0] = PyDict_GetItem(__pyx_kwds, __pyx_n_s_self)) != 0)) kw_args--; + else goto __pyx_L5_argtuple_error; + CYTHON_FALLTHROUGH; + case 1: + if (likely((values[1] = PyDict_GetItem(__pyx_kwds, __pyx_n_s_font)) != 0)) kw_args--; + else { + __Pyx_RaiseArgtupleInvalid("Make_Text", 1, 2, 2, 1); __PYX_ERR(0, 150, __pyx_L3_error) + } + } + if (unlikely(kw_args > 0)) { + if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_pyargnames, 0, values, pos_args, "Make_Text") < 0)) __PYX_ERR(0, 150, __pyx_L3_error) + } + } else if (PyTuple_GET_SIZE(__pyx_args) != 2) { + goto __pyx_L5_argtuple_error; + } else { + values[0] = PyTuple_GET_ITEM(__pyx_args, 0); + values[1] = PyTuple_GET_ITEM(__pyx_args, 1); + } + __pyx_v_self = values[0]; + __pyx_v_font = values[1]; + } + goto __pyx_L4_argument_unpacking_done; + __pyx_L5_argtuple_error:; + __Pyx_RaiseArgtupleInvalid("Make_Text", 1, 2, 2, PyTuple_GET_SIZE(__pyx_args)); __PYX_ERR(0, 150, __pyx_L3_error) + __pyx_L3_error:; + __Pyx_AddTraceback("CAStar.AATC_Monitor_Viewer.Monitor_Sprite.Make_Text", __pyx_clineno, __pyx_lineno, __pyx_filename); + __Pyx_RefNannyFinishContext(); + return NULL; + __pyx_L4_argument_unpacking_done:; + __pyx_r = __pyx_pf_6CAStar_19AATC_Monitor_Viewer_14Monitor_Sprite_4Make_Text(__pyx_self, __pyx_v_self, __pyx_v_font); + + /* function exit code */ + __Pyx_RefNannyFinishContext(); + return __pyx_r; +} + +static PyObject *__pyx_pf_6CAStar_19AATC_Monitor_Viewer_14Monitor_Sprite_4Make_Text(CYTHON_UNUSED PyObject *__pyx_self, PyObject *__pyx_v_self, PyObject *__pyx_v_font) { + PyObject *__pyx_v_text = NULL; + PyObject *__pyx_r = NULL; + __Pyx_RefNannyDeclarations + PyObject *__pyx_t_1 = NULL; + PyObject *__pyx_t_2 = NULL; + PyObject *__pyx_t_3 = NULL; + PyObject *__pyx_t_4 = NULL; + PyObject *__pyx_t_5 = NULL; + int __pyx_t_6; + __Pyx_RefNannySetupContext("Make_Text", 0); + + /* "CAStar/AATC_Monitor_Viewer.pyx":151 + * + * def Make_Text(self,font): + * text = str((self.Coords.Get_X(),self.Coords.Get_Y(),self.Coords.Get_Z())) +" " +self.Text + " "+ self.Type # <<<<<<<<<<<<<< + * return GetText(text,font,False,self.Colour) + * + */ + __pyx_t_2 = __Pyx_PyObject_GetAttrStr(__pyx_v_self, __pyx_n_s_Coords); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 151, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_2); + __pyx_t_3 = __Pyx_PyObject_GetAttrStr(__pyx_t_2, __pyx_n_s_Get_X); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 151, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_3); + __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; + __pyx_t_2 = NULL; + if (CYTHON_UNPACK_METHODS && likely(PyMethod_Check(__pyx_t_3))) { + __pyx_t_2 = PyMethod_GET_SELF(__pyx_t_3); + if (likely(__pyx_t_2)) { + PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_3); + __Pyx_INCREF(__pyx_t_2); + __Pyx_INCREF(function); + __Pyx_DECREF_SET(__pyx_t_3, function); + } + } + if (__pyx_t_2) { + __pyx_t_1 = __Pyx_PyObject_CallOneArg(__pyx_t_3, __pyx_t_2); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 151, __pyx_L1_error) + __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; + } else { + __pyx_t_1 = __Pyx_PyObject_CallNoArg(__pyx_t_3); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 151, __pyx_L1_error) + } + __Pyx_GOTREF(__pyx_t_1); + __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; + __pyx_t_2 = __Pyx_PyObject_GetAttrStr(__pyx_v_self, __pyx_n_s_Coords); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 151, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_2); + __pyx_t_4 = __Pyx_PyObject_GetAttrStr(__pyx_t_2, __pyx_n_s_Get_Y); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 151, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_4); + __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; + __pyx_t_2 = NULL; + if (CYTHON_UNPACK_METHODS && likely(PyMethod_Check(__pyx_t_4))) { + __pyx_t_2 = PyMethod_GET_SELF(__pyx_t_4); + if (likely(__pyx_t_2)) { + PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_4); + __Pyx_INCREF(__pyx_t_2); + __Pyx_INCREF(function); + __Pyx_DECREF_SET(__pyx_t_4, function); + } + } + if (__pyx_t_2) { + __pyx_t_3 = __Pyx_PyObject_CallOneArg(__pyx_t_4, __pyx_t_2); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 151, __pyx_L1_error) + __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; + } else { + __pyx_t_3 = __Pyx_PyObject_CallNoArg(__pyx_t_4); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 151, __pyx_L1_error) + } + __Pyx_GOTREF(__pyx_t_3); + __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0; + __pyx_t_2 = __Pyx_PyObject_GetAttrStr(__pyx_v_self, __pyx_n_s_Coords); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 151, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_2); + __pyx_t_5 = __Pyx_PyObject_GetAttrStr(__pyx_t_2, __pyx_n_s_Get_Z); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 151, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_5); + __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; + __pyx_t_2 = NULL; + if (CYTHON_UNPACK_METHODS && likely(PyMethod_Check(__pyx_t_5))) { + __pyx_t_2 = PyMethod_GET_SELF(__pyx_t_5); + if (likely(__pyx_t_2)) { + PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_5); + __Pyx_INCREF(__pyx_t_2); + __Pyx_INCREF(function); + __Pyx_DECREF_SET(__pyx_t_5, function); + } + } + if (__pyx_t_2) { + __pyx_t_4 = __Pyx_PyObject_CallOneArg(__pyx_t_5, __pyx_t_2); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 151, __pyx_L1_error) + __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; + } else { + __pyx_t_4 = __Pyx_PyObject_CallNoArg(__pyx_t_5); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 151, __pyx_L1_error) + } + __Pyx_GOTREF(__pyx_t_4); + __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0; + __pyx_t_5 = PyTuple_New(3); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 151, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_5); + __Pyx_GIVEREF(__pyx_t_1); + PyTuple_SET_ITEM(__pyx_t_5, 0, __pyx_t_1); + __Pyx_GIVEREF(__pyx_t_3); + PyTuple_SET_ITEM(__pyx_t_5, 1, __pyx_t_3); + __Pyx_GIVEREF(__pyx_t_4); + PyTuple_SET_ITEM(__pyx_t_5, 2, __pyx_t_4); + __pyx_t_1 = 0; + __pyx_t_3 = 0; + __pyx_t_4 = 0; + __pyx_t_4 = PyTuple_New(1); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 151, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_4); + __Pyx_GIVEREF(__pyx_t_5); + PyTuple_SET_ITEM(__pyx_t_4, 0, __pyx_t_5); + __pyx_t_5 = 0; + __pyx_t_5 = __Pyx_PyObject_Call(((PyObject *)(&PyString_Type)), __pyx_t_4, NULL); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 151, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_5); + __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0; + __pyx_t_4 = PyNumber_Add(__pyx_t_5, __pyx_kp_s__6); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 151, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_4); + __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0; + __pyx_t_5 = __Pyx_PyObject_GetAttrStr(__pyx_v_self, __pyx_n_s_Text); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 151, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_5); + __pyx_t_3 = PyNumber_Add(__pyx_t_4, __pyx_t_5); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 151, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_3); + __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0; + __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0; + __pyx_t_5 = PyNumber_Add(__pyx_t_3, __pyx_kp_s__6); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 151, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_5); + __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; + __pyx_t_3 = __Pyx_PyObject_GetAttrStr(__pyx_v_self, __pyx_n_s_Type); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 151, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_3); + __pyx_t_4 = PyNumber_Add(__pyx_t_5, __pyx_t_3); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 151, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_4); + __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0; + __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; + __pyx_v_text = __pyx_t_4; + __pyx_t_4 = 0; + + /* "CAStar/AATC_Monitor_Viewer.pyx":152 + * def Make_Text(self,font): + * text = str((self.Coords.Get_X(),self.Coords.Get_Y(),self.Coords.Get_Z())) +" " +self.Text + " "+ self.Type + * return GetText(text,font,False,self.Colour) # <<<<<<<<<<<<<< + * + * def Get_Coords(self): + */ + __Pyx_XDECREF(__pyx_r); + __pyx_t_3 = __Pyx_GetModuleGlobalName(__pyx_n_s_GetText); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 152, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_3); + __pyx_t_5 = __Pyx_PyObject_GetAttrStr(__pyx_v_self, __pyx_n_s_Colour); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 152, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_5); + __pyx_t_1 = NULL; + __pyx_t_6 = 0; + if (CYTHON_UNPACK_METHODS && unlikely(PyMethod_Check(__pyx_t_3))) { + __pyx_t_1 = PyMethod_GET_SELF(__pyx_t_3); + if (likely(__pyx_t_1)) { + PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_3); + __Pyx_INCREF(__pyx_t_1); + __Pyx_INCREF(function); + __Pyx_DECREF_SET(__pyx_t_3, function); + __pyx_t_6 = 1; + } + } + #if CYTHON_FAST_PYCALL + if (PyFunction_Check(__pyx_t_3)) { + PyObject *__pyx_temp[5] = {__pyx_t_1, __pyx_v_text, __pyx_v_font, Py_False, __pyx_t_5}; + __pyx_t_4 = __Pyx_PyFunction_FastCall(__pyx_t_3, __pyx_temp+1-__pyx_t_6, 4+__pyx_t_6); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 152, __pyx_L1_error) + __Pyx_XDECREF(__pyx_t_1); __pyx_t_1 = 0; + __Pyx_GOTREF(__pyx_t_4); + __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0; + } else + #endif + #if CYTHON_FAST_PYCCALL + if (__Pyx_PyFastCFunction_Check(__pyx_t_3)) { + PyObject *__pyx_temp[5] = {__pyx_t_1, __pyx_v_text, __pyx_v_font, Py_False, __pyx_t_5}; + __pyx_t_4 = __Pyx_PyCFunction_FastCall(__pyx_t_3, __pyx_temp+1-__pyx_t_6, 4+__pyx_t_6); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 152, __pyx_L1_error) + __Pyx_XDECREF(__pyx_t_1); __pyx_t_1 = 0; + __Pyx_GOTREF(__pyx_t_4); + __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0; + } else + #endif + { + __pyx_t_2 = PyTuple_New(4+__pyx_t_6); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 152, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_2); + if (__pyx_t_1) { + __Pyx_GIVEREF(__pyx_t_1); PyTuple_SET_ITEM(__pyx_t_2, 0, __pyx_t_1); __pyx_t_1 = NULL; + } + __Pyx_INCREF(__pyx_v_text); + __Pyx_GIVEREF(__pyx_v_text); + PyTuple_SET_ITEM(__pyx_t_2, 0+__pyx_t_6, __pyx_v_text); + __Pyx_INCREF(__pyx_v_font); + __Pyx_GIVEREF(__pyx_v_font); + PyTuple_SET_ITEM(__pyx_t_2, 1+__pyx_t_6, __pyx_v_font); + __Pyx_INCREF(Py_False); + __Pyx_GIVEREF(Py_False); + PyTuple_SET_ITEM(__pyx_t_2, 2+__pyx_t_6, Py_False); + __Pyx_GIVEREF(__pyx_t_5); + PyTuple_SET_ITEM(__pyx_t_2, 3+__pyx_t_6, __pyx_t_5); + __pyx_t_5 = 0; + __pyx_t_4 = __Pyx_PyObject_Call(__pyx_t_3, __pyx_t_2, NULL); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 152, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_4); + __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; + } + __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; + __pyx_r = __pyx_t_4; + __pyx_t_4 = 0; + goto __pyx_L0; + + /* "CAStar/AATC_Monitor_Viewer.pyx":150 + * ## self.image.fill(self.Colour) + * + * def Make_Text(self,font): # <<<<<<<<<<<<<< + * text = str((self.Coords.Get_X(),self.Coords.Get_Y(),self.Coords.Get_Z())) +" " +self.Text + " "+ self.Type + * return GetText(text,font,False,self.Colour) + */ + + /* function exit code */ + __pyx_L1_error:; + __Pyx_XDECREF(__pyx_t_1); + __Pyx_XDECREF(__pyx_t_2); + __Pyx_XDECREF(__pyx_t_3); + __Pyx_XDECREF(__pyx_t_4); + __Pyx_XDECREF(__pyx_t_5); + __Pyx_AddTraceback("CAStar.AATC_Monitor_Viewer.Monitor_Sprite.Make_Text", __pyx_clineno, __pyx_lineno, __pyx_filename); + __pyx_r = NULL; + __pyx_L0:; + __Pyx_XDECREF(__pyx_v_text); + __Pyx_XGIVEREF(__pyx_r); + __Pyx_RefNannyFinishContext(); + return __pyx_r; +} + +/* "CAStar/AATC_Monitor_Viewer.pyx":154 + * return GetText(text,font,False,self.Colour) + * + * def Get_Coords(self): # <<<<<<<<<<<<<< + * return self.Coords + * ## + */ + +/* Python wrapper */ +static PyObject *__pyx_pw_6CAStar_19AATC_Monitor_Viewer_14Monitor_Sprite_7Get_Coords(PyObject *__pyx_self, PyObject *__pyx_v_self); /*proto*/ +static PyMethodDef __pyx_mdef_6CAStar_19AATC_Monitor_Viewer_14Monitor_Sprite_7Get_Coords = {"Get_Coords", (PyCFunction)__pyx_pw_6CAStar_19AATC_Monitor_Viewer_14Monitor_Sprite_7Get_Coords, METH_O, 0}; +static PyObject *__pyx_pw_6CAStar_19AATC_Monitor_Viewer_14Monitor_Sprite_7Get_Coords(PyObject *__pyx_self, PyObject *__pyx_v_self) { + PyObject *__pyx_r = 0; + __Pyx_RefNannyDeclarations + __Pyx_RefNannySetupContext("Get_Coords (wrapper)", 0); + __pyx_r = __pyx_pf_6CAStar_19AATC_Monitor_Viewer_14Monitor_Sprite_6Get_Coords(__pyx_self, ((PyObject *)__pyx_v_self)); + + /* function exit code */ + __Pyx_RefNannyFinishContext(); + return __pyx_r; +} + +static PyObject *__pyx_pf_6CAStar_19AATC_Monitor_Viewer_14Monitor_Sprite_6Get_Coords(CYTHON_UNUSED PyObject *__pyx_self, PyObject *__pyx_v_self) { + PyObject *__pyx_r = NULL; + __Pyx_RefNannyDeclarations + PyObject *__pyx_t_1 = NULL; + __Pyx_RefNannySetupContext("Get_Coords", 0); + + /* "CAStar/AATC_Monitor_Viewer.pyx":155 + * + * def Get_Coords(self): + * return self.Coords # <<<<<<<<<<<<<< + * ## + * ## def Make_CoordsText(self,font): + */ + __Pyx_XDECREF(__pyx_r); + __pyx_t_1 = __Pyx_PyObject_GetAttrStr(__pyx_v_self, __pyx_n_s_Coords); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 155, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_1); + __pyx_r = __pyx_t_1; + __pyx_t_1 = 0; + goto __pyx_L0; + + /* "CAStar/AATC_Monitor_Viewer.pyx":154 + * return GetText(text,font,False,self.Colour) + * + * def Get_Coords(self): # <<<<<<<<<<<<<< + * return self.Coords + * ## + */ + + /* function exit code */ + __pyx_L1_error:; + __Pyx_XDECREF(__pyx_t_1); + __Pyx_AddTraceback("CAStar.AATC_Monitor_Viewer.Monitor_Sprite.Get_Coords", __pyx_clineno, __pyx_lineno, __pyx_filename); + __pyx_r = NULL; + __pyx_L0:; + __Pyx_XGIVEREF(__pyx_r); + __Pyx_RefNannyFinishContext(); + return __pyx_r; +} + +/* "CAStar/AATC_Monitor_Viewer.pyx":170 + * + * + * def MakeDroneSprites(Message,RawDroneList): # <<<<<<<<<<<<<< + * DroneList = [] + * Columns = ast.literal_eval(Message) + */ + +/* Python wrapper */ +static PyObject *__pyx_pw_6CAStar_19AATC_Monitor_Viewer_7MakeDroneSprites(PyObject *__pyx_self, PyObject *__pyx_args, PyObject *__pyx_kwds); /*proto*/ +static PyMethodDef __pyx_mdef_6CAStar_19AATC_Monitor_Viewer_7MakeDroneSprites = {"MakeDroneSprites", (PyCFunction)__pyx_pw_6CAStar_19AATC_Monitor_Viewer_7MakeDroneSprites, METH_VARARGS|METH_KEYWORDS, 0}; +static PyObject *__pyx_pw_6CAStar_19AATC_Monitor_Viewer_7MakeDroneSprites(PyObject *__pyx_self, PyObject *__pyx_args, PyObject *__pyx_kwds) { + PyObject *__pyx_v_Message = 0; + PyObject *__pyx_v_RawDroneList = 0; + PyObject *__pyx_r = 0; + __Pyx_RefNannyDeclarations + __Pyx_RefNannySetupContext("MakeDroneSprites (wrapper)", 0); + { + static PyObject **__pyx_pyargnames[] = {&__pyx_n_s_Message,&__pyx_n_s_RawDroneList,0}; + PyObject* values[2] = {0,0}; + if (unlikely(__pyx_kwds)) { + Py_ssize_t kw_args; + const Py_ssize_t pos_args = PyTuple_GET_SIZE(__pyx_args); + switch (pos_args) { + case 2: values[1] = PyTuple_GET_ITEM(__pyx_args, 1); + CYTHON_FALLTHROUGH; + case 1: values[0] = PyTuple_GET_ITEM(__pyx_args, 0); + CYTHON_FALLTHROUGH; + case 0: break; + default: goto __pyx_L5_argtuple_error; + } + kw_args = PyDict_Size(__pyx_kwds); + switch (pos_args) { + case 0: + if (likely((values[0] = PyDict_GetItem(__pyx_kwds, __pyx_n_s_Message)) != 0)) kw_args--; + else goto __pyx_L5_argtuple_error; + CYTHON_FALLTHROUGH; + case 1: + if (likely((values[1] = PyDict_GetItem(__pyx_kwds, __pyx_n_s_RawDroneList)) != 0)) kw_args--; + else { + __Pyx_RaiseArgtupleInvalid("MakeDroneSprites", 1, 2, 2, 1); __PYX_ERR(0, 170, __pyx_L3_error) + } + } + if (unlikely(kw_args > 0)) { + if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_pyargnames, 0, values, pos_args, "MakeDroneSprites") < 0)) __PYX_ERR(0, 170, __pyx_L3_error) + } + } else if (PyTuple_GET_SIZE(__pyx_args) != 2) { + goto __pyx_L5_argtuple_error; + } else { + values[0] = PyTuple_GET_ITEM(__pyx_args, 0); + values[1] = PyTuple_GET_ITEM(__pyx_args, 1); + } + __pyx_v_Message = values[0]; + __pyx_v_RawDroneList = values[1]; + } + goto __pyx_L4_argument_unpacking_done; + __pyx_L5_argtuple_error:; + __Pyx_RaiseArgtupleInvalid("MakeDroneSprites", 1, 2, 2, PyTuple_GET_SIZE(__pyx_args)); __PYX_ERR(0, 170, __pyx_L3_error) + __pyx_L3_error:; + __Pyx_AddTraceback("CAStar.AATC_Monitor_Viewer.MakeDroneSprites", __pyx_clineno, __pyx_lineno, __pyx_filename); + __Pyx_RefNannyFinishContext(); + return NULL; + __pyx_L4_argument_unpacking_done:; + __pyx_r = __pyx_pf_6CAStar_19AATC_Monitor_Viewer_6MakeDroneSprites(__pyx_self, __pyx_v_Message, __pyx_v_RawDroneList); + + /* function exit code */ + __Pyx_RefNannyFinishContext(); + return __pyx_r; +} + +static PyObject *__pyx_pf_6CAStar_19AATC_Monitor_Viewer_6MakeDroneSprites(CYTHON_UNUSED PyObject *__pyx_self, PyObject *__pyx_v_Message, PyObject *__pyx_v_RawDroneList) { + PyObject *__pyx_v_DroneList = NULL; + PyObject *__pyx_v_Columns = NULL; + PyObject *__pyx_v_CoordIndex = NULL; + PyObject *__pyx_v_DroneIDIndex = NULL; + PyObject *__pyx_v_UserIDIndex = NULL; + PyObject *__pyx_v_DroneNameIndex = NULL; + PyObject *__pyx_v_BatteryIndex = NULL; + PyObject *__pyx_v_Drone = NULL; + PyObject *__pyx_v_LastCoords = NULL; + PyObject *__pyx_v_Coord = NULL; + PyObject *__pyx_v_Text = NULL; + __pyx_ctuple_long__and_long__and_long __pyx_v_Colour; + PyObject *__pyx_v_Sprite = NULL; + PyObject *__pyx_r = NULL; + __Pyx_RefNannyDeclarations + PyObject *__pyx_t_1 = NULL; + PyObject *__pyx_t_2 = NULL; + PyObject *__pyx_t_3 = NULL; + PyObject *__pyx_t_4 = NULL; + Py_ssize_t __pyx_t_5; + PyObject *(*__pyx_t_6)(PyObject *); + PyObject *__pyx_t_7 = NULL; + PyObject *__pyx_t_8 = NULL; + PyObject *__pyx_t_9 = NULL; + int __pyx_t_10; + PyObject *__pyx_t_11 = NULL; + __pyx_ctuple_long__and_long__and_long __pyx_t_12; + int __pyx_t_13; + __Pyx_RefNannySetupContext("MakeDroneSprites", 0); + + /* "CAStar/AATC_Monitor_Viewer.pyx":171 + * + * def MakeDroneSprites(Message,RawDroneList): + * DroneList = [] # <<<<<<<<<<<<<< + * Columns = ast.literal_eval(Message) + * CoordIndex = Columns.index("LastCoords") + */ + __pyx_t_1 = PyList_New(0); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 171, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_1); + __pyx_v_DroneList = ((PyObject*)__pyx_t_1); + __pyx_t_1 = 0; + + /* "CAStar/AATC_Monitor_Viewer.pyx":172 + * def MakeDroneSprites(Message,RawDroneList): + * DroneList = [] + * Columns = ast.literal_eval(Message) # <<<<<<<<<<<<<< + * CoordIndex = Columns.index("LastCoords") + * DroneIDIndex = Columns.index("DroneID") + */ + __pyx_t_2 = __Pyx_GetModuleGlobalName(__pyx_n_s_ast); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 172, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_2); + __pyx_t_3 = __Pyx_PyObject_GetAttrStr(__pyx_t_2, __pyx_n_s_literal_eval); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 172, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_3); + __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; + __pyx_t_2 = NULL; + if (CYTHON_UNPACK_METHODS && unlikely(PyMethod_Check(__pyx_t_3))) { + __pyx_t_2 = PyMethod_GET_SELF(__pyx_t_3); + if (likely(__pyx_t_2)) { + PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_3); + __Pyx_INCREF(__pyx_t_2); + __Pyx_INCREF(function); + __Pyx_DECREF_SET(__pyx_t_3, function); + } + } + if (!__pyx_t_2) { + __pyx_t_1 = __Pyx_PyObject_CallOneArg(__pyx_t_3, __pyx_v_Message); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 172, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_1); + } else { + #if CYTHON_FAST_PYCALL + if (PyFunction_Check(__pyx_t_3)) { + PyObject *__pyx_temp[2] = {__pyx_t_2, __pyx_v_Message}; + __pyx_t_1 = __Pyx_PyFunction_FastCall(__pyx_t_3, __pyx_temp+1-1, 1+1); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 172, __pyx_L1_error) + __Pyx_XDECREF(__pyx_t_2); __pyx_t_2 = 0; + __Pyx_GOTREF(__pyx_t_1); + } else + #endif + #if CYTHON_FAST_PYCCALL + if (__Pyx_PyFastCFunction_Check(__pyx_t_3)) { + PyObject *__pyx_temp[2] = {__pyx_t_2, __pyx_v_Message}; + __pyx_t_1 = __Pyx_PyCFunction_FastCall(__pyx_t_3, __pyx_temp+1-1, 1+1); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 172, __pyx_L1_error) + __Pyx_XDECREF(__pyx_t_2); __pyx_t_2 = 0; + __Pyx_GOTREF(__pyx_t_1); + } else + #endif + { + __pyx_t_4 = PyTuple_New(1+1); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 172, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_4); + __Pyx_GIVEREF(__pyx_t_2); PyTuple_SET_ITEM(__pyx_t_4, 0, __pyx_t_2); __pyx_t_2 = NULL; + __Pyx_INCREF(__pyx_v_Message); + __Pyx_GIVEREF(__pyx_v_Message); + PyTuple_SET_ITEM(__pyx_t_4, 0+1, __pyx_v_Message); + __pyx_t_1 = __Pyx_PyObject_Call(__pyx_t_3, __pyx_t_4, NULL); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 172, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_1); + __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0; + } + } + __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; + __pyx_v_Columns = __pyx_t_1; + __pyx_t_1 = 0; + + /* "CAStar/AATC_Monitor_Viewer.pyx":173 + * DroneList = [] + * Columns = ast.literal_eval(Message) + * CoordIndex = Columns.index("LastCoords") # <<<<<<<<<<<<<< + * DroneIDIndex = Columns.index("DroneID") + * UserIDIndex = Columns.index("UserID") + */ + __pyx_t_1 = __Pyx_PyObject_GetAttrStr(__pyx_v_Columns, __pyx_n_s_index); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 173, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_1); + __pyx_t_3 = __Pyx_PyObject_Call(__pyx_t_1, __pyx_tuple__7, NULL); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 173, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_3); + __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; + __pyx_v_CoordIndex = __pyx_t_3; + __pyx_t_3 = 0; + + /* "CAStar/AATC_Monitor_Viewer.pyx":174 + * Columns = ast.literal_eval(Message) + * CoordIndex = Columns.index("LastCoords") + * DroneIDIndex = Columns.index("DroneID") # <<<<<<<<<<<<<< + * UserIDIndex = Columns.index("UserID") + * DroneNameIndex = Columns.index("DroneName") + */ + __pyx_t_3 = __Pyx_PyObject_GetAttrStr(__pyx_v_Columns, __pyx_n_s_index); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 174, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_3); + __pyx_t_1 = __Pyx_PyObject_Call(__pyx_t_3, __pyx_tuple__8, NULL); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 174, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_1); + __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; + __pyx_v_DroneIDIndex = __pyx_t_1; + __pyx_t_1 = 0; + + /* "CAStar/AATC_Monitor_Viewer.pyx":175 + * CoordIndex = Columns.index("LastCoords") + * DroneIDIndex = Columns.index("DroneID") + * UserIDIndex = Columns.index("UserID") # <<<<<<<<<<<<<< + * DroneNameIndex = Columns.index("DroneName") + * BatteryIndex = Columns.index("LastBattery") + */ + __pyx_t_1 = __Pyx_PyObject_GetAttrStr(__pyx_v_Columns, __pyx_n_s_index); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 175, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_1); + __pyx_t_3 = __Pyx_PyObject_Call(__pyx_t_1, __pyx_tuple__9, NULL); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 175, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_3); + __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; + __pyx_v_UserIDIndex = __pyx_t_3; + __pyx_t_3 = 0; + + /* "CAStar/AATC_Monitor_Viewer.pyx":176 + * DroneIDIndex = Columns.index("DroneID") + * UserIDIndex = Columns.index("UserID") + * DroneNameIndex = Columns.index("DroneName") # <<<<<<<<<<<<<< + * BatteryIndex = Columns.index("LastBattery") + * for Drone in RawDroneList: + */ + __pyx_t_3 = __Pyx_PyObject_GetAttrStr(__pyx_v_Columns, __pyx_n_s_index); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 176, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_3); + __pyx_t_1 = __Pyx_PyObject_Call(__pyx_t_3, __pyx_tuple__10, NULL); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 176, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_1); + __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; + __pyx_v_DroneNameIndex = __pyx_t_1; + __pyx_t_1 = 0; + + /* "CAStar/AATC_Monitor_Viewer.pyx":177 + * UserIDIndex = Columns.index("UserID") + * DroneNameIndex = Columns.index("DroneName") + * BatteryIndex = Columns.index("LastBattery") # <<<<<<<<<<<<<< + * for Drone in RawDroneList: + * LastCoords = ast.literal_eval(Drone[CoordIndex]) + */ + __pyx_t_1 = __Pyx_PyObject_GetAttrStr(__pyx_v_Columns, __pyx_n_s_index); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 177, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_1); + __pyx_t_3 = __Pyx_PyObject_Call(__pyx_t_1, __pyx_tuple__11, NULL); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 177, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_3); + __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; + __pyx_v_BatteryIndex = __pyx_t_3; + __pyx_t_3 = 0; + + /* "CAStar/AATC_Monitor_Viewer.pyx":178 + * DroneNameIndex = Columns.index("DroneName") + * BatteryIndex = Columns.index("LastBattery") + * for Drone in RawDroneList: # <<<<<<<<<<<<<< + * LastCoords = ast.literal_eval(Drone[CoordIndex]) + * Coord = AATC_Coordinate.Coordinate(LastCoords[0],LastCoords[1],LastCoords[2],0.001,0.001,0.00001) + */ + if (likely(PyList_CheckExact(__pyx_v_RawDroneList)) || PyTuple_CheckExact(__pyx_v_RawDroneList)) { + __pyx_t_3 = __pyx_v_RawDroneList; __Pyx_INCREF(__pyx_t_3); __pyx_t_5 = 0; + __pyx_t_6 = NULL; + } else { + __pyx_t_5 = -1; __pyx_t_3 = PyObject_GetIter(__pyx_v_RawDroneList); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 178, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_3); + __pyx_t_6 = Py_TYPE(__pyx_t_3)->tp_iternext; if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 178, __pyx_L1_error) + } + for (;;) { + if (likely(!__pyx_t_6)) { + if (likely(PyList_CheckExact(__pyx_t_3))) { + if (__pyx_t_5 >= PyList_GET_SIZE(__pyx_t_3)) break; + #if CYTHON_ASSUME_SAFE_MACROS && !CYTHON_AVOID_BORROWED_REFS + __pyx_t_1 = PyList_GET_ITEM(__pyx_t_3, __pyx_t_5); __Pyx_INCREF(__pyx_t_1); __pyx_t_5++; if (unlikely(0 < 0)) __PYX_ERR(0, 178, __pyx_L1_error) + #else + __pyx_t_1 = PySequence_ITEM(__pyx_t_3, __pyx_t_5); __pyx_t_5++; if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 178, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_1); + #endif + } else { + if (__pyx_t_5 >= PyTuple_GET_SIZE(__pyx_t_3)) break; + #if CYTHON_ASSUME_SAFE_MACROS && !CYTHON_AVOID_BORROWED_REFS + __pyx_t_1 = PyTuple_GET_ITEM(__pyx_t_3, __pyx_t_5); __Pyx_INCREF(__pyx_t_1); __pyx_t_5++; if (unlikely(0 < 0)) __PYX_ERR(0, 178, __pyx_L1_error) + #else + __pyx_t_1 = PySequence_ITEM(__pyx_t_3, __pyx_t_5); __pyx_t_5++; if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 178, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_1); + #endif + } + } else { + __pyx_t_1 = __pyx_t_6(__pyx_t_3); + if (unlikely(!__pyx_t_1)) { + PyObject* exc_type = PyErr_Occurred(); + if (exc_type) { + if (likely(exc_type == PyExc_StopIteration || PyErr_GivenExceptionMatches(exc_type, PyExc_StopIteration))) PyErr_Clear(); + else __PYX_ERR(0, 178, __pyx_L1_error) + } + break; + } + __Pyx_GOTREF(__pyx_t_1); + } + __Pyx_XDECREF_SET(__pyx_v_Drone, __pyx_t_1); + __pyx_t_1 = 0; + + /* "CAStar/AATC_Monitor_Viewer.pyx":179 + * BatteryIndex = Columns.index("LastBattery") + * for Drone in RawDroneList: + * LastCoords = ast.literal_eval(Drone[CoordIndex]) # <<<<<<<<<<<<<< + * Coord = AATC_Coordinate.Coordinate(LastCoords[0],LastCoords[1],LastCoords[2],0.001,0.001,0.00001) + * Text = "D:"+str(Drone[DroneIDIndex]) +" U:"+str(Drone[UserIDIndex]) +" N:"+str(Drone[DroneNameIndex])+" B:"+str(Drone[BatteryIndex]) + */ + __pyx_t_4 = __Pyx_GetModuleGlobalName(__pyx_n_s_ast); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 179, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_4); + __pyx_t_2 = __Pyx_PyObject_GetAttrStr(__pyx_t_4, __pyx_n_s_literal_eval); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 179, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_2); + __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0; + __pyx_t_4 = PyObject_GetItem(__pyx_v_Drone, __pyx_v_CoordIndex); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 179, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_4); + __pyx_t_7 = NULL; + if (CYTHON_UNPACK_METHODS && unlikely(PyMethod_Check(__pyx_t_2))) { + __pyx_t_7 = PyMethod_GET_SELF(__pyx_t_2); + if (likely(__pyx_t_7)) { + PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_2); + __Pyx_INCREF(__pyx_t_7); + __Pyx_INCREF(function); + __Pyx_DECREF_SET(__pyx_t_2, function); + } + } + if (!__pyx_t_7) { + __pyx_t_1 = __Pyx_PyObject_CallOneArg(__pyx_t_2, __pyx_t_4); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 179, __pyx_L1_error) + __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0; + __Pyx_GOTREF(__pyx_t_1); + } else { + #if CYTHON_FAST_PYCALL + if (PyFunction_Check(__pyx_t_2)) { + PyObject *__pyx_temp[2] = {__pyx_t_7, __pyx_t_4}; + __pyx_t_1 = __Pyx_PyFunction_FastCall(__pyx_t_2, __pyx_temp+1-1, 1+1); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 179, __pyx_L1_error) + __Pyx_XDECREF(__pyx_t_7); __pyx_t_7 = 0; + __Pyx_GOTREF(__pyx_t_1); + __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0; + } else + #endif + #if CYTHON_FAST_PYCCALL + if (__Pyx_PyFastCFunction_Check(__pyx_t_2)) { + PyObject *__pyx_temp[2] = {__pyx_t_7, __pyx_t_4}; + __pyx_t_1 = __Pyx_PyCFunction_FastCall(__pyx_t_2, __pyx_temp+1-1, 1+1); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 179, __pyx_L1_error) + __Pyx_XDECREF(__pyx_t_7); __pyx_t_7 = 0; + __Pyx_GOTREF(__pyx_t_1); + __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0; + } else + #endif + { + __pyx_t_8 = PyTuple_New(1+1); if (unlikely(!__pyx_t_8)) __PYX_ERR(0, 179, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_8); + __Pyx_GIVEREF(__pyx_t_7); PyTuple_SET_ITEM(__pyx_t_8, 0, __pyx_t_7); __pyx_t_7 = NULL; + __Pyx_GIVEREF(__pyx_t_4); + PyTuple_SET_ITEM(__pyx_t_8, 0+1, __pyx_t_4); + __pyx_t_4 = 0; + __pyx_t_1 = __Pyx_PyObject_Call(__pyx_t_2, __pyx_t_8, NULL); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 179, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_1); + __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0; + } + } + __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; + __Pyx_XDECREF_SET(__pyx_v_LastCoords, __pyx_t_1); + __pyx_t_1 = 0; + + /* "CAStar/AATC_Monitor_Viewer.pyx":180 + * for Drone in RawDroneList: + * LastCoords = ast.literal_eval(Drone[CoordIndex]) + * Coord = AATC_Coordinate.Coordinate(LastCoords[0],LastCoords[1],LastCoords[2],0.001,0.001,0.00001) # <<<<<<<<<<<<<< + * Text = "D:"+str(Drone[DroneIDIndex]) +" U:"+str(Drone[UserIDIndex]) +" N:"+str(Drone[DroneNameIndex])+" B:"+str(Drone[BatteryIndex]) + * Colour = (255,255,255) + */ + __pyx_t_2 = __Pyx_GetModuleGlobalName(__pyx_n_s_AATC_Coordinate); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 180, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_2); + __pyx_t_8 = __Pyx_PyObject_GetAttrStr(__pyx_t_2, __pyx_n_s_Coordinate); if (unlikely(!__pyx_t_8)) __PYX_ERR(0, 180, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_8); + __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; + __pyx_t_2 = __Pyx_GetItemInt(__pyx_v_LastCoords, 0, long, 1, __Pyx_PyInt_From_long, 0, 0, 0); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 180, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_2); + __pyx_t_4 = __Pyx_GetItemInt(__pyx_v_LastCoords, 1, long, 1, __Pyx_PyInt_From_long, 0, 0, 0); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 180, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_4); + __pyx_t_7 = __Pyx_GetItemInt(__pyx_v_LastCoords, 2, long, 1, __Pyx_PyInt_From_long, 0, 0, 0); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 180, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_7); + __pyx_t_9 = NULL; + __pyx_t_10 = 0; + if (CYTHON_UNPACK_METHODS && unlikely(PyMethod_Check(__pyx_t_8))) { + __pyx_t_9 = PyMethod_GET_SELF(__pyx_t_8); + if (likely(__pyx_t_9)) { + PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_8); + __Pyx_INCREF(__pyx_t_9); + __Pyx_INCREF(function); + __Pyx_DECREF_SET(__pyx_t_8, function); + __pyx_t_10 = 1; + } + } + #if CYTHON_FAST_PYCALL + if (PyFunction_Check(__pyx_t_8)) { + PyObject *__pyx_temp[7] = {__pyx_t_9, __pyx_t_2, __pyx_t_4, __pyx_t_7, __pyx_float_0_001, __pyx_float_0_001, __pyx_float_0_00001}; + __pyx_t_1 = __Pyx_PyFunction_FastCall(__pyx_t_8, __pyx_temp+1-__pyx_t_10, 6+__pyx_t_10); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 180, __pyx_L1_error) + __Pyx_XDECREF(__pyx_t_9); __pyx_t_9 = 0; + __Pyx_GOTREF(__pyx_t_1); + __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; + __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0; + __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0; + } else + #endif + #if CYTHON_FAST_PYCCALL + if (__Pyx_PyFastCFunction_Check(__pyx_t_8)) { + PyObject *__pyx_temp[7] = {__pyx_t_9, __pyx_t_2, __pyx_t_4, __pyx_t_7, __pyx_float_0_001, __pyx_float_0_001, __pyx_float_0_00001}; + __pyx_t_1 = __Pyx_PyCFunction_FastCall(__pyx_t_8, __pyx_temp+1-__pyx_t_10, 6+__pyx_t_10); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 180, __pyx_L1_error) + __Pyx_XDECREF(__pyx_t_9); __pyx_t_9 = 0; + __Pyx_GOTREF(__pyx_t_1); + __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; + __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0; + __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0; + } else + #endif + { + __pyx_t_11 = PyTuple_New(6+__pyx_t_10); if (unlikely(!__pyx_t_11)) __PYX_ERR(0, 180, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_11); + if (__pyx_t_9) { + __Pyx_GIVEREF(__pyx_t_9); PyTuple_SET_ITEM(__pyx_t_11, 0, __pyx_t_9); __pyx_t_9 = NULL; + } + __Pyx_GIVEREF(__pyx_t_2); + PyTuple_SET_ITEM(__pyx_t_11, 0+__pyx_t_10, __pyx_t_2); + __Pyx_GIVEREF(__pyx_t_4); + PyTuple_SET_ITEM(__pyx_t_11, 1+__pyx_t_10, __pyx_t_4); + __Pyx_GIVEREF(__pyx_t_7); + PyTuple_SET_ITEM(__pyx_t_11, 2+__pyx_t_10, __pyx_t_7); + __Pyx_INCREF(__pyx_float_0_001); + __Pyx_GIVEREF(__pyx_float_0_001); + PyTuple_SET_ITEM(__pyx_t_11, 3+__pyx_t_10, __pyx_float_0_001); + __Pyx_INCREF(__pyx_float_0_001); + __Pyx_GIVEREF(__pyx_float_0_001); + PyTuple_SET_ITEM(__pyx_t_11, 4+__pyx_t_10, __pyx_float_0_001); + __Pyx_INCREF(__pyx_float_0_00001); + __Pyx_GIVEREF(__pyx_float_0_00001); + PyTuple_SET_ITEM(__pyx_t_11, 5+__pyx_t_10, __pyx_float_0_00001); + __pyx_t_2 = 0; + __pyx_t_4 = 0; + __pyx_t_7 = 0; + __pyx_t_1 = __Pyx_PyObject_Call(__pyx_t_8, __pyx_t_11, NULL); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 180, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_1); + __Pyx_DECREF(__pyx_t_11); __pyx_t_11 = 0; + } + __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0; + __Pyx_XDECREF_SET(__pyx_v_Coord, __pyx_t_1); + __pyx_t_1 = 0; + + /* "CAStar/AATC_Monitor_Viewer.pyx":181 + * LastCoords = ast.literal_eval(Drone[CoordIndex]) + * Coord = AATC_Coordinate.Coordinate(LastCoords[0],LastCoords[1],LastCoords[2],0.001,0.001,0.00001) + * Text = "D:"+str(Drone[DroneIDIndex]) +" U:"+str(Drone[UserIDIndex]) +" N:"+str(Drone[DroneNameIndex])+" B:"+str(Drone[BatteryIndex]) # <<<<<<<<<<<<<< + * Colour = (255,255,255) + * Sprite = Monitor_Sprite(Coord,"Drone",Text,Colour) + */ + __pyx_t_1 = PyObject_GetItem(__pyx_v_Drone, __pyx_v_DroneIDIndex); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 181, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_1); + __pyx_t_8 = PyTuple_New(1); if (unlikely(!__pyx_t_8)) __PYX_ERR(0, 181, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_8); + __Pyx_GIVEREF(__pyx_t_1); + PyTuple_SET_ITEM(__pyx_t_8, 0, __pyx_t_1); + __pyx_t_1 = 0; + __pyx_t_1 = __Pyx_PyObject_Call(((PyObject *)(&PyString_Type)), __pyx_t_8, NULL); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 181, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_1); + __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0; + __pyx_t_8 = PyNumber_Add(__pyx_kp_s_D, __pyx_t_1); if (unlikely(!__pyx_t_8)) __PYX_ERR(0, 181, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_8); + __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; + __pyx_t_1 = PyNumber_Add(__pyx_t_8, __pyx_kp_s_U); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 181, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_1); + __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0; + __pyx_t_8 = PyObject_GetItem(__pyx_v_Drone, __pyx_v_UserIDIndex); if (unlikely(!__pyx_t_8)) __PYX_ERR(0, 181, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_8); + __pyx_t_11 = PyTuple_New(1); if (unlikely(!__pyx_t_11)) __PYX_ERR(0, 181, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_11); + __Pyx_GIVEREF(__pyx_t_8); + PyTuple_SET_ITEM(__pyx_t_11, 0, __pyx_t_8); + __pyx_t_8 = 0; + __pyx_t_8 = __Pyx_PyObject_Call(((PyObject *)(&PyString_Type)), __pyx_t_11, NULL); if (unlikely(!__pyx_t_8)) __PYX_ERR(0, 181, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_8); + __Pyx_DECREF(__pyx_t_11); __pyx_t_11 = 0; + __pyx_t_11 = PyNumber_Add(__pyx_t_1, __pyx_t_8); if (unlikely(!__pyx_t_11)) __PYX_ERR(0, 181, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_11); + __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; + __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0; + __pyx_t_8 = PyNumber_Add(__pyx_t_11, __pyx_kp_s_N); if (unlikely(!__pyx_t_8)) __PYX_ERR(0, 181, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_8); + __Pyx_DECREF(__pyx_t_11); __pyx_t_11 = 0; + __pyx_t_11 = PyObject_GetItem(__pyx_v_Drone, __pyx_v_DroneNameIndex); if (unlikely(!__pyx_t_11)) __PYX_ERR(0, 181, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_11); + __pyx_t_1 = PyTuple_New(1); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 181, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_1); + __Pyx_GIVEREF(__pyx_t_11); + PyTuple_SET_ITEM(__pyx_t_1, 0, __pyx_t_11); + __pyx_t_11 = 0; + __pyx_t_11 = __Pyx_PyObject_Call(((PyObject *)(&PyString_Type)), __pyx_t_1, NULL); if (unlikely(!__pyx_t_11)) __PYX_ERR(0, 181, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_11); + __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; + __pyx_t_1 = PyNumber_Add(__pyx_t_8, __pyx_t_11); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 181, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_1); + __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0; + __Pyx_DECREF(__pyx_t_11); __pyx_t_11 = 0; + __pyx_t_11 = PyNumber_Add(__pyx_t_1, __pyx_kp_s_B); if (unlikely(!__pyx_t_11)) __PYX_ERR(0, 181, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_11); + __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; + __pyx_t_1 = PyObject_GetItem(__pyx_v_Drone, __pyx_v_BatteryIndex); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 181, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_1); + __pyx_t_8 = PyTuple_New(1); if (unlikely(!__pyx_t_8)) __PYX_ERR(0, 181, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_8); + __Pyx_GIVEREF(__pyx_t_1); + PyTuple_SET_ITEM(__pyx_t_8, 0, __pyx_t_1); + __pyx_t_1 = 0; + __pyx_t_1 = __Pyx_PyObject_Call(((PyObject *)(&PyString_Type)), __pyx_t_8, NULL); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 181, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_1); + __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0; + __pyx_t_8 = PyNumber_Add(__pyx_t_11, __pyx_t_1); if (unlikely(!__pyx_t_8)) __PYX_ERR(0, 181, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_8); + __Pyx_DECREF(__pyx_t_11); __pyx_t_11 = 0; + __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; + __Pyx_XDECREF_SET(__pyx_v_Text, __pyx_t_8); + __pyx_t_8 = 0; + + /* "CAStar/AATC_Monitor_Viewer.pyx":182 + * Coord = AATC_Coordinate.Coordinate(LastCoords[0],LastCoords[1],LastCoords[2],0.001,0.001,0.00001) + * Text = "D:"+str(Drone[DroneIDIndex]) +" U:"+str(Drone[UserIDIndex]) +" N:"+str(Drone[DroneNameIndex])+" B:"+str(Drone[BatteryIndex]) + * Colour = (255,255,255) # <<<<<<<<<<<<<< + * Sprite = Monitor_Sprite(Coord,"Drone",Text,Colour) + * DroneList.append(Sprite) + */ + __pyx_t_12.f0 = 0xFF; + __pyx_t_12.f1 = 0xFF; + __pyx_t_12.f2 = 0xFF; + __pyx_v_Colour = __pyx_t_12; + + /* "CAStar/AATC_Monitor_Viewer.pyx":183 + * Text = "D:"+str(Drone[DroneIDIndex]) +" U:"+str(Drone[UserIDIndex]) +" N:"+str(Drone[DroneNameIndex])+" B:"+str(Drone[BatteryIndex]) + * Colour = (255,255,255) + * Sprite = Monitor_Sprite(Coord,"Drone",Text,Colour) # <<<<<<<<<<<<<< + * DroneList.append(Sprite) + * return DroneList + */ + __pyx_t_1 = __Pyx_GetModuleGlobalName(__pyx_n_s_Monitor_Sprite); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 183, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_1); + __pyx_t_11 = __pyx_convert__to_py___pyx_ctuple_long__and_long__and_long(__pyx_v_Colour); if (unlikely(!__pyx_t_11)) __PYX_ERR(0, 183, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_11); + __pyx_t_7 = NULL; + __pyx_t_10 = 0; + if (CYTHON_UNPACK_METHODS && unlikely(PyMethod_Check(__pyx_t_1))) { + __pyx_t_7 = PyMethod_GET_SELF(__pyx_t_1); + if (likely(__pyx_t_7)) { + PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_1); + __Pyx_INCREF(__pyx_t_7); + __Pyx_INCREF(function); + __Pyx_DECREF_SET(__pyx_t_1, function); + __pyx_t_10 = 1; + } + } + #if CYTHON_FAST_PYCALL + if (PyFunction_Check(__pyx_t_1)) { + PyObject *__pyx_temp[5] = {__pyx_t_7, __pyx_v_Coord, __pyx_n_s_Drone, __pyx_v_Text, __pyx_t_11}; + __pyx_t_8 = __Pyx_PyFunction_FastCall(__pyx_t_1, __pyx_temp+1-__pyx_t_10, 4+__pyx_t_10); if (unlikely(!__pyx_t_8)) __PYX_ERR(0, 183, __pyx_L1_error) + __Pyx_XDECREF(__pyx_t_7); __pyx_t_7 = 0; + __Pyx_GOTREF(__pyx_t_8); + __Pyx_DECREF(__pyx_t_11); __pyx_t_11 = 0; + } else + #endif + #if CYTHON_FAST_PYCCALL + if (__Pyx_PyFastCFunction_Check(__pyx_t_1)) { + PyObject *__pyx_temp[5] = {__pyx_t_7, __pyx_v_Coord, __pyx_n_s_Drone, __pyx_v_Text, __pyx_t_11}; + __pyx_t_8 = __Pyx_PyCFunction_FastCall(__pyx_t_1, __pyx_temp+1-__pyx_t_10, 4+__pyx_t_10); if (unlikely(!__pyx_t_8)) __PYX_ERR(0, 183, __pyx_L1_error) + __Pyx_XDECREF(__pyx_t_7); __pyx_t_7 = 0; + __Pyx_GOTREF(__pyx_t_8); + __Pyx_DECREF(__pyx_t_11); __pyx_t_11 = 0; + } else + #endif + { + __pyx_t_4 = PyTuple_New(4+__pyx_t_10); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 183, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_4); + if (__pyx_t_7) { + __Pyx_GIVEREF(__pyx_t_7); PyTuple_SET_ITEM(__pyx_t_4, 0, __pyx_t_7); __pyx_t_7 = NULL; + } + __Pyx_INCREF(__pyx_v_Coord); + __Pyx_GIVEREF(__pyx_v_Coord); + PyTuple_SET_ITEM(__pyx_t_4, 0+__pyx_t_10, __pyx_v_Coord); + __Pyx_INCREF(__pyx_n_s_Drone); + __Pyx_GIVEREF(__pyx_n_s_Drone); + PyTuple_SET_ITEM(__pyx_t_4, 1+__pyx_t_10, __pyx_n_s_Drone); + __Pyx_INCREF(__pyx_v_Text); + __Pyx_GIVEREF(__pyx_v_Text); + PyTuple_SET_ITEM(__pyx_t_4, 2+__pyx_t_10, __pyx_v_Text); + __Pyx_GIVEREF(__pyx_t_11); + PyTuple_SET_ITEM(__pyx_t_4, 3+__pyx_t_10, __pyx_t_11); + __pyx_t_11 = 0; + __pyx_t_8 = __Pyx_PyObject_Call(__pyx_t_1, __pyx_t_4, NULL); if (unlikely(!__pyx_t_8)) __PYX_ERR(0, 183, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_8); + __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0; + } + __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; + __Pyx_XDECREF_SET(__pyx_v_Sprite, __pyx_t_8); + __pyx_t_8 = 0; + + /* "CAStar/AATC_Monitor_Viewer.pyx":184 + * Colour = (255,255,255) + * Sprite = Monitor_Sprite(Coord,"Drone",Text,Colour) + * DroneList.append(Sprite) # <<<<<<<<<<<<<< + * return DroneList + * + */ + __pyx_t_13 = __Pyx_PyList_Append(__pyx_v_DroneList, __pyx_v_Sprite); if (unlikely(__pyx_t_13 == -1)) __PYX_ERR(0, 184, __pyx_L1_error) + + /* "CAStar/AATC_Monitor_Viewer.pyx":178 + * DroneNameIndex = Columns.index("DroneName") + * BatteryIndex = Columns.index("LastBattery") + * for Drone in RawDroneList: # <<<<<<<<<<<<<< + * LastCoords = ast.literal_eval(Drone[CoordIndex]) + * Coord = AATC_Coordinate.Coordinate(LastCoords[0],LastCoords[1],LastCoords[2],0.001,0.001,0.00001) + */ + } + __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; + + /* "CAStar/AATC_Monitor_Viewer.pyx":185 + * Sprite = Monitor_Sprite(Coord,"Drone",Text,Colour) + * DroneList.append(Sprite) + * return DroneList # <<<<<<<<<<<<<< + * + * def MakeFlightSprites(Message,RawFlightList): + */ + __Pyx_XDECREF(__pyx_r); + __Pyx_INCREF(__pyx_v_DroneList); + __pyx_r = __pyx_v_DroneList; + goto __pyx_L0; + + /* "CAStar/AATC_Monitor_Viewer.pyx":170 + * + * + * def MakeDroneSprites(Message,RawDroneList): # <<<<<<<<<<<<<< + * DroneList = [] + * Columns = ast.literal_eval(Message) + */ + + /* function exit code */ + __pyx_L1_error:; + __Pyx_XDECREF(__pyx_t_1); + __Pyx_XDECREF(__pyx_t_2); + __Pyx_XDECREF(__pyx_t_3); + __Pyx_XDECREF(__pyx_t_4); + __Pyx_XDECREF(__pyx_t_7); + __Pyx_XDECREF(__pyx_t_8); + __Pyx_XDECREF(__pyx_t_9); + __Pyx_XDECREF(__pyx_t_11); + __Pyx_AddTraceback("CAStar.AATC_Monitor_Viewer.MakeDroneSprites", __pyx_clineno, __pyx_lineno, __pyx_filename); + __pyx_r = NULL; + __pyx_L0:; + __Pyx_XDECREF(__pyx_v_DroneList); + __Pyx_XDECREF(__pyx_v_Columns); + __Pyx_XDECREF(__pyx_v_CoordIndex); + __Pyx_XDECREF(__pyx_v_DroneIDIndex); + __Pyx_XDECREF(__pyx_v_UserIDIndex); + __Pyx_XDECREF(__pyx_v_DroneNameIndex); + __Pyx_XDECREF(__pyx_v_BatteryIndex); + __Pyx_XDECREF(__pyx_v_Drone); + __Pyx_XDECREF(__pyx_v_LastCoords); + __Pyx_XDECREF(__pyx_v_Coord); + __Pyx_XDECREF(__pyx_v_Text); + __Pyx_XDECREF(__pyx_v_Sprite); + __Pyx_XGIVEREF(__pyx_r); + __Pyx_RefNannyFinishContext(); + return __pyx_r; +} + +/* "CAStar/AATC_Monitor_Viewer.pyx":187 + * return DroneList + * + * def MakeFlightSprites(Message,RawFlightList): # <<<<<<<<<<<<<< + * FlightList = [] + * Columns = ast.literal_eval(Message) + */ + +/* Python wrapper */ +static PyObject *__pyx_pw_6CAStar_19AATC_Monitor_Viewer_9MakeFlightSprites(PyObject *__pyx_self, PyObject *__pyx_args, PyObject *__pyx_kwds); /*proto*/ +static PyMethodDef __pyx_mdef_6CAStar_19AATC_Monitor_Viewer_9MakeFlightSprites = {"MakeFlightSprites", (PyCFunction)__pyx_pw_6CAStar_19AATC_Monitor_Viewer_9MakeFlightSprites, METH_VARARGS|METH_KEYWORDS, 0}; +static PyObject *__pyx_pw_6CAStar_19AATC_Monitor_Viewer_9MakeFlightSprites(PyObject *__pyx_self, PyObject *__pyx_args, PyObject *__pyx_kwds) { + PyObject *__pyx_v_Message = 0; + PyObject *__pyx_v_RawFlightList = 0; + PyObject *__pyx_r = 0; + __Pyx_RefNannyDeclarations + __Pyx_RefNannySetupContext("MakeFlightSprites (wrapper)", 0); + { + static PyObject **__pyx_pyargnames[] = {&__pyx_n_s_Message,&__pyx_n_s_RawFlightList,0}; + PyObject* values[2] = {0,0}; + if (unlikely(__pyx_kwds)) { + Py_ssize_t kw_args; + const Py_ssize_t pos_args = PyTuple_GET_SIZE(__pyx_args); + switch (pos_args) { + case 2: values[1] = PyTuple_GET_ITEM(__pyx_args, 1); + CYTHON_FALLTHROUGH; + case 1: values[0] = PyTuple_GET_ITEM(__pyx_args, 0); + CYTHON_FALLTHROUGH; + case 0: break; + default: goto __pyx_L5_argtuple_error; + } + kw_args = PyDict_Size(__pyx_kwds); + switch (pos_args) { + case 0: + if (likely((values[0] = PyDict_GetItem(__pyx_kwds, __pyx_n_s_Message)) != 0)) kw_args--; + else goto __pyx_L5_argtuple_error; + CYTHON_FALLTHROUGH; + case 1: + if (likely((values[1] = PyDict_GetItem(__pyx_kwds, __pyx_n_s_RawFlightList)) != 0)) kw_args--; + else { + __Pyx_RaiseArgtupleInvalid("MakeFlightSprites", 1, 2, 2, 1); __PYX_ERR(0, 187, __pyx_L3_error) + } + } + if (unlikely(kw_args > 0)) { + if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_pyargnames, 0, values, pos_args, "MakeFlightSprites") < 0)) __PYX_ERR(0, 187, __pyx_L3_error) + } + } else if (PyTuple_GET_SIZE(__pyx_args) != 2) { + goto __pyx_L5_argtuple_error; + } else { + values[0] = PyTuple_GET_ITEM(__pyx_args, 0); + values[1] = PyTuple_GET_ITEM(__pyx_args, 1); + } + __pyx_v_Message = values[0]; + __pyx_v_RawFlightList = values[1]; + } + goto __pyx_L4_argument_unpacking_done; + __pyx_L5_argtuple_error:; + __Pyx_RaiseArgtupleInvalid("MakeFlightSprites", 1, 2, 2, PyTuple_GET_SIZE(__pyx_args)); __PYX_ERR(0, 187, __pyx_L3_error) + __pyx_L3_error:; + __Pyx_AddTraceback("CAStar.AATC_Monitor_Viewer.MakeFlightSprites", __pyx_clineno, __pyx_lineno, __pyx_filename); + __Pyx_RefNannyFinishContext(); + return NULL; + __pyx_L4_argument_unpacking_done:; + __pyx_r = __pyx_pf_6CAStar_19AATC_Monitor_Viewer_8MakeFlightSprites(__pyx_self, __pyx_v_Message, __pyx_v_RawFlightList); + + /* function exit code */ + __Pyx_RefNannyFinishContext(); + return __pyx_r; +} + +static PyObject *__pyx_pf_6CAStar_19AATC_Monitor_Viewer_8MakeFlightSprites(CYTHON_UNUSED PyObject *__pyx_self, PyObject *__pyx_v_Message, PyObject *__pyx_v_RawFlightList) { + PyObject *__pyx_v_FlightList = NULL; + PyObject *__pyx_v_Columns = NULL; + PyObject *__pyx_v_FlightIDIndex = NULL; + PyObject *__pyx_v_DroneIDIndex = NULL; + PyObject *__pyx_v_StartCoordsIndex = NULL; + PyObject *__pyx_v_EndCoordsIndex = NULL; + PyObject *__pyx_v_StartTimeIndex = NULL; + PyObject *__pyx_v_ETAIndex = NULL; + CYTHON_UNUSED PyObject *__pyx_v_EndTimeIndex = NULL; + CYTHON_UNUSED PyObject *__pyx_v_DistanceIndex = NULL; + PyObject *__pyx_v_Flight = NULL; + PyObject *__pyx_v_Coords = NULL; + PyObject *__pyx_v_Coord = NULL; + PyObject *__pyx_v_Text = NULL; + __pyx_ctuple_long__and_long__and_long __pyx_v_Colour; + PyObject *__pyx_r = NULL; + __Pyx_RefNannyDeclarations + PyObject *__pyx_t_1 = NULL; + PyObject *__pyx_t_2 = NULL; + PyObject *__pyx_t_3 = NULL; + PyObject *__pyx_t_4 = NULL; + Py_ssize_t __pyx_t_5; + PyObject *(*__pyx_t_6)(PyObject *); + PyObject *__pyx_t_7 = NULL; + PyObject *__pyx_t_8 = NULL; + PyObject *__pyx_t_9 = NULL; + int __pyx_t_10; + PyObject *__pyx_t_11 = NULL; + __pyx_ctuple_long__and_long__and_long __pyx_t_12; + int __pyx_t_13; + __Pyx_RefNannySetupContext("MakeFlightSprites", 0); + + /* "CAStar/AATC_Monitor_Viewer.pyx":188 + * + * def MakeFlightSprites(Message,RawFlightList): + * FlightList = [] # <<<<<<<<<<<<<< + * Columns = ast.literal_eval(Message) + * FlightIDIndex = Columns.index("FlightID") + */ + __pyx_t_1 = PyList_New(0); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 188, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_1); + __pyx_v_FlightList = ((PyObject*)__pyx_t_1); + __pyx_t_1 = 0; + + /* "CAStar/AATC_Monitor_Viewer.pyx":189 + * def MakeFlightSprites(Message,RawFlightList): + * FlightList = [] + * Columns = ast.literal_eval(Message) # <<<<<<<<<<<<<< + * FlightIDIndex = Columns.index("FlightID") + * DroneIDIndex = Columns.index("DroneID") + */ + __pyx_t_2 = __Pyx_GetModuleGlobalName(__pyx_n_s_ast); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 189, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_2); + __pyx_t_3 = __Pyx_PyObject_GetAttrStr(__pyx_t_2, __pyx_n_s_literal_eval); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 189, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_3); + __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; + __pyx_t_2 = NULL; + if (CYTHON_UNPACK_METHODS && unlikely(PyMethod_Check(__pyx_t_3))) { + __pyx_t_2 = PyMethod_GET_SELF(__pyx_t_3); + if (likely(__pyx_t_2)) { + PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_3); + __Pyx_INCREF(__pyx_t_2); + __Pyx_INCREF(function); + __Pyx_DECREF_SET(__pyx_t_3, function); + } + } + if (!__pyx_t_2) { + __pyx_t_1 = __Pyx_PyObject_CallOneArg(__pyx_t_3, __pyx_v_Message); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 189, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_1); + } else { + #if CYTHON_FAST_PYCALL + if (PyFunction_Check(__pyx_t_3)) { + PyObject *__pyx_temp[2] = {__pyx_t_2, __pyx_v_Message}; + __pyx_t_1 = __Pyx_PyFunction_FastCall(__pyx_t_3, __pyx_temp+1-1, 1+1); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 189, __pyx_L1_error) + __Pyx_XDECREF(__pyx_t_2); __pyx_t_2 = 0; + __Pyx_GOTREF(__pyx_t_1); + } else + #endif + #if CYTHON_FAST_PYCCALL + if (__Pyx_PyFastCFunction_Check(__pyx_t_3)) { + PyObject *__pyx_temp[2] = {__pyx_t_2, __pyx_v_Message}; + __pyx_t_1 = __Pyx_PyCFunction_FastCall(__pyx_t_3, __pyx_temp+1-1, 1+1); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 189, __pyx_L1_error) + __Pyx_XDECREF(__pyx_t_2); __pyx_t_2 = 0; + __Pyx_GOTREF(__pyx_t_1); + } else + #endif + { + __pyx_t_4 = PyTuple_New(1+1); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 189, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_4); + __Pyx_GIVEREF(__pyx_t_2); PyTuple_SET_ITEM(__pyx_t_4, 0, __pyx_t_2); __pyx_t_2 = NULL; + __Pyx_INCREF(__pyx_v_Message); + __Pyx_GIVEREF(__pyx_v_Message); + PyTuple_SET_ITEM(__pyx_t_4, 0+1, __pyx_v_Message); + __pyx_t_1 = __Pyx_PyObject_Call(__pyx_t_3, __pyx_t_4, NULL); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 189, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_1); + __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0; + } + } + __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; + __pyx_v_Columns = __pyx_t_1; + __pyx_t_1 = 0; + + /* "CAStar/AATC_Monitor_Viewer.pyx":190 + * FlightList = [] + * Columns = ast.literal_eval(Message) + * FlightIDIndex = Columns.index("FlightID") # <<<<<<<<<<<<<< + * DroneIDIndex = Columns.index("DroneID") + * StartCoordsIndex = Columns.index("StartCoords") + */ + __pyx_t_1 = __Pyx_PyObject_GetAttrStr(__pyx_v_Columns, __pyx_n_s_index); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 190, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_1); + __pyx_t_3 = __Pyx_PyObject_Call(__pyx_t_1, __pyx_tuple__12, NULL); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 190, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_3); + __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; + __pyx_v_FlightIDIndex = __pyx_t_3; + __pyx_t_3 = 0; + + /* "CAStar/AATC_Monitor_Viewer.pyx":191 + * Columns = ast.literal_eval(Message) + * FlightIDIndex = Columns.index("FlightID") + * DroneIDIndex = Columns.index("DroneID") # <<<<<<<<<<<<<< + * StartCoordsIndex = Columns.index("StartCoords") + * EndCoordsIndex = Columns.index("EndCoords") + */ + __pyx_t_3 = __Pyx_PyObject_GetAttrStr(__pyx_v_Columns, __pyx_n_s_index); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 191, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_3); + __pyx_t_1 = __Pyx_PyObject_Call(__pyx_t_3, __pyx_tuple__13, NULL); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 191, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_1); + __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; + __pyx_v_DroneIDIndex = __pyx_t_1; + __pyx_t_1 = 0; + + /* "CAStar/AATC_Monitor_Viewer.pyx":192 + * FlightIDIndex = Columns.index("FlightID") + * DroneIDIndex = Columns.index("DroneID") + * StartCoordsIndex = Columns.index("StartCoords") # <<<<<<<<<<<<<< + * EndCoordsIndex = Columns.index("EndCoords") + * StartTimeIndex = Columns.index("StartTime") + */ + __pyx_t_1 = __Pyx_PyObject_GetAttrStr(__pyx_v_Columns, __pyx_n_s_index); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 192, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_1); + __pyx_t_3 = __Pyx_PyObject_Call(__pyx_t_1, __pyx_tuple__14, NULL); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 192, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_3); + __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; + __pyx_v_StartCoordsIndex = __pyx_t_3; + __pyx_t_3 = 0; + + /* "CAStar/AATC_Monitor_Viewer.pyx":193 + * DroneIDIndex = Columns.index("DroneID") + * StartCoordsIndex = Columns.index("StartCoords") + * EndCoordsIndex = Columns.index("EndCoords") # <<<<<<<<<<<<<< + * StartTimeIndex = Columns.index("StartTime") + * ETAIndex = Columns.index("ETA") + */ + __pyx_t_3 = __Pyx_PyObject_GetAttrStr(__pyx_v_Columns, __pyx_n_s_index); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 193, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_3); + __pyx_t_1 = __Pyx_PyObject_Call(__pyx_t_3, __pyx_tuple__15, NULL); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 193, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_1); + __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; + __pyx_v_EndCoordsIndex = __pyx_t_1; + __pyx_t_1 = 0; + + /* "CAStar/AATC_Monitor_Viewer.pyx":194 + * StartCoordsIndex = Columns.index("StartCoords") + * EndCoordsIndex = Columns.index("EndCoords") + * StartTimeIndex = Columns.index("StartTime") # <<<<<<<<<<<<<< + * ETAIndex = Columns.index("ETA") + * EndTimeIndex = Columns.index("EndTime") + */ + __pyx_t_1 = __Pyx_PyObject_GetAttrStr(__pyx_v_Columns, __pyx_n_s_index); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 194, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_1); + __pyx_t_3 = __Pyx_PyObject_Call(__pyx_t_1, __pyx_tuple__16, NULL); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 194, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_3); + __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; + __pyx_v_StartTimeIndex = __pyx_t_3; + __pyx_t_3 = 0; + + /* "CAStar/AATC_Monitor_Viewer.pyx":195 + * EndCoordsIndex = Columns.index("EndCoords") + * StartTimeIndex = Columns.index("StartTime") + * ETAIndex = Columns.index("ETA") # <<<<<<<<<<<<<< + * EndTimeIndex = Columns.index("EndTime") + * DistanceIndex = Columns.index("Distance") + */ + __pyx_t_3 = __Pyx_PyObject_GetAttrStr(__pyx_v_Columns, __pyx_n_s_index); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 195, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_3); + __pyx_t_1 = __Pyx_PyObject_Call(__pyx_t_3, __pyx_tuple__17, NULL); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 195, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_1); + __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; + __pyx_v_ETAIndex = __pyx_t_1; + __pyx_t_1 = 0; + + /* "CAStar/AATC_Monitor_Viewer.pyx":196 + * StartTimeIndex = Columns.index("StartTime") + * ETAIndex = Columns.index("ETA") + * EndTimeIndex = Columns.index("EndTime") # <<<<<<<<<<<<<< + * DistanceIndex = Columns.index("Distance") + * for Flight in RawFlightList: + */ + __pyx_t_1 = __Pyx_PyObject_GetAttrStr(__pyx_v_Columns, __pyx_n_s_index); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 196, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_1); + __pyx_t_3 = __Pyx_PyObject_Call(__pyx_t_1, __pyx_tuple__18, NULL); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 196, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_3); + __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; + __pyx_v_EndTimeIndex = __pyx_t_3; + __pyx_t_3 = 0; + + /* "CAStar/AATC_Monitor_Viewer.pyx":197 + * ETAIndex = Columns.index("ETA") + * EndTimeIndex = Columns.index("EndTime") + * DistanceIndex = Columns.index("Distance") # <<<<<<<<<<<<<< + * for Flight in RawFlightList: + * #Start Sprite + */ + __pyx_t_3 = __Pyx_PyObject_GetAttrStr(__pyx_v_Columns, __pyx_n_s_index); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 197, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_3); + __pyx_t_1 = __Pyx_PyObject_Call(__pyx_t_3, __pyx_tuple__19, NULL); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 197, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_1); + __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; + __pyx_v_DistanceIndex = __pyx_t_1; + __pyx_t_1 = 0; + + /* "CAStar/AATC_Monitor_Viewer.pyx":198 + * EndTimeIndex = Columns.index("EndTime") + * DistanceIndex = Columns.index("Distance") + * for Flight in RawFlightList: # <<<<<<<<<<<<<< + * #Start Sprite + * Coords = ast.literal_eval(Flight[StartCoordsIndex]) + */ + if (likely(PyList_CheckExact(__pyx_v_RawFlightList)) || PyTuple_CheckExact(__pyx_v_RawFlightList)) { + __pyx_t_1 = __pyx_v_RawFlightList; __Pyx_INCREF(__pyx_t_1); __pyx_t_5 = 0; + __pyx_t_6 = NULL; + } else { + __pyx_t_5 = -1; __pyx_t_1 = PyObject_GetIter(__pyx_v_RawFlightList); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 198, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_1); + __pyx_t_6 = Py_TYPE(__pyx_t_1)->tp_iternext; if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 198, __pyx_L1_error) + } + for (;;) { + if (likely(!__pyx_t_6)) { + if (likely(PyList_CheckExact(__pyx_t_1))) { + if (__pyx_t_5 >= PyList_GET_SIZE(__pyx_t_1)) break; + #if CYTHON_ASSUME_SAFE_MACROS && !CYTHON_AVOID_BORROWED_REFS + __pyx_t_3 = PyList_GET_ITEM(__pyx_t_1, __pyx_t_5); __Pyx_INCREF(__pyx_t_3); __pyx_t_5++; if (unlikely(0 < 0)) __PYX_ERR(0, 198, __pyx_L1_error) + #else + __pyx_t_3 = PySequence_ITEM(__pyx_t_1, __pyx_t_5); __pyx_t_5++; if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 198, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_3); + #endif + } else { + if (__pyx_t_5 >= PyTuple_GET_SIZE(__pyx_t_1)) break; + #if CYTHON_ASSUME_SAFE_MACROS && !CYTHON_AVOID_BORROWED_REFS + __pyx_t_3 = PyTuple_GET_ITEM(__pyx_t_1, __pyx_t_5); __Pyx_INCREF(__pyx_t_3); __pyx_t_5++; if (unlikely(0 < 0)) __PYX_ERR(0, 198, __pyx_L1_error) + #else + __pyx_t_3 = PySequence_ITEM(__pyx_t_1, __pyx_t_5); __pyx_t_5++; if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 198, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_3); + #endif + } + } else { + __pyx_t_3 = __pyx_t_6(__pyx_t_1); + if (unlikely(!__pyx_t_3)) { + PyObject* exc_type = PyErr_Occurred(); + if (exc_type) { + if (likely(exc_type == PyExc_StopIteration || PyErr_GivenExceptionMatches(exc_type, PyExc_StopIteration))) PyErr_Clear(); + else __PYX_ERR(0, 198, __pyx_L1_error) + } + break; + } + __Pyx_GOTREF(__pyx_t_3); + } + __Pyx_XDECREF_SET(__pyx_v_Flight, __pyx_t_3); + __pyx_t_3 = 0; + + /* "CAStar/AATC_Monitor_Viewer.pyx":200 + * for Flight in RawFlightList: + * #Start Sprite + * Coords = ast.literal_eval(Flight[StartCoordsIndex]) # <<<<<<<<<<<<<< + * Coord = AATC_Coordinate.Coordinate(Coords[0],Coords[1],Coords[2],0.0001,0.0001,0.00001) + * Text = "F:"+ str(Flight[FlightIDIndex])+" D:"+ str(Flight[DroneIDIndex])+ "ST:"+str(Flight[StartTimeIndex]) + */ + __pyx_t_4 = __Pyx_GetModuleGlobalName(__pyx_n_s_ast); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 200, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_4); + __pyx_t_2 = __Pyx_PyObject_GetAttrStr(__pyx_t_4, __pyx_n_s_literal_eval); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 200, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_2); + __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0; + __pyx_t_4 = PyObject_GetItem(__pyx_v_Flight, __pyx_v_StartCoordsIndex); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 200, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_4); + __pyx_t_7 = NULL; + if (CYTHON_UNPACK_METHODS && unlikely(PyMethod_Check(__pyx_t_2))) { + __pyx_t_7 = PyMethod_GET_SELF(__pyx_t_2); + if (likely(__pyx_t_7)) { + PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_2); + __Pyx_INCREF(__pyx_t_7); + __Pyx_INCREF(function); + __Pyx_DECREF_SET(__pyx_t_2, function); + } + } + if (!__pyx_t_7) { + __pyx_t_3 = __Pyx_PyObject_CallOneArg(__pyx_t_2, __pyx_t_4); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 200, __pyx_L1_error) + __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0; + __Pyx_GOTREF(__pyx_t_3); + } else { + #if CYTHON_FAST_PYCALL + if (PyFunction_Check(__pyx_t_2)) { + PyObject *__pyx_temp[2] = {__pyx_t_7, __pyx_t_4}; + __pyx_t_3 = __Pyx_PyFunction_FastCall(__pyx_t_2, __pyx_temp+1-1, 1+1); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 200, __pyx_L1_error) + __Pyx_XDECREF(__pyx_t_7); __pyx_t_7 = 0; + __Pyx_GOTREF(__pyx_t_3); + __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0; + } else + #endif + #if CYTHON_FAST_PYCCALL + if (__Pyx_PyFastCFunction_Check(__pyx_t_2)) { + PyObject *__pyx_temp[2] = {__pyx_t_7, __pyx_t_4}; + __pyx_t_3 = __Pyx_PyCFunction_FastCall(__pyx_t_2, __pyx_temp+1-1, 1+1); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 200, __pyx_L1_error) + __Pyx_XDECREF(__pyx_t_7); __pyx_t_7 = 0; + __Pyx_GOTREF(__pyx_t_3); + __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0; + } else + #endif + { + __pyx_t_8 = PyTuple_New(1+1); if (unlikely(!__pyx_t_8)) __PYX_ERR(0, 200, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_8); + __Pyx_GIVEREF(__pyx_t_7); PyTuple_SET_ITEM(__pyx_t_8, 0, __pyx_t_7); __pyx_t_7 = NULL; + __Pyx_GIVEREF(__pyx_t_4); + PyTuple_SET_ITEM(__pyx_t_8, 0+1, __pyx_t_4); + __pyx_t_4 = 0; + __pyx_t_3 = __Pyx_PyObject_Call(__pyx_t_2, __pyx_t_8, NULL); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 200, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_3); + __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0; + } + } + __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; + __Pyx_XDECREF_SET(__pyx_v_Coords, __pyx_t_3); + __pyx_t_3 = 0; + + /* "CAStar/AATC_Monitor_Viewer.pyx":201 + * #Start Sprite + * Coords = ast.literal_eval(Flight[StartCoordsIndex]) + * Coord = AATC_Coordinate.Coordinate(Coords[0],Coords[1],Coords[2],0.0001,0.0001,0.00001) # <<<<<<<<<<<<<< + * Text = "F:"+ str(Flight[FlightIDIndex])+" D:"+ str(Flight[DroneIDIndex])+ "ST:"+str(Flight[StartTimeIndex]) + * Colour = (0,0,255) + */ + __pyx_t_2 = __Pyx_GetModuleGlobalName(__pyx_n_s_AATC_Coordinate); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 201, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_2); + __pyx_t_8 = __Pyx_PyObject_GetAttrStr(__pyx_t_2, __pyx_n_s_Coordinate); if (unlikely(!__pyx_t_8)) __PYX_ERR(0, 201, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_8); + __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; + __pyx_t_2 = __Pyx_GetItemInt(__pyx_v_Coords, 0, long, 1, __Pyx_PyInt_From_long, 0, 0, 0); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 201, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_2); + __pyx_t_4 = __Pyx_GetItemInt(__pyx_v_Coords, 1, long, 1, __Pyx_PyInt_From_long, 0, 0, 0); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 201, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_4); + __pyx_t_7 = __Pyx_GetItemInt(__pyx_v_Coords, 2, long, 1, __Pyx_PyInt_From_long, 0, 0, 0); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 201, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_7); + __pyx_t_9 = NULL; + __pyx_t_10 = 0; + if (CYTHON_UNPACK_METHODS && unlikely(PyMethod_Check(__pyx_t_8))) { + __pyx_t_9 = PyMethod_GET_SELF(__pyx_t_8); + if (likely(__pyx_t_9)) { + PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_8); + __Pyx_INCREF(__pyx_t_9); + __Pyx_INCREF(function); + __Pyx_DECREF_SET(__pyx_t_8, function); + __pyx_t_10 = 1; + } + } + #if CYTHON_FAST_PYCALL + if (PyFunction_Check(__pyx_t_8)) { + PyObject *__pyx_temp[7] = {__pyx_t_9, __pyx_t_2, __pyx_t_4, __pyx_t_7, __pyx_float_0_0001, __pyx_float_0_0001, __pyx_float_0_00001}; + __pyx_t_3 = __Pyx_PyFunction_FastCall(__pyx_t_8, __pyx_temp+1-__pyx_t_10, 6+__pyx_t_10); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 201, __pyx_L1_error) + __Pyx_XDECREF(__pyx_t_9); __pyx_t_9 = 0; + __Pyx_GOTREF(__pyx_t_3); + __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; + __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0; + __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0; + } else + #endif + #if CYTHON_FAST_PYCCALL + if (__Pyx_PyFastCFunction_Check(__pyx_t_8)) { + PyObject *__pyx_temp[7] = {__pyx_t_9, __pyx_t_2, __pyx_t_4, __pyx_t_7, __pyx_float_0_0001, __pyx_float_0_0001, __pyx_float_0_00001}; + __pyx_t_3 = __Pyx_PyCFunction_FastCall(__pyx_t_8, __pyx_temp+1-__pyx_t_10, 6+__pyx_t_10); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 201, __pyx_L1_error) + __Pyx_XDECREF(__pyx_t_9); __pyx_t_9 = 0; + __Pyx_GOTREF(__pyx_t_3); + __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; + __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0; + __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0; + } else + #endif + { + __pyx_t_11 = PyTuple_New(6+__pyx_t_10); if (unlikely(!__pyx_t_11)) __PYX_ERR(0, 201, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_11); + if (__pyx_t_9) { + __Pyx_GIVEREF(__pyx_t_9); PyTuple_SET_ITEM(__pyx_t_11, 0, __pyx_t_9); __pyx_t_9 = NULL; + } + __Pyx_GIVEREF(__pyx_t_2); + PyTuple_SET_ITEM(__pyx_t_11, 0+__pyx_t_10, __pyx_t_2); + __Pyx_GIVEREF(__pyx_t_4); + PyTuple_SET_ITEM(__pyx_t_11, 1+__pyx_t_10, __pyx_t_4); + __Pyx_GIVEREF(__pyx_t_7); + PyTuple_SET_ITEM(__pyx_t_11, 2+__pyx_t_10, __pyx_t_7); + __Pyx_INCREF(__pyx_float_0_0001); + __Pyx_GIVEREF(__pyx_float_0_0001); + PyTuple_SET_ITEM(__pyx_t_11, 3+__pyx_t_10, __pyx_float_0_0001); + __Pyx_INCREF(__pyx_float_0_0001); + __Pyx_GIVEREF(__pyx_float_0_0001); + PyTuple_SET_ITEM(__pyx_t_11, 4+__pyx_t_10, __pyx_float_0_0001); + __Pyx_INCREF(__pyx_float_0_00001); + __Pyx_GIVEREF(__pyx_float_0_00001); + PyTuple_SET_ITEM(__pyx_t_11, 5+__pyx_t_10, __pyx_float_0_00001); + __pyx_t_2 = 0; + __pyx_t_4 = 0; + __pyx_t_7 = 0; + __pyx_t_3 = __Pyx_PyObject_Call(__pyx_t_8, __pyx_t_11, NULL); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 201, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_3); + __Pyx_DECREF(__pyx_t_11); __pyx_t_11 = 0; + } + __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0; + __Pyx_XDECREF_SET(__pyx_v_Coord, __pyx_t_3); + __pyx_t_3 = 0; + + /* "CAStar/AATC_Monitor_Viewer.pyx":202 + * Coords = ast.literal_eval(Flight[StartCoordsIndex]) + * Coord = AATC_Coordinate.Coordinate(Coords[0],Coords[1],Coords[2],0.0001,0.0001,0.00001) + * Text = "F:"+ str(Flight[FlightIDIndex])+" D:"+ str(Flight[DroneIDIndex])+ "ST:"+str(Flight[StartTimeIndex]) # <<<<<<<<<<<<<< + * Colour = (0,0,255) + * FlightList.append(Monitor_Sprite(Coord,"StartPoint",Text,Colour)) + */ + __pyx_t_3 = PyObject_GetItem(__pyx_v_Flight, __pyx_v_FlightIDIndex); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 202, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_3); + __pyx_t_8 = PyTuple_New(1); if (unlikely(!__pyx_t_8)) __PYX_ERR(0, 202, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_8); + __Pyx_GIVEREF(__pyx_t_3); + PyTuple_SET_ITEM(__pyx_t_8, 0, __pyx_t_3); + __pyx_t_3 = 0; + __pyx_t_3 = __Pyx_PyObject_Call(((PyObject *)(&PyString_Type)), __pyx_t_8, NULL); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 202, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_3); + __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0; + __pyx_t_8 = PyNumber_Add(__pyx_kp_s_F, __pyx_t_3); if (unlikely(!__pyx_t_8)) __PYX_ERR(0, 202, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_8); + __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; + __pyx_t_3 = PyNumber_Add(__pyx_t_8, __pyx_kp_s_D_2); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 202, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_3); + __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0; + __pyx_t_8 = PyObject_GetItem(__pyx_v_Flight, __pyx_v_DroneIDIndex); if (unlikely(!__pyx_t_8)) __PYX_ERR(0, 202, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_8); + __pyx_t_11 = PyTuple_New(1); if (unlikely(!__pyx_t_11)) __PYX_ERR(0, 202, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_11); + __Pyx_GIVEREF(__pyx_t_8); + PyTuple_SET_ITEM(__pyx_t_11, 0, __pyx_t_8); + __pyx_t_8 = 0; + __pyx_t_8 = __Pyx_PyObject_Call(((PyObject *)(&PyString_Type)), __pyx_t_11, NULL); if (unlikely(!__pyx_t_8)) __PYX_ERR(0, 202, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_8); + __Pyx_DECREF(__pyx_t_11); __pyx_t_11 = 0; + __pyx_t_11 = PyNumber_Add(__pyx_t_3, __pyx_t_8); if (unlikely(!__pyx_t_11)) __PYX_ERR(0, 202, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_11); + __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; + __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0; + __pyx_t_8 = PyNumber_Add(__pyx_t_11, __pyx_kp_s_ST); if (unlikely(!__pyx_t_8)) __PYX_ERR(0, 202, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_8); + __Pyx_DECREF(__pyx_t_11); __pyx_t_11 = 0; + __pyx_t_11 = PyObject_GetItem(__pyx_v_Flight, __pyx_v_StartTimeIndex); if (unlikely(!__pyx_t_11)) __PYX_ERR(0, 202, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_11); + __pyx_t_3 = PyTuple_New(1); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 202, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_3); + __Pyx_GIVEREF(__pyx_t_11); + PyTuple_SET_ITEM(__pyx_t_3, 0, __pyx_t_11); + __pyx_t_11 = 0; + __pyx_t_11 = __Pyx_PyObject_Call(((PyObject *)(&PyString_Type)), __pyx_t_3, NULL); if (unlikely(!__pyx_t_11)) __PYX_ERR(0, 202, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_11); + __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; + __pyx_t_3 = PyNumber_Add(__pyx_t_8, __pyx_t_11); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 202, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_3); + __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0; + __Pyx_DECREF(__pyx_t_11); __pyx_t_11 = 0; + __Pyx_XDECREF_SET(__pyx_v_Text, __pyx_t_3); + __pyx_t_3 = 0; + + /* "CAStar/AATC_Monitor_Viewer.pyx":203 + * Coord = AATC_Coordinate.Coordinate(Coords[0],Coords[1],Coords[2],0.0001,0.0001,0.00001) + * Text = "F:"+ str(Flight[FlightIDIndex])+" D:"+ str(Flight[DroneIDIndex])+ "ST:"+str(Flight[StartTimeIndex]) + * Colour = (0,0,255) # <<<<<<<<<<<<<< + * FlightList.append(Monitor_Sprite(Coord,"StartPoint",Text,Colour)) + * + */ + __pyx_t_12.f0 = 0; + __pyx_t_12.f1 = 0; + __pyx_t_12.f2 = 0xFF; + __pyx_v_Colour = __pyx_t_12; + + /* "CAStar/AATC_Monitor_Viewer.pyx":204 + * Text = "F:"+ str(Flight[FlightIDIndex])+" D:"+ str(Flight[DroneIDIndex])+ "ST:"+str(Flight[StartTimeIndex]) + * Colour = (0,0,255) + * FlightList.append(Monitor_Sprite(Coord,"StartPoint",Text,Colour)) # <<<<<<<<<<<<<< + * + * #End Sprite + */ + __pyx_t_11 = __Pyx_GetModuleGlobalName(__pyx_n_s_Monitor_Sprite); if (unlikely(!__pyx_t_11)) __PYX_ERR(0, 204, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_11); + __pyx_t_8 = __pyx_convert__to_py___pyx_ctuple_long__and_long__and_long(__pyx_v_Colour); if (unlikely(!__pyx_t_8)) __PYX_ERR(0, 204, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_8); + __pyx_t_7 = NULL; + __pyx_t_10 = 0; + if (CYTHON_UNPACK_METHODS && unlikely(PyMethod_Check(__pyx_t_11))) { + __pyx_t_7 = PyMethod_GET_SELF(__pyx_t_11); + if (likely(__pyx_t_7)) { + PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_11); + __Pyx_INCREF(__pyx_t_7); + __Pyx_INCREF(function); + __Pyx_DECREF_SET(__pyx_t_11, function); + __pyx_t_10 = 1; + } + } + #if CYTHON_FAST_PYCALL + if (PyFunction_Check(__pyx_t_11)) { + PyObject *__pyx_temp[5] = {__pyx_t_7, __pyx_v_Coord, __pyx_n_s_StartPoint, __pyx_v_Text, __pyx_t_8}; + __pyx_t_3 = __Pyx_PyFunction_FastCall(__pyx_t_11, __pyx_temp+1-__pyx_t_10, 4+__pyx_t_10); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 204, __pyx_L1_error) + __Pyx_XDECREF(__pyx_t_7); __pyx_t_7 = 0; + __Pyx_GOTREF(__pyx_t_3); + __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0; + } else + #endif + #if CYTHON_FAST_PYCCALL + if (__Pyx_PyFastCFunction_Check(__pyx_t_11)) { + PyObject *__pyx_temp[5] = {__pyx_t_7, __pyx_v_Coord, __pyx_n_s_StartPoint, __pyx_v_Text, __pyx_t_8}; + __pyx_t_3 = __Pyx_PyCFunction_FastCall(__pyx_t_11, __pyx_temp+1-__pyx_t_10, 4+__pyx_t_10); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 204, __pyx_L1_error) + __Pyx_XDECREF(__pyx_t_7); __pyx_t_7 = 0; + __Pyx_GOTREF(__pyx_t_3); + __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0; + } else + #endif + { + __pyx_t_4 = PyTuple_New(4+__pyx_t_10); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 204, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_4); + if (__pyx_t_7) { + __Pyx_GIVEREF(__pyx_t_7); PyTuple_SET_ITEM(__pyx_t_4, 0, __pyx_t_7); __pyx_t_7 = NULL; + } + __Pyx_INCREF(__pyx_v_Coord); + __Pyx_GIVEREF(__pyx_v_Coord); + PyTuple_SET_ITEM(__pyx_t_4, 0+__pyx_t_10, __pyx_v_Coord); + __Pyx_INCREF(__pyx_n_s_StartPoint); + __Pyx_GIVEREF(__pyx_n_s_StartPoint); + PyTuple_SET_ITEM(__pyx_t_4, 1+__pyx_t_10, __pyx_n_s_StartPoint); + __Pyx_INCREF(__pyx_v_Text); + __Pyx_GIVEREF(__pyx_v_Text); + PyTuple_SET_ITEM(__pyx_t_4, 2+__pyx_t_10, __pyx_v_Text); + __Pyx_GIVEREF(__pyx_t_8); + PyTuple_SET_ITEM(__pyx_t_4, 3+__pyx_t_10, __pyx_t_8); + __pyx_t_8 = 0; + __pyx_t_3 = __Pyx_PyObject_Call(__pyx_t_11, __pyx_t_4, NULL); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 204, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_3); + __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0; + } + __Pyx_DECREF(__pyx_t_11); __pyx_t_11 = 0; + __pyx_t_13 = __Pyx_PyList_Append(__pyx_v_FlightList, __pyx_t_3); if (unlikely(__pyx_t_13 == -1)) __PYX_ERR(0, 204, __pyx_L1_error) + __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; + + /* "CAStar/AATC_Monitor_Viewer.pyx":207 + * + * #End Sprite + * Coords = ast.literal_eval(Flight[EndCoordsIndex]) # <<<<<<<<<<<<<< + * Coord = AATC_Coordinate.Coordinate(Coords[0],Coords[1],Coords[2],0.0001,0.0001,0.00001) + * Text = "F:"+ str(Flight[FlightIDIndex])+" D:"+ str(Flight[DroneIDIndex])+ "ETA:"+str(Flight[ETAIndex]) + */ + __pyx_t_11 = __Pyx_GetModuleGlobalName(__pyx_n_s_ast); if (unlikely(!__pyx_t_11)) __PYX_ERR(0, 207, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_11); + __pyx_t_4 = __Pyx_PyObject_GetAttrStr(__pyx_t_11, __pyx_n_s_literal_eval); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 207, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_4); + __Pyx_DECREF(__pyx_t_11); __pyx_t_11 = 0; + __pyx_t_11 = PyObject_GetItem(__pyx_v_Flight, __pyx_v_EndCoordsIndex); if (unlikely(!__pyx_t_11)) __PYX_ERR(0, 207, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_11); + __pyx_t_8 = NULL; + if (CYTHON_UNPACK_METHODS && unlikely(PyMethod_Check(__pyx_t_4))) { + __pyx_t_8 = PyMethod_GET_SELF(__pyx_t_4); + if (likely(__pyx_t_8)) { + PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_4); + __Pyx_INCREF(__pyx_t_8); + __Pyx_INCREF(function); + __Pyx_DECREF_SET(__pyx_t_4, function); + } + } + if (!__pyx_t_8) { + __pyx_t_3 = __Pyx_PyObject_CallOneArg(__pyx_t_4, __pyx_t_11); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 207, __pyx_L1_error) + __Pyx_DECREF(__pyx_t_11); __pyx_t_11 = 0; + __Pyx_GOTREF(__pyx_t_3); + } else { + #if CYTHON_FAST_PYCALL + if (PyFunction_Check(__pyx_t_4)) { + PyObject *__pyx_temp[2] = {__pyx_t_8, __pyx_t_11}; + __pyx_t_3 = __Pyx_PyFunction_FastCall(__pyx_t_4, __pyx_temp+1-1, 1+1); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 207, __pyx_L1_error) + __Pyx_XDECREF(__pyx_t_8); __pyx_t_8 = 0; + __Pyx_GOTREF(__pyx_t_3); + __Pyx_DECREF(__pyx_t_11); __pyx_t_11 = 0; + } else + #endif + #if CYTHON_FAST_PYCCALL + if (__Pyx_PyFastCFunction_Check(__pyx_t_4)) { + PyObject *__pyx_temp[2] = {__pyx_t_8, __pyx_t_11}; + __pyx_t_3 = __Pyx_PyCFunction_FastCall(__pyx_t_4, __pyx_temp+1-1, 1+1); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 207, __pyx_L1_error) + __Pyx_XDECREF(__pyx_t_8); __pyx_t_8 = 0; + __Pyx_GOTREF(__pyx_t_3); + __Pyx_DECREF(__pyx_t_11); __pyx_t_11 = 0; + } else + #endif + { + __pyx_t_7 = PyTuple_New(1+1); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 207, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_7); + __Pyx_GIVEREF(__pyx_t_8); PyTuple_SET_ITEM(__pyx_t_7, 0, __pyx_t_8); __pyx_t_8 = NULL; + __Pyx_GIVEREF(__pyx_t_11); + PyTuple_SET_ITEM(__pyx_t_7, 0+1, __pyx_t_11); + __pyx_t_11 = 0; + __pyx_t_3 = __Pyx_PyObject_Call(__pyx_t_4, __pyx_t_7, NULL); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 207, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_3); + __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0; + } + } + __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0; + __Pyx_DECREF_SET(__pyx_v_Coords, __pyx_t_3); + __pyx_t_3 = 0; + + /* "CAStar/AATC_Monitor_Viewer.pyx":208 + * #End Sprite + * Coords = ast.literal_eval(Flight[EndCoordsIndex]) + * Coord = AATC_Coordinate.Coordinate(Coords[0],Coords[1],Coords[2],0.0001,0.0001,0.00001) # <<<<<<<<<<<<<< + * Text = "F:"+ str(Flight[FlightIDIndex])+" D:"+ str(Flight[DroneIDIndex])+ "ETA:"+str(Flight[ETAIndex]) + * Colour = (255,0,0) + */ + __pyx_t_4 = __Pyx_GetModuleGlobalName(__pyx_n_s_AATC_Coordinate); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 208, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_4); + __pyx_t_7 = __Pyx_PyObject_GetAttrStr(__pyx_t_4, __pyx_n_s_Coordinate); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 208, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_7); + __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0; + __pyx_t_4 = __Pyx_GetItemInt(__pyx_v_Coords, 0, long, 1, __Pyx_PyInt_From_long, 0, 0, 0); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 208, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_4); + __pyx_t_11 = __Pyx_GetItemInt(__pyx_v_Coords, 1, long, 1, __Pyx_PyInt_From_long, 0, 0, 0); if (unlikely(!__pyx_t_11)) __PYX_ERR(0, 208, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_11); + __pyx_t_8 = __Pyx_GetItemInt(__pyx_v_Coords, 2, long, 1, __Pyx_PyInt_From_long, 0, 0, 0); if (unlikely(!__pyx_t_8)) __PYX_ERR(0, 208, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_8); + __pyx_t_2 = NULL; + __pyx_t_10 = 0; + if (CYTHON_UNPACK_METHODS && unlikely(PyMethod_Check(__pyx_t_7))) { + __pyx_t_2 = PyMethod_GET_SELF(__pyx_t_7); + if (likely(__pyx_t_2)) { + PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_7); + __Pyx_INCREF(__pyx_t_2); + __Pyx_INCREF(function); + __Pyx_DECREF_SET(__pyx_t_7, function); + __pyx_t_10 = 1; + } + } + #if CYTHON_FAST_PYCALL + if (PyFunction_Check(__pyx_t_7)) { + PyObject *__pyx_temp[7] = {__pyx_t_2, __pyx_t_4, __pyx_t_11, __pyx_t_8, __pyx_float_0_0001, __pyx_float_0_0001, __pyx_float_0_00001}; + __pyx_t_3 = __Pyx_PyFunction_FastCall(__pyx_t_7, __pyx_temp+1-__pyx_t_10, 6+__pyx_t_10); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 208, __pyx_L1_error) + __Pyx_XDECREF(__pyx_t_2); __pyx_t_2 = 0; + __Pyx_GOTREF(__pyx_t_3); + __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0; + __Pyx_DECREF(__pyx_t_11); __pyx_t_11 = 0; + __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0; + } else + #endif + #if CYTHON_FAST_PYCCALL + if (__Pyx_PyFastCFunction_Check(__pyx_t_7)) { + PyObject *__pyx_temp[7] = {__pyx_t_2, __pyx_t_4, __pyx_t_11, __pyx_t_8, __pyx_float_0_0001, __pyx_float_0_0001, __pyx_float_0_00001}; + __pyx_t_3 = __Pyx_PyCFunction_FastCall(__pyx_t_7, __pyx_temp+1-__pyx_t_10, 6+__pyx_t_10); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 208, __pyx_L1_error) + __Pyx_XDECREF(__pyx_t_2); __pyx_t_2 = 0; + __Pyx_GOTREF(__pyx_t_3); + __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0; + __Pyx_DECREF(__pyx_t_11); __pyx_t_11 = 0; + __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0; + } else + #endif + { + __pyx_t_9 = PyTuple_New(6+__pyx_t_10); if (unlikely(!__pyx_t_9)) __PYX_ERR(0, 208, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_9); + if (__pyx_t_2) { + __Pyx_GIVEREF(__pyx_t_2); PyTuple_SET_ITEM(__pyx_t_9, 0, __pyx_t_2); __pyx_t_2 = NULL; + } + __Pyx_GIVEREF(__pyx_t_4); + PyTuple_SET_ITEM(__pyx_t_9, 0+__pyx_t_10, __pyx_t_4); + __Pyx_GIVEREF(__pyx_t_11); + PyTuple_SET_ITEM(__pyx_t_9, 1+__pyx_t_10, __pyx_t_11); + __Pyx_GIVEREF(__pyx_t_8); + PyTuple_SET_ITEM(__pyx_t_9, 2+__pyx_t_10, __pyx_t_8); + __Pyx_INCREF(__pyx_float_0_0001); + __Pyx_GIVEREF(__pyx_float_0_0001); + PyTuple_SET_ITEM(__pyx_t_9, 3+__pyx_t_10, __pyx_float_0_0001); + __Pyx_INCREF(__pyx_float_0_0001); + __Pyx_GIVEREF(__pyx_float_0_0001); + PyTuple_SET_ITEM(__pyx_t_9, 4+__pyx_t_10, __pyx_float_0_0001); + __Pyx_INCREF(__pyx_float_0_00001); + __Pyx_GIVEREF(__pyx_float_0_00001); + PyTuple_SET_ITEM(__pyx_t_9, 5+__pyx_t_10, __pyx_float_0_00001); + __pyx_t_4 = 0; + __pyx_t_11 = 0; + __pyx_t_8 = 0; + __pyx_t_3 = __Pyx_PyObject_Call(__pyx_t_7, __pyx_t_9, NULL); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 208, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_3); + __Pyx_DECREF(__pyx_t_9); __pyx_t_9 = 0; + } + __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0; + __Pyx_DECREF_SET(__pyx_v_Coord, __pyx_t_3); + __pyx_t_3 = 0; + + /* "CAStar/AATC_Monitor_Viewer.pyx":209 + * Coords = ast.literal_eval(Flight[EndCoordsIndex]) + * Coord = AATC_Coordinate.Coordinate(Coords[0],Coords[1],Coords[2],0.0001,0.0001,0.00001) + * Text = "F:"+ str(Flight[FlightIDIndex])+" D:"+ str(Flight[DroneIDIndex])+ "ETA:"+str(Flight[ETAIndex]) # <<<<<<<<<<<<<< + * Colour = (255,0,0) + * FlightList.append(Monitor_Sprite(Coord,"EndPoint",Text,Colour)) + */ + __pyx_t_3 = PyObject_GetItem(__pyx_v_Flight, __pyx_v_FlightIDIndex); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 209, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_3); + __pyx_t_7 = PyTuple_New(1); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 209, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_7); + __Pyx_GIVEREF(__pyx_t_3); + PyTuple_SET_ITEM(__pyx_t_7, 0, __pyx_t_3); + __pyx_t_3 = 0; + __pyx_t_3 = __Pyx_PyObject_Call(((PyObject *)(&PyString_Type)), __pyx_t_7, NULL); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 209, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_3); + __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0; + __pyx_t_7 = PyNumber_Add(__pyx_kp_s_F, __pyx_t_3); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 209, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_7); + __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; + __pyx_t_3 = PyNumber_Add(__pyx_t_7, __pyx_kp_s_D_2); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 209, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_3); + __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0; + __pyx_t_7 = PyObject_GetItem(__pyx_v_Flight, __pyx_v_DroneIDIndex); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 209, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_7); + __pyx_t_9 = PyTuple_New(1); if (unlikely(!__pyx_t_9)) __PYX_ERR(0, 209, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_9); + __Pyx_GIVEREF(__pyx_t_7); + PyTuple_SET_ITEM(__pyx_t_9, 0, __pyx_t_7); + __pyx_t_7 = 0; + __pyx_t_7 = __Pyx_PyObject_Call(((PyObject *)(&PyString_Type)), __pyx_t_9, NULL); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 209, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_7); + __Pyx_DECREF(__pyx_t_9); __pyx_t_9 = 0; + __pyx_t_9 = PyNumber_Add(__pyx_t_3, __pyx_t_7); if (unlikely(!__pyx_t_9)) __PYX_ERR(0, 209, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_9); + __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; + __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0; + __pyx_t_7 = PyNumber_Add(__pyx_t_9, __pyx_kp_s_ETA_2); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 209, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_7); + __Pyx_DECREF(__pyx_t_9); __pyx_t_9 = 0; + __pyx_t_9 = PyObject_GetItem(__pyx_v_Flight, __pyx_v_ETAIndex); if (unlikely(!__pyx_t_9)) __PYX_ERR(0, 209, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_9); + __pyx_t_3 = PyTuple_New(1); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 209, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_3); + __Pyx_GIVEREF(__pyx_t_9); + PyTuple_SET_ITEM(__pyx_t_3, 0, __pyx_t_9); + __pyx_t_9 = 0; + __pyx_t_9 = __Pyx_PyObject_Call(((PyObject *)(&PyString_Type)), __pyx_t_3, NULL); if (unlikely(!__pyx_t_9)) __PYX_ERR(0, 209, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_9); + __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; + __pyx_t_3 = PyNumber_Add(__pyx_t_7, __pyx_t_9); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 209, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_3); + __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0; + __Pyx_DECREF(__pyx_t_9); __pyx_t_9 = 0; + __Pyx_DECREF_SET(__pyx_v_Text, __pyx_t_3); + __pyx_t_3 = 0; + + /* "CAStar/AATC_Monitor_Viewer.pyx":210 + * Coord = AATC_Coordinate.Coordinate(Coords[0],Coords[1],Coords[2],0.0001,0.0001,0.00001) + * Text = "F:"+ str(Flight[FlightIDIndex])+" D:"+ str(Flight[DroneIDIndex])+ "ETA:"+str(Flight[ETAIndex]) + * Colour = (255,0,0) # <<<<<<<<<<<<<< + * FlightList.append(Monitor_Sprite(Coord,"EndPoint",Text,Colour)) + * return FlightList + */ + __pyx_t_12.f0 = 0xFF; + __pyx_t_12.f1 = 0; + __pyx_t_12.f2 = 0; + __pyx_v_Colour = __pyx_t_12; + + /* "CAStar/AATC_Monitor_Viewer.pyx":211 + * Text = "F:"+ str(Flight[FlightIDIndex])+" D:"+ str(Flight[DroneIDIndex])+ "ETA:"+str(Flight[ETAIndex]) + * Colour = (255,0,0) + * FlightList.append(Monitor_Sprite(Coord,"EndPoint",Text,Colour)) # <<<<<<<<<<<<<< + * return FlightList + * + */ + __pyx_t_9 = __Pyx_GetModuleGlobalName(__pyx_n_s_Monitor_Sprite); if (unlikely(!__pyx_t_9)) __PYX_ERR(0, 211, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_9); + __pyx_t_7 = __pyx_convert__to_py___pyx_ctuple_long__and_long__and_long(__pyx_v_Colour); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 211, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_7); + __pyx_t_8 = NULL; + __pyx_t_10 = 0; + if (CYTHON_UNPACK_METHODS && unlikely(PyMethod_Check(__pyx_t_9))) { + __pyx_t_8 = PyMethod_GET_SELF(__pyx_t_9); + if (likely(__pyx_t_8)) { + PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_9); + __Pyx_INCREF(__pyx_t_8); + __Pyx_INCREF(function); + __Pyx_DECREF_SET(__pyx_t_9, function); + __pyx_t_10 = 1; + } + } + #if CYTHON_FAST_PYCALL + if (PyFunction_Check(__pyx_t_9)) { + PyObject *__pyx_temp[5] = {__pyx_t_8, __pyx_v_Coord, __pyx_n_s_EndPoint, __pyx_v_Text, __pyx_t_7}; + __pyx_t_3 = __Pyx_PyFunction_FastCall(__pyx_t_9, __pyx_temp+1-__pyx_t_10, 4+__pyx_t_10); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 211, __pyx_L1_error) + __Pyx_XDECREF(__pyx_t_8); __pyx_t_8 = 0; + __Pyx_GOTREF(__pyx_t_3); + __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0; + } else + #endif + #if CYTHON_FAST_PYCCALL + if (__Pyx_PyFastCFunction_Check(__pyx_t_9)) { + PyObject *__pyx_temp[5] = {__pyx_t_8, __pyx_v_Coord, __pyx_n_s_EndPoint, __pyx_v_Text, __pyx_t_7}; + __pyx_t_3 = __Pyx_PyCFunction_FastCall(__pyx_t_9, __pyx_temp+1-__pyx_t_10, 4+__pyx_t_10); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 211, __pyx_L1_error) + __Pyx_XDECREF(__pyx_t_8); __pyx_t_8 = 0; + __Pyx_GOTREF(__pyx_t_3); + __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0; + } else + #endif + { + __pyx_t_11 = PyTuple_New(4+__pyx_t_10); if (unlikely(!__pyx_t_11)) __PYX_ERR(0, 211, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_11); + if (__pyx_t_8) { + __Pyx_GIVEREF(__pyx_t_8); PyTuple_SET_ITEM(__pyx_t_11, 0, __pyx_t_8); __pyx_t_8 = NULL; + } + __Pyx_INCREF(__pyx_v_Coord); + __Pyx_GIVEREF(__pyx_v_Coord); + PyTuple_SET_ITEM(__pyx_t_11, 0+__pyx_t_10, __pyx_v_Coord); + __Pyx_INCREF(__pyx_n_s_EndPoint); + __Pyx_GIVEREF(__pyx_n_s_EndPoint); + PyTuple_SET_ITEM(__pyx_t_11, 1+__pyx_t_10, __pyx_n_s_EndPoint); + __Pyx_INCREF(__pyx_v_Text); + __Pyx_GIVEREF(__pyx_v_Text); + PyTuple_SET_ITEM(__pyx_t_11, 2+__pyx_t_10, __pyx_v_Text); + __Pyx_GIVEREF(__pyx_t_7); + PyTuple_SET_ITEM(__pyx_t_11, 3+__pyx_t_10, __pyx_t_7); + __pyx_t_7 = 0; + __pyx_t_3 = __Pyx_PyObject_Call(__pyx_t_9, __pyx_t_11, NULL); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 211, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_3); + __Pyx_DECREF(__pyx_t_11); __pyx_t_11 = 0; + } + __Pyx_DECREF(__pyx_t_9); __pyx_t_9 = 0; + __pyx_t_13 = __Pyx_PyList_Append(__pyx_v_FlightList, __pyx_t_3); if (unlikely(__pyx_t_13 == -1)) __PYX_ERR(0, 211, __pyx_L1_error) + __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; + + /* "CAStar/AATC_Monitor_Viewer.pyx":198 + * EndTimeIndex = Columns.index("EndTime") + * DistanceIndex = Columns.index("Distance") + * for Flight in RawFlightList: # <<<<<<<<<<<<<< + * #Start Sprite + * Coords = ast.literal_eval(Flight[StartCoordsIndex]) + */ + } + __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; + + /* "CAStar/AATC_Monitor_Viewer.pyx":212 + * Colour = (255,0,0) + * FlightList.append(Monitor_Sprite(Coord,"EndPoint",Text,Colour)) + * return FlightList # <<<<<<<<<<<<<< + * + * + */ + __Pyx_XDECREF(__pyx_r); + __Pyx_INCREF(__pyx_v_FlightList); + __pyx_r = __pyx_v_FlightList; + goto __pyx_L0; + + /* "CAStar/AATC_Monitor_Viewer.pyx":187 + * return DroneList + * + * def MakeFlightSprites(Message,RawFlightList): # <<<<<<<<<<<<<< + * FlightList = [] + * Columns = ast.literal_eval(Message) + */ + + /* function exit code */ + __pyx_L1_error:; + __Pyx_XDECREF(__pyx_t_1); + __Pyx_XDECREF(__pyx_t_2); + __Pyx_XDECREF(__pyx_t_3); + __Pyx_XDECREF(__pyx_t_4); + __Pyx_XDECREF(__pyx_t_7); + __Pyx_XDECREF(__pyx_t_8); + __Pyx_XDECREF(__pyx_t_9); + __Pyx_XDECREF(__pyx_t_11); + __Pyx_AddTraceback("CAStar.AATC_Monitor_Viewer.MakeFlightSprites", __pyx_clineno, __pyx_lineno, __pyx_filename); + __pyx_r = NULL; + __pyx_L0:; + __Pyx_XDECREF(__pyx_v_FlightList); + __Pyx_XDECREF(__pyx_v_Columns); + __Pyx_XDECREF(__pyx_v_FlightIDIndex); + __Pyx_XDECREF(__pyx_v_DroneIDIndex); + __Pyx_XDECREF(__pyx_v_StartCoordsIndex); + __Pyx_XDECREF(__pyx_v_EndCoordsIndex); + __Pyx_XDECREF(__pyx_v_StartTimeIndex); + __Pyx_XDECREF(__pyx_v_ETAIndex); + __Pyx_XDECREF(__pyx_v_EndTimeIndex); + __Pyx_XDECREF(__pyx_v_DistanceIndex); + __Pyx_XDECREF(__pyx_v_Flight); + __Pyx_XDECREF(__pyx_v_Coords); + __Pyx_XDECREF(__pyx_v_Coord); + __Pyx_XDECREF(__pyx_v_Text); + __Pyx_XGIVEREF(__pyx_r); + __Pyx_RefNannyFinishContext(); + return __pyx_r; +} + +/* "CAStar/AATC_Monitor_Viewer.pyx":215 + * + * + * def MakeWaypointSprites(Message,RawWaypointList): # <<<<<<<<<<<<<< + * WaypointList = [] + * Columns = ast.literal_eval(Message) + */ + +/* Python wrapper */ +static PyObject *__pyx_pw_6CAStar_19AATC_Monitor_Viewer_11MakeWaypointSprites(PyObject *__pyx_self, PyObject *__pyx_args, PyObject *__pyx_kwds); /*proto*/ +static PyMethodDef __pyx_mdef_6CAStar_19AATC_Monitor_Viewer_11MakeWaypointSprites = {"MakeWaypointSprites", (PyCFunction)__pyx_pw_6CAStar_19AATC_Monitor_Viewer_11MakeWaypointSprites, METH_VARARGS|METH_KEYWORDS, 0}; +static PyObject *__pyx_pw_6CAStar_19AATC_Monitor_Viewer_11MakeWaypointSprites(PyObject *__pyx_self, PyObject *__pyx_args, PyObject *__pyx_kwds) { + PyObject *__pyx_v_Message = 0; + PyObject *__pyx_v_RawWaypointList = 0; + PyObject *__pyx_r = 0; + __Pyx_RefNannyDeclarations + __Pyx_RefNannySetupContext("MakeWaypointSprites (wrapper)", 0); + { + static PyObject **__pyx_pyargnames[] = {&__pyx_n_s_Message,&__pyx_n_s_RawWaypointList,0}; + PyObject* values[2] = {0,0}; + if (unlikely(__pyx_kwds)) { + Py_ssize_t kw_args; + const Py_ssize_t pos_args = PyTuple_GET_SIZE(__pyx_args); + switch (pos_args) { + case 2: values[1] = PyTuple_GET_ITEM(__pyx_args, 1); + CYTHON_FALLTHROUGH; + case 1: values[0] = PyTuple_GET_ITEM(__pyx_args, 0); + CYTHON_FALLTHROUGH; + case 0: break; + default: goto __pyx_L5_argtuple_error; + } + kw_args = PyDict_Size(__pyx_kwds); + switch (pos_args) { + case 0: + if (likely((values[0] = PyDict_GetItem(__pyx_kwds, __pyx_n_s_Message)) != 0)) kw_args--; + else goto __pyx_L5_argtuple_error; + CYTHON_FALLTHROUGH; + case 1: + if (likely((values[1] = PyDict_GetItem(__pyx_kwds, __pyx_n_s_RawWaypointList)) != 0)) kw_args--; + else { + __Pyx_RaiseArgtupleInvalid("MakeWaypointSprites", 1, 2, 2, 1); __PYX_ERR(0, 215, __pyx_L3_error) + } + } + if (unlikely(kw_args > 0)) { + if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_pyargnames, 0, values, pos_args, "MakeWaypointSprites") < 0)) __PYX_ERR(0, 215, __pyx_L3_error) + } + } else if (PyTuple_GET_SIZE(__pyx_args) != 2) { + goto __pyx_L5_argtuple_error; + } else { + values[0] = PyTuple_GET_ITEM(__pyx_args, 0); + values[1] = PyTuple_GET_ITEM(__pyx_args, 1); + } + __pyx_v_Message = values[0]; + __pyx_v_RawWaypointList = values[1]; + } + goto __pyx_L4_argument_unpacking_done; + __pyx_L5_argtuple_error:; + __Pyx_RaiseArgtupleInvalid("MakeWaypointSprites", 1, 2, 2, PyTuple_GET_SIZE(__pyx_args)); __PYX_ERR(0, 215, __pyx_L3_error) + __pyx_L3_error:; + __Pyx_AddTraceback("CAStar.AATC_Monitor_Viewer.MakeWaypointSprites", __pyx_clineno, __pyx_lineno, __pyx_filename); + __Pyx_RefNannyFinishContext(); + return NULL; + __pyx_L4_argument_unpacking_done:; + __pyx_r = __pyx_pf_6CAStar_19AATC_Monitor_Viewer_10MakeWaypointSprites(__pyx_self, __pyx_v_Message, __pyx_v_RawWaypointList); + + /* function exit code */ + __Pyx_RefNannyFinishContext(); + return __pyx_r; +} + +static PyObject *__pyx_pf_6CAStar_19AATC_Monitor_Viewer_10MakeWaypointSprites(CYTHON_UNUSED PyObject *__pyx_self, PyObject *__pyx_v_Message, PyObject *__pyx_v_RawWaypointList) { + PyObject *__pyx_v_WaypointList = NULL; + PyObject *__pyx_v_Columns = NULL; + PyObject *__pyx_v_CoordIndex = NULL; + PyObject *__pyx_v_WaypointNumberIndex = NULL; + PyObject *__pyx_v_FlightIDIndex = NULL; + PyObject *__pyx_v_Waypoint = NULL; + PyObject *__pyx_v_Coords = NULL; + PyObject *__pyx_v_Coord = NULL; + PyObject *__pyx_v_Text = NULL; + __pyx_ctuple_long__and_long__and_long __pyx_v_Colour; + PyObject *__pyx_r = NULL; + __Pyx_RefNannyDeclarations + PyObject *__pyx_t_1 = NULL; + PyObject *__pyx_t_2 = NULL; + PyObject *__pyx_t_3 = NULL; + PyObject *__pyx_t_4 = NULL; + Py_ssize_t __pyx_t_5; + PyObject *(*__pyx_t_6)(PyObject *); + PyObject *__pyx_t_7 = NULL; + PyObject *__pyx_t_8 = NULL; + PyObject *__pyx_t_9 = NULL; + int __pyx_t_10; + PyObject *__pyx_t_11 = NULL; + __pyx_ctuple_long__and_long__and_long __pyx_t_12; + int __pyx_t_13; + __Pyx_RefNannySetupContext("MakeWaypointSprites", 0); + + /* "CAStar/AATC_Monitor_Viewer.pyx":216 + * + * def MakeWaypointSprites(Message,RawWaypointList): + * WaypointList = [] # <<<<<<<<<<<<<< + * Columns = ast.literal_eval(Message) + * CoordIndex = Columns.index("Coords") + */ + __pyx_t_1 = PyList_New(0); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 216, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_1); + __pyx_v_WaypointList = ((PyObject*)__pyx_t_1); + __pyx_t_1 = 0; + + /* "CAStar/AATC_Monitor_Viewer.pyx":217 + * def MakeWaypointSprites(Message,RawWaypointList): + * WaypointList = [] + * Columns = ast.literal_eval(Message) # <<<<<<<<<<<<<< + * CoordIndex = Columns.index("Coords") + * WaypointNumberIndex = Columns.index("WaypointNumber") + */ + __pyx_t_2 = __Pyx_GetModuleGlobalName(__pyx_n_s_ast); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 217, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_2); + __pyx_t_3 = __Pyx_PyObject_GetAttrStr(__pyx_t_2, __pyx_n_s_literal_eval); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 217, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_3); + __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; + __pyx_t_2 = NULL; + if (CYTHON_UNPACK_METHODS && unlikely(PyMethod_Check(__pyx_t_3))) { + __pyx_t_2 = PyMethod_GET_SELF(__pyx_t_3); + if (likely(__pyx_t_2)) { + PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_3); + __Pyx_INCREF(__pyx_t_2); + __Pyx_INCREF(function); + __Pyx_DECREF_SET(__pyx_t_3, function); + } + } + if (!__pyx_t_2) { + __pyx_t_1 = __Pyx_PyObject_CallOneArg(__pyx_t_3, __pyx_v_Message); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 217, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_1); + } else { + #if CYTHON_FAST_PYCALL + if (PyFunction_Check(__pyx_t_3)) { + PyObject *__pyx_temp[2] = {__pyx_t_2, __pyx_v_Message}; + __pyx_t_1 = __Pyx_PyFunction_FastCall(__pyx_t_3, __pyx_temp+1-1, 1+1); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 217, __pyx_L1_error) + __Pyx_XDECREF(__pyx_t_2); __pyx_t_2 = 0; + __Pyx_GOTREF(__pyx_t_1); + } else + #endif + #if CYTHON_FAST_PYCCALL + if (__Pyx_PyFastCFunction_Check(__pyx_t_3)) { + PyObject *__pyx_temp[2] = {__pyx_t_2, __pyx_v_Message}; + __pyx_t_1 = __Pyx_PyCFunction_FastCall(__pyx_t_3, __pyx_temp+1-1, 1+1); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 217, __pyx_L1_error) + __Pyx_XDECREF(__pyx_t_2); __pyx_t_2 = 0; + __Pyx_GOTREF(__pyx_t_1); + } else + #endif + { + __pyx_t_4 = PyTuple_New(1+1); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 217, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_4); + __Pyx_GIVEREF(__pyx_t_2); PyTuple_SET_ITEM(__pyx_t_4, 0, __pyx_t_2); __pyx_t_2 = NULL; + __Pyx_INCREF(__pyx_v_Message); + __Pyx_GIVEREF(__pyx_v_Message); + PyTuple_SET_ITEM(__pyx_t_4, 0+1, __pyx_v_Message); + __pyx_t_1 = __Pyx_PyObject_Call(__pyx_t_3, __pyx_t_4, NULL); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 217, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_1); + __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0; + } + } + __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; + __pyx_v_Columns = __pyx_t_1; + __pyx_t_1 = 0; + + /* "CAStar/AATC_Monitor_Viewer.pyx":218 + * WaypointList = [] + * Columns = ast.literal_eval(Message) + * CoordIndex = Columns.index("Coords") # <<<<<<<<<<<<<< + * WaypointNumberIndex = Columns.index("WaypointNumber") + * FlightIDIndex = Columns.index("FlightID") + */ + __pyx_t_1 = __Pyx_PyObject_GetAttrStr(__pyx_v_Columns, __pyx_n_s_index); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 218, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_1); + __pyx_t_3 = __Pyx_PyObject_Call(__pyx_t_1, __pyx_tuple__20, NULL); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 218, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_3); + __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; + __pyx_v_CoordIndex = __pyx_t_3; + __pyx_t_3 = 0; + + /* "CAStar/AATC_Monitor_Viewer.pyx":219 + * Columns = ast.literal_eval(Message) + * CoordIndex = Columns.index("Coords") + * WaypointNumberIndex = Columns.index("WaypointNumber") # <<<<<<<<<<<<<< + * FlightIDIndex = Columns.index("FlightID") + * for Waypoint in RawWaypointList: + */ + __pyx_t_3 = __Pyx_PyObject_GetAttrStr(__pyx_v_Columns, __pyx_n_s_index); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 219, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_3); + __pyx_t_1 = __Pyx_PyObject_Call(__pyx_t_3, __pyx_tuple__21, NULL); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 219, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_1); + __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; + __pyx_v_WaypointNumberIndex = __pyx_t_1; + __pyx_t_1 = 0; + + /* "CAStar/AATC_Monitor_Viewer.pyx":220 + * CoordIndex = Columns.index("Coords") + * WaypointNumberIndex = Columns.index("WaypointNumber") + * FlightIDIndex = Columns.index("FlightID") # <<<<<<<<<<<<<< + * for Waypoint in RawWaypointList: + * Coords = ast.literal_eval(Waypoint[CoordIndex]) + */ + __pyx_t_1 = __Pyx_PyObject_GetAttrStr(__pyx_v_Columns, __pyx_n_s_index); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 220, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_1); + __pyx_t_3 = __Pyx_PyObject_Call(__pyx_t_1, __pyx_tuple__22, NULL); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 220, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_3); + __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; + __pyx_v_FlightIDIndex = __pyx_t_3; + __pyx_t_3 = 0; + + /* "CAStar/AATC_Monitor_Viewer.pyx":221 + * WaypointNumberIndex = Columns.index("WaypointNumber") + * FlightIDIndex = Columns.index("FlightID") + * for Waypoint in RawWaypointList: # <<<<<<<<<<<<<< + * Coords = ast.literal_eval(Waypoint[CoordIndex]) + * Coord = AATC_Coordinate.Coordinate(Coords[0],Coords[1],Coords[2],0.001,0.001,0.00001) + */ + if (likely(PyList_CheckExact(__pyx_v_RawWaypointList)) || PyTuple_CheckExact(__pyx_v_RawWaypointList)) { + __pyx_t_3 = __pyx_v_RawWaypointList; __Pyx_INCREF(__pyx_t_3); __pyx_t_5 = 0; + __pyx_t_6 = NULL; + } else { + __pyx_t_5 = -1; __pyx_t_3 = PyObject_GetIter(__pyx_v_RawWaypointList); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 221, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_3); + __pyx_t_6 = Py_TYPE(__pyx_t_3)->tp_iternext; if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 221, __pyx_L1_error) + } + for (;;) { + if (likely(!__pyx_t_6)) { + if (likely(PyList_CheckExact(__pyx_t_3))) { + if (__pyx_t_5 >= PyList_GET_SIZE(__pyx_t_3)) break; + #if CYTHON_ASSUME_SAFE_MACROS && !CYTHON_AVOID_BORROWED_REFS + __pyx_t_1 = PyList_GET_ITEM(__pyx_t_3, __pyx_t_5); __Pyx_INCREF(__pyx_t_1); __pyx_t_5++; if (unlikely(0 < 0)) __PYX_ERR(0, 221, __pyx_L1_error) + #else + __pyx_t_1 = PySequence_ITEM(__pyx_t_3, __pyx_t_5); __pyx_t_5++; if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 221, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_1); + #endif + } else { + if (__pyx_t_5 >= PyTuple_GET_SIZE(__pyx_t_3)) break; + #if CYTHON_ASSUME_SAFE_MACROS && !CYTHON_AVOID_BORROWED_REFS + __pyx_t_1 = PyTuple_GET_ITEM(__pyx_t_3, __pyx_t_5); __Pyx_INCREF(__pyx_t_1); __pyx_t_5++; if (unlikely(0 < 0)) __PYX_ERR(0, 221, __pyx_L1_error) + #else + __pyx_t_1 = PySequence_ITEM(__pyx_t_3, __pyx_t_5); __pyx_t_5++; if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 221, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_1); + #endif + } + } else { + __pyx_t_1 = __pyx_t_6(__pyx_t_3); + if (unlikely(!__pyx_t_1)) { + PyObject* exc_type = PyErr_Occurred(); + if (exc_type) { + if (likely(exc_type == PyExc_StopIteration || PyErr_GivenExceptionMatches(exc_type, PyExc_StopIteration))) PyErr_Clear(); + else __PYX_ERR(0, 221, __pyx_L1_error) + } + break; + } + __Pyx_GOTREF(__pyx_t_1); + } + __Pyx_XDECREF_SET(__pyx_v_Waypoint, __pyx_t_1); + __pyx_t_1 = 0; + + /* "CAStar/AATC_Monitor_Viewer.pyx":222 + * FlightIDIndex = Columns.index("FlightID") + * for Waypoint in RawWaypointList: + * Coords = ast.literal_eval(Waypoint[CoordIndex]) # <<<<<<<<<<<<<< + * Coord = AATC_Coordinate.Coordinate(Coords[0],Coords[1],Coords[2],0.001,0.001,0.00001) + * Text = "F:"+ str(Waypoint[FlightIDIndex]) +" W:"+ str(Waypoint[WaypointNumberIndex]) + */ + __pyx_t_4 = __Pyx_GetModuleGlobalName(__pyx_n_s_ast); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 222, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_4); + __pyx_t_2 = __Pyx_PyObject_GetAttrStr(__pyx_t_4, __pyx_n_s_literal_eval); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 222, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_2); + __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0; + __pyx_t_4 = PyObject_GetItem(__pyx_v_Waypoint, __pyx_v_CoordIndex); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 222, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_4); + __pyx_t_7 = NULL; + if (CYTHON_UNPACK_METHODS && unlikely(PyMethod_Check(__pyx_t_2))) { + __pyx_t_7 = PyMethod_GET_SELF(__pyx_t_2); + if (likely(__pyx_t_7)) { + PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_2); + __Pyx_INCREF(__pyx_t_7); + __Pyx_INCREF(function); + __Pyx_DECREF_SET(__pyx_t_2, function); + } + } + if (!__pyx_t_7) { + __pyx_t_1 = __Pyx_PyObject_CallOneArg(__pyx_t_2, __pyx_t_4); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 222, __pyx_L1_error) + __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0; + __Pyx_GOTREF(__pyx_t_1); + } else { + #if CYTHON_FAST_PYCALL + if (PyFunction_Check(__pyx_t_2)) { + PyObject *__pyx_temp[2] = {__pyx_t_7, __pyx_t_4}; + __pyx_t_1 = __Pyx_PyFunction_FastCall(__pyx_t_2, __pyx_temp+1-1, 1+1); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 222, __pyx_L1_error) + __Pyx_XDECREF(__pyx_t_7); __pyx_t_7 = 0; + __Pyx_GOTREF(__pyx_t_1); + __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0; + } else + #endif + #if CYTHON_FAST_PYCCALL + if (__Pyx_PyFastCFunction_Check(__pyx_t_2)) { + PyObject *__pyx_temp[2] = {__pyx_t_7, __pyx_t_4}; + __pyx_t_1 = __Pyx_PyCFunction_FastCall(__pyx_t_2, __pyx_temp+1-1, 1+1); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 222, __pyx_L1_error) + __Pyx_XDECREF(__pyx_t_7); __pyx_t_7 = 0; + __Pyx_GOTREF(__pyx_t_1); + __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0; + } else + #endif + { + __pyx_t_8 = PyTuple_New(1+1); if (unlikely(!__pyx_t_8)) __PYX_ERR(0, 222, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_8); + __Pyx_GIVEREF(__pyx_t_7); PyTuple_SET_ITEM(__pyx_t_8, 0, __pyx_t_7); __pyx_t_7 = NULL; + __Pyx_GIVEREF(__pyx_t_4); + PyTuple_SET_ITEM(__pyx_t_8, 0+1, __pyx_t_4); + __pyx_t_4 = 0; + __pyx_t_1 = __Pyx_PyObject_Call(__pyx_t_2, __pyx_t_8, NULL); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 222, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_1); + __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0; + } + } + __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; + __Pyx_XDECREF_SET(__pyx_v_Coords, __pyx_t_1); + __pyx_t_1 = 0; + + /* "CAStar/AATC_Monitor_Viewer.pyx":223 + * for Waypoint in RawWaypointList: + * Coords = ast.literal_eval(Waypoint[CoordIndex]) + * Coord = AATC_Coordinate.Coordinate(Coords[0],Coords[1],Coords[2],0.001,0.001,0.00001) # <<<<<<<<<<<<<< + * Text = "F:"+ str(Waypoint[FlightIDIndex]) +" W:"+ str(Waypoint[WaypointNumberIndex]) + * Colour = (0,255,0) + */ + __pyx_t_2 = __Pyx_GetModuleGlobalName(__pyx_n_s_AATC_Coordinate); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 223, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_2); + __pyx_t_8 = __Pyx_PyObject_GetAttrStr(__pyx_t_2, __pyx_n_s_Coordinate); if (unlikely(!__pyx_t_8)) __PYX_ERR(0, 223, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_8); + __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; + __pyx_t_2 = __Pyx_GetItemInt(__pyx_v_Coords, 0, long, 1, __Pyx_PyInt_From_long, 0, 0, 0); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 223, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_2); + __pyx_t_4 = __Pyx_GetItemInt(__pyx_v_Coords, 1, long, 1, __Pyx_PyInt_From_long, 0, 0, 0); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 223, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_4); + __pyx_t_7 = __Pyx_GetItemInt(__pyx_v_Coords, 2, long, 1, __Pyx_PyInt_From_long, 0, 0, 0); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 223, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_7); + __pyx_t_9 = NULL; + __pyx_t_10 = 0; + if (CYTHON_UNPACK_METHODS && unlikely(PyMethod_Check(__pyx_t_8))) { + __pyx_t_9 = PyMethod_GET_SELF(__pyx_t_8); + if (likely(__pyx_t_9)) { + PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_8); + __Pyx_INCREF(__pyx_t_9); + __Pyx_INCREF(function); + __Pyx_DECREF_SET(__pyx_t_8, function); + __pyx_t_10 = 1; + } + } + #if CYTHON_FAST_PYCALL + if (PyFunction_Check(__pyx_t_8)) { + PyObject *__pyx_temp[7] = {__pyx_t_9, __pyx_t_2, __pyx_t_4, __pyx_t_7, __pyx_float_0_001, __pyx_float_0_001, __pyx_float_0_00001}; + __pyx_t_1 = __Pyx_PyFunction_FastCall(__pyx_t_8, __pyx_temp+1-__pyx_t_10, 6+__pyx_t_10); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 223, __pyx_L1_error) + __Pyx_XDECREF(__pyx_t_9); __pyx_t_9 = 0; + __Pyx_GOTREF(__pyx_t_1); + __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; + __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0; + __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0; + } else + #endif + #if CYTHON_FAST_PYCCALL + if (__Pyx_PyFastCFunction_Check(__pyx_t_8)) { + PyObject *__pyx_temp[7] = {__pyx_t_9, __pyx_t_2, __pyx_t_4, __pyx_t_7, __pyx_float_0_001, __pyx_float_0_001, __pyx_float_0_00001}; + __pyx_t_1 = __Pyx_PyCFunction_FastCall(__pyx_t_8, __pyx_temp+1-__pyx_t_10, 6+__pyx_t_10); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 223, __pyx_L1_error) + __Pyx_XDECREF(__pyx_t_9); __pyx_t_9 = 0; + __Pyx_GOTREF(__pyx_t_1); + __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; + __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0; + __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0; + } else + #endif + { + __pyx_t_11 = PyTuple_New(6+__pyx_t_10); if (unlikely(!__pyx_t_11)) __PYX_ERR(0, 223, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_11); + if (__pyx_t_9) { + __Pyx_GIVEREF(__pyx_t_9); PyTuple_SET_ITEM(__pyx_t_11, 0, __pyx_t_9); __pyx_t_9 = NULL; + } + __Pyx_GIVEREF(__pyx_t_2); + PyTuple_SET_ITEM(__pyx_t_11, 0+__pyx_t_10, __pyx_t_2); + __Pyx_GIVEREF(__pyx_t_4); + PyTuple_SET_ITEM(__pyx_t_11, 1+__pyx_t_10, __pyx_t_4); + __Pyx_GIVEREF(__pyx_t_7); + PyTuple_SET_ITEM(__pyx_t_11, 2+__pyx_t_10, __pyx_t_7); + __Pyx_INCREF(__pyx_float_0_001); + __Pyx_GIVEREF(__pyx_float_0_001); + PyTuple_SET_ITEM(__pyx_t_11, 3+__pyx_t_10, __pyx_float_0_001); + __Pyx_INCREF(__pyx_float_0_001); + __Pyx_GIVEREF(__pyx_float_0_001); + PyTuple_SET_ITEM(__pyx_t_11, 4+__pyx_t_10, __pyx_float_0_001); + __Pyx_INCREF(__pyx_float_0_00001); + __Pyx_GIVEREF(__pyx_float_0_00001); + PyTuple_SET_ITEM(__pyx_t_11, 5+__pyx_t_10, __pyx_float_0_00001); + __pyx_t_2 = 0; + __pyx_t_4 = 0; + __pyx_t_7 = 0; + __pyx_t_1 = __Pyx_PyObject_Call(__pyx_t_8, __pyx_t_11, NULL); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 223, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_1); + __Pyx_DECREF(__pyx_t_11); __pyx_t_11 = 0; + } + __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0; + __Pyx_XDECREF_SET(__pyx_v_Coord, __pyx_t_1); + __pyx_t_1 = 0; + + /* "CAStar/AATC_Monitor_Viewer.pyx":224 + * Coords = ast.literal_eval(Waypoint[CoordIndex]) + * Coord = AATC_Coordinate.Coordinate(Coords[0],Coords[1],Coords[2],0.001,0.001,0.00001) + * Text = "F:"+ str(Waypoint[FlightIDIndex]) +" W:"+ str(Waypoint[WaypointNumberIndex]) # <<<<<<<<<<<<<< + * Colour = (0,255,0) + * WaypointList.append(Monitor_Sprite(Coord,"Waypoint",Text,Colour)) + */ + __pyx_t_1 = PyObject_GetItem(__pyx_v_Waypoint, __pyx_v_FlightIDIndex); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 224, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_1); + __pyx_t_8 = PyTuple_New(1); if (unlikely(!__pyx_t_8)) __PYX_ERR(0, 224, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_8); + __Pyx_GIVEREF(__pyx_t_1); + PyTuple_SET_ITEM(__pyx_t_8, 0, __pyx_t_1); + __pyx_t_1 = 0; + __pyx_t_1 = __Pyx_PyObject_Call(((PyObject *)(&PyString_Type)), __pyx_t_8, NULL); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 224, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_1); + __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0; + __pyx_t_8 = PyNumber_Add(__pyx_kp_s_F, __pyx_t_1); if (unlikely(!__pyx_t_8)) __PYX_ERR(0, 224, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_8); + __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; + __pyx_t_1 = PyNumber_Add(__pyx_t_8, __pyx_kp_s_W); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 224, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_1); + __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0; + __pyx_t_8 = PyObject_GetItem(__pyx_v_Waypoint, __pyx_v_WaypointNumberIndex); if (unlikely(!__pyx_t_8)) __PYX_ERR(0, 224, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_8); + __pyx_t_11 = PyTuple_New(1); if (unlikely(!__pyx_t_11)) __PYX_ERR(0, 224, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_11); + __Pyx_GIVEREF(__pyx_t_8); + PyTuple_SET_ITEM(__pyx_t_11, 0, __pyx_t_8); + __pyx_t_8 = 0; + __pyx_t_8 = __Pyx_PyObject_Call(((PyObject *)(&PyString_Type)), __pyx_t_11, NULL); if (unlikely(!__pyx_t_8)) __PYX_ERR(0, 224, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_8); + __Pyx_DECREF(__pyx_t_11); __pyx_t_11 = 0; + __pyx_t_11 = PyNumber_Add(__pyx_t_1, __pyx_t_8); if (unlikely(!__pyx_t_11)) __PYX_ERR(0, 224, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_11); + __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; + __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0; + __Pyx_XDECREF_SET(__pyx_v_Text, __pyx_t_11); + __pyx_t_11 = 0; + + /* "CAStar/AATC_Monitor_Viewer.pyx":225 + * Coord = AATC_Coordinate.Coordinate(Coords[0],Coords[1],Coords[2],0.001,0.001,0.00001) + * Text = "F:"+ str(Waypoint[FlightIDIndex]) +" W:"+ str(Waypoint[WaypointNumberIndex]) + * Colour = (0,255,0) # <<<<<<<<<<<<<< + * WaypointList.append(Monitor_Sprite(Coord,"Waypoint",Text,Colour)) + * return WaypointList + */ + __pyx_t_12.f0 = 0; + __pyx_t_12.f1 = 0xFF; + __pyx_t_12.f2 = 0; + __pyx_v_Colour = __pyx_t_12; + + /* "CAStar/AATC_Monitor_Viewer.pyx":226 + * Text = "F:"+ str(Waypoint[FlightIDIndex]) +" W:"+ str(Waypoint[WaypointNumberIndex]) + * Colour = (0,255,0) + * WaypointList.append(Monitor_Sprite(Coord,"Waypoint",Text,Colour)) # <<<<<<<<<<<<<< + * return WaypointList + * + */ + __pyx_t_8 = __Pyx_GetModuleGlobalName(__pyx_n_s_Monitor_Sprite); if (unlikely(!__pyx_t_8)) __PYX_ERR(0, 226, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_8); + __pyx_t_1 = __pyx_convert__to_py___pyx_ctuple_long__and_long__and_long(__pyx_v_Colour); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 226, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_1); + __pyx_t_7 = NULL; + __pyx_t_10 = 0; + if (CYTHON_UNPACK_METHODS && unlikely(PyMethod_Check(__pyx_t_8))) { + __pyx_t_7 = PyMethod_GET_SELF(__pyx_t_8); + if (likely(__pyx_t_7)) { + PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_8); + __Pyx_INCREF(__pyx_t_7); + __Pyx_INCREF(function); + __Pyx_DECREF_SET(__pyx_t_8, function); + __pyx_t_10 = 1; + } + } + #if CYTHON_FAST_PYCALL + if (PyFunction_Check(__pyx_t_8)) { + PyObject *__pyx_temp[5] = {__pyx_t_7, __pyx_v_Coord, __pyx_n_s_Waypoint, __pyx_v_Text, __pyx_t_1}; + __pyx_t_11 = __Pyx_PyFunction_FastCall(__pyx_t_8, __pyx_temp+1-__pyx_t_10, 4+__pyx_t_10); if (unlikely(!__pyx_t_11)) __PYX_ERR(0, 226, __pyx_L1_error) + __Pyx_XDECREF(__pyx_t_7); __pyx_t_7 = 0; + __Pyx_GOTREF(__pyx_t_11); + __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; + } else + #endif + #if CYTHON_FAST_PYCCALL + if (__Pyx_PyFastCFunction_Check(__pyx_t_8)) { + PyObject *__pyx_temp[5] = {__pyx_t_7, __pyx_v_Coord, __pyx_n_s_Waypoint, __pyx_v_Text, __pyx_t_1}; + __pyx_t_11 = __Pyx_PyCFunction_FastCall(__pyx_t_8, __pyx_temp+1-__pyx_t_10, 4+__pyx_t_10); if (unlikely(!__pyx_t_11)) __PYX_ERR(0, 226, __pyx_L1_error) + __Pyx_XDECREF(__pyx_t_7); __pyx_t_7 = 0; + __Pyx_GOTREF(__pyx_t_11); + __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; + } else + #endif + { + __pyx_t_4 = PyTuple_New(4+__pyx_t_10); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 226, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_4); + if (__pyx_t_7) { + __Pyx_GIVEREF(__pyx_t_7); PyTuple_SET_ITEM(__pyx_t_4, 0, __pyx_t_7); __pyx_t_7 = NULL; + } + __Pyx_INCREF(__pyx_v_Coord); + __Pyx_GIVEREF(__pyx_v_Coord); + PyTuple_SET_ITEM(__pyx_t_4, 0+__pyx_t_10, __pyx_v_Coord); + __Pyx_INCREF(__pyx_n_s_Waypoint); + __Pyx_GIVEREF(__pyx_n_s_Waypoint); + PyTuple_SET_ITEM(__pyx_t_4, 1+__pyx_t_10, __pyx_n_s_Waypoint); + __Pyx_INCREF(__pyx_v_Text); + __Pyx_GIVEREF(__pyx_v_Text); + PyTuple_SET_ITEM(__pyx_t_4, 2+__pyx_t_10, __pyx_v_Text); + __Pyx_GIVEREF(__pyx_t_1); + PyTuple_SET_ITEM(__pyx_t_4, 3+__pyx_t_10, __pyx_t_1); + __pyx_t_1 = 0; + __pyx_t_11 = __Pyx_PyObject_Call(__pyx_t_8, __pyx_t_4, NULL); if (unlikely(!__pyx_t_11)) __PYX_ERR(0, 226, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_11); + __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0; + } + __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0; + __pyx_t_13 = __Pyx_PyList_Append(__pyx_v_WaypointList, __pyx_t_11); if (unlikely(__pyx_t_13 == -1)) __PYX_ERR(0, 226, __pyx_L1_error) + __Pyx_DECREF(__pyx_t_11); __pyx_t_11 = 0; + + /* "CAStar/AATC_Monitor_Viewer.pyx":221 + * WaypointNumberIndex = Columns.index("WaypointNumber") + * FlightIDIndex = Columns.index("FlightID") + * for Waypoint in RawWaypointList: # <<<<<<<<<<<<<< + * Coords = ast.literal_eval(Waypoint[CoordIndex]) + * Coord = AATC_Coordinate.Coordinate(Coords[0],Coords[1],Coords[2],0.001,0.001,0.00001) + */ + } + __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; + + /* "CAStar/AATC_Monitor_Viewer.pyx":227 + * Colour = (0,255,0) + * WaypointList.append(Monitor_Sprite(Coord,"Waypoint",Text,Colour)) + * return WaypointList # <<<<<<<<<<<<<< + * + * def MakeZoneSprites(Message,RawZoneList): + */ + __Pyx_XDECREF(__pyx_r); + __Pyx_INCREF(__pyx_v_WaypointList); + __pyx_r = __pyx_v_WaypointList; + goto __pyx_L0; + + /* "CAStar/AATC_Monitor_Viewer.pyx":215 + * + * + * def MakeWaypointSprites(Message,RawWaypointList): # <<<<<<<<<<<<<< + * WaypointList = [] + * Columns = ast.literal_eval(Message) + */ + + /* function exit code */ + __pyx_L1_error:; + __Pyx_XDECREF(__pyx_t_1); + __Pyx_XDECREF(__pyx_t_2); + __Pyx_XDECREF(__pyx_t_3); + __Pyx_XDECREF(__pyx_t_4); + __Pyx_XDECREF(__pyx_t_7); + __Pyx_XDECREF(__pyx_t_8); + __Pyx_XDECREF(__pyx_t_9); + __Pyx_XDECREF(__pyx_t_11); + __Pyx_AddTraceback("CAStar.AATC_Monitor_Viewer.MakeWaypointSprites", __pyx_clineno, __pyx_lineno, __pyx_filename); + __pyx_r = NULL; + __pyx_L0:; + __Pyx_XDECREF(__pyx_v_WaypointList); + __Pyx_XDECREF(__pyx_v_Columns); + __Pyx_XDECREF(__pyx_v_CoordIndex); + __Pyx_XDECREF(__pyx_v_WaypointNumberIndex); + __Pyx_XDECREF(__pyx_v_FlightIDIndex); + __Pyx_XDECREF(__pyx_v_Waypoint); + __Pyx_XDECREF(__pyx_v_Coords); + __Pyx_XDECREF(__pyx_v_Coord); + __Pyx_XDECREF(__pyx_v_Text); + __Pyx_XGIVEREF(__pyx_r); + __Pyx_RefNannyFinishContext(); + return __pyx_r; +} + +/* "CAStar/AATC_Monitor_Viewer.pyx":229 + * return WaypointList + * + * def MakeZoneSprites(Message,RawZoneList): # <<<<<<<<<<<<<< + * ZoneList = [] + * Columns = ast.literal_eval(Message) + */ + +/* Python wrapper */ +static PyObject *__pyx_pw_6CAStar_19AATC_Monitor_Viewer_13MakeZoneSprites(PyObject *__pyx_self, PyObject *__pyx_args, PyObject *__pyx_kwds); /*proto*/ +static PyMethodDef __pyx_mdef_6CAStar_19AATC_Monitor_Viewer_13MakeZoneSprites = {"MakeZoneSprites", (PyCFunction)__pyx_pw_6CAStar_19AATC_Monitor_Viewer_13MakeZoneSprites, METH_VARARGS|METH_KEYWORDS, 0}; +static PyObject *__pyx_pw_6CAStar_19AATC_Monitor_Viewer_13MakeZoneSprites(PyObject *__pyx_self, PyObject *__pyx_args, PyObject *__pyx_kwds) { + PyObject *__pyx_v_Message = 0; + PyObject *__pyx_v_RawZoneList = 0; + PyObject *__pyx_r = 0; + __Pyx_RefNannyDeclarations + __Pyx_RefNannySetupContext("MakeZoneSprites (wrapper)", 0); + { + static PyObject **__pyx_pyargnames[] = {&__pyx_n_s_Message,&__pyx_n_s_RawZoneList,0}; + PyObject* values[2] = {0,0}; + if (unlikely(__pyx_kwds)) { + Py_ssize_t kw_args; + const Py_ssize_t pos_args = PyTuple_GET_SIZE(__pyx_args); + switch (pos_args) { + case 2: values[1] = PyTuple_GET_ITEM(__pyx_args, 1); + CYTHON_FALLTHROUGH; + case 1: values[0] = PyTuple_GET_ITEM(__pyx_args, 0); + CYTHON_FALLTHROUGH; + case 0: break; + default: goto __pyx_L5_argtuple_error; + } + kw_args = PyDict_Size(__pyx_kwds); + switch (pos_args) { + case 0: + if (likely((values[0] = PyDict_GetItem(__pyx_kwds, __pyx_n_s_Message)) != 0)) kw_args--; + else goto __pyx_L5_argtuple_error; + CYTHON_FALLTHROUGH; + case 1: + if (likely((values[1] = PyDict_GetItem(__pyx_kwds, __pyx_n_s_RawZoneList)) != 0)) kw_args--; + else { + __Pyx_RaiseArgtupleInvalid("MakeZoneSprites", 1, 2, 2, 1); __PYX_ERR(0, 229, __pyx_L3_error) + } + } + if (unlikely(kw_args > 0)) { + if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_pyargnames, 0, values, pos_args, "MakeZoneSprites") < 0)) __PYX_ERR(0, 229, __pyx_L3_error) + } + } else if (PyTuple_GET_SIZE(__pyx_args) != 2) { + goto __pyx_L5_argtuple_error; + } else { + values[0] = PyTuple_GET_ITEM(__pyx_args, 0); + values[1] = PyTuple_GET_ITEM(__pyx_args, 1); + } + __pyx_v_Message = values[0]; + __pyx_v_RawZoneList = values[1]; + } + goto __pyx_L4_argument_unpacking_done; + __pyx_L5_argtuple_error:; + __Pyx_RaiseArgtupleInvalid("MakeZoneSprites", 1, 2, 2, PyTuple_GET_SIZE(__pyx_args)); __PYX_ERR(0, 229, __pyx_L3_error) + __pyx_L3_error:; + __Pyx_AddTraceback("CAStar.AATC_Monitor_Viewer.MakeZoneSprites", __pyx_clineno, __pyx_lineno, __pyx_filename); + __Pyx_RefNannyFinishContext(); + return NULL; + __pyx_L4_argument_unpacking_done:; + __pyx_r = __pyx_pf_6CAStar_19AATC_Monitor_Viewer_12MakeZoneSprites(__pyx_self, __pyx_v_Message, __pyx_v_RawZoneList); + + /* function exit code */ + __Pyx_RefNannyFinishContext(); + return __pyx_r; +} + +static PyObject *__pyx_pf_6CAStar_19AATC_Monitor_Viewer_12MakeZoneSprites(CYTHON_UNUSED PyObject *__pyx_self, PyObject *__pyx_v_Message, PyObject *__pyx_v_RawZoneList) { + PyObject *__pyx_v_ZoneList = NULL; + PyObject *__pyx_v_Columns = NULL; + PyObject *__pyx_v_StartCoordIndex = NULL; + PyObject *__pyx_v_EndCoordIndex = NULL; + PyObject *__pyx_v_LevelIndex = NULL; + PyObject *__pyx_v_ZoneIDIndex = NULL; + PyObject *__pyx_v_Zone = NULL; + PyObject *__pyx_v_StartCoords = NULL; + PyObject *__pyx_v_EndCoords = NULL; + PyObject *__pyx_v_Coord = NULL; + PyObject *__pyx_v_Text = NULL; + __pyx_ctuple_long__and_long__and_long __pyx_v_Colour; + PyObject *__pyx_r = NULL; + __Pyx_RefNannyDeclarations + PyObject *__pyx_t_1 = NULL; + PyObject *__pyx_t_2 = NULL; + PyObject *__pyx_t_3 = NULL; + PyObject *__pyx_t_4 = NULL; + Py_ssize_t __pyx_t_5; + PyObject *(*__pyx_t_6)(PyObject *); + PyObject *__pyx_t_7 = NULL; + PyObject *__pyx_t_8 = NULL; + PyObject *__pyx_t_9 = NULL; + PyObject *__pyx_t_10 = NULL; + PyObject *__pyx_t_11 = NULL; + PyObject *__pyx_t_12 = NULL; + PyObject *__pyx_t_13 = NULL; + int __pyx_t_14; + __pyx_ctuple_long__and_long__and_long __pyx_t_15; + int __pyx_t_16; + __Pyx_RefNannySetupContext("MakeZoneSprites", 0); + + /* "CAStar/AATC_Monitor_Viewer.pyx":230 + * + * def MakeZoneSprites(Message,RawZoneList): + * ZoneList = [] # <<<<<<<<<<<<<< + * Columns = ast.literal_eval(Message) + * StartCoordIndex = Columns.index("StartCoord") + */ + __pyx_t_1 = PyList_New(0); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 230, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_1); + __pyx_v_ZoneList = ((PyObject*)__pyx_t_1); + __pyx_t_1 = 0; + + /* "CAStar/AATC_Monitor_Viewer.pyx":231 + * def MakeZoneSprites(Message,RawZoneList): + * ZoneList = [] + * Columns = ast.literal_eval(Message) # <<<<<<<<<<<<<< + * StartCoordIndex = Columns.index("StartCoord") + * EndCoordIndex = Columns.index("EndCoord") + */ + __pyx_t_2 = __Pyx_GetModuleGlobalName(__pyx_n_s_ast); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 231, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_2); + __pyx_t_3 = __Pyx_PyObject_GetAttrStr(__pyx_t_2, __pyx_n_s_literal_eval); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 231, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_3); + __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; + __pyx_t_2 = NULL; + if (CYTHON_UNPACK_METHODS && unlikely(PyMethod_Check(__pyx_t_3))) { + __pyx_t_2 = PyMethod_GET_SELF(__pyx_t_3); + if (likely(__pyx_t_2)) { + PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_3); + __Pyx_INCREF(__pyx_t_2); + __Pyx_INCREF(function); + __Pyx_DECREF_SET(__pyx_t_3, function); + } + } + if (!__pyx_t_2) { + __pyx_t_1 = __Pyx_PyObject_CallOneArg(__pyx_t_3, __pyx_v_Message); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 231, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_1); + } else { + #if CYTHON_FAST_PYCALL + if (PyFunction_Check(__pyx_t_3)) { + PyObject *__pyx_temp[2] = {__pyx_t_2, __pyx_v_Message}; + __pyx_t_1 = __Pyx_PyFunction_FastCall(__pyx_t_3, __pyx_temp+1-1, 1+1); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 231, __pyx_L1_error) + __Pyx_XDECREF(__pyx_t_2); __pyx_t_2 = 0; + __Pyx_GOTREF(__pyx_t_1); + } else + #endif + #if CYTHON_FAST_PYCCALL + if (__Pyx_PyFastCFunction_Check(__pyx_t_3)) { + PyObject *__pyx_temp[2] = {__pyx_t_2, __pyx_v_Message}; + __pyx_t_1 = __Pyx_PyCFunction_FastCall(__pyx_t_3, __pyx_temp+1-1, 1+1); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 231, __pyx_L1_error) + __Pyx_XDECREF(__pyx_t_2); __pyx_t_2 = 0; + __Pyx_GOTREF(__pyx_t_1); + } else + #endif + { + __pyx_t_4 = PyTuple_New(1+1); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 231, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_4); + __Pyx_GIVEREF(__pyx_t_2); PyTuple_SET_ITEM(__pyx_t_4, 0, __pyx_t_2); __pyx_t_2 = NULL; + __Pyx_INCREF(__pyx_v_Message); + __Pyx_GIVEREF(__pyx_v_Message); + PyTuple_SET_ITEM(__pyx_t_4, 0+1, __pyx_v_Message); + __pyx_t_1 = __Pyx_PyObject_Call(__pyx_t_3, __pyx_t_4, NULL); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 231, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_1); + __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0; + } + } + __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; + __pyx_v_Columns = __pyx_t_1; + __pyx_t_1 = 0; + + /* "CAStar/AATC_Monitor_Viewer.pyx":232 + * ZoneList = [] + * Columns = ast.literal_eval(Message) + * StartCoordIndex = Columns.index("StartCoord") # <<<<<<<<<<<<<< + * EndCoordIndex = Columns.index("EndCoord") + * LevelIndex = Columns.index("Level") + */ + __pyx_t_1 = __Pyx_PyObject_GetAttrStr(__pyx_v_Columns, __pyx_n_s_index); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 232, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_1); + __pyx_t_3 = __Pyx_PyObject_Call(__pyx_t_1, __pyx_tuple__23, NULL); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 232, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_3); + __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; + __pyx_v_StartCoordIndex = __pyx_t_3; + __pyx_t_3 = 0; + + /* "CAStar/AATC_Monitor_Viewer.pyx":233 + * Columns = ast.literal_eval(Message) + * StartCoordIndex = Columns.index("StartCoord") + * EndCoordIndex = Columns.index("EndCoord") # <<<<<<<<<<<<<< + * LevelIndex = Columns.index("Level") + * ZoneIDIndex = Columns.index("ZoneID") + */ + __pyx_t_3 = __Pyx_PyObject_GetAttrStr(__pyx_v_Columns, __pyx_n_s_index); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 233, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_3); + __pyx_t_1 = __Pyx_PyObject_Call(__pyx_t_3, __pyx_tuple__24, NULL); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 233, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_1); + __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; + __pyx_v_EndCoordIndex = __pyx_t_1; + __pyx_t_1 = 0; + + /* "CAStar/AATC_Monitor_Viewer.pyx":234 + * StartCoordIndex = Columns.index("StartCoord") + * EndCoordIndex = Columns.index("EndCoord") + * LevelIndex = Columns.index("Level") # <<<<<<<<<<<<<< + * ZoneIDIndex = Columns.index("ZoneID") + * for Zone in RawZoneList: + */ + __pyx_t_1 = __Pyx_PyObject_GetAttrStr(__pyx_v_Columns, __pyx_n_s_index); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 234, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_1); + __pyx_t_3 = __Pyx_PyObject_Call(__pyx_t_1, __pyx_tuple__25, NULL); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 234, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_3); + __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; + __pyx_v_LevelIndex = __pyx_t_3; + __pyx_t_3 = 0; + + /* "CAStar/AATC_Monitor_Viewer.pyx":235 + * EndCoordIndex = Columns.index("EndCoord") + * LevelIndex = Columns.index("Level") + * ZoneIDIndex = Columns.index("ZoneID") # <<<<<<<<<<<<<< + * for Zone in RawZoneList: + * StartCoords = ast.literal_eval(Zone[StartCoordIndex]) + */ + __pyx_t_3 = __Pyx_PyObject_GetAttrStr(__pyx_v_Columns, __pyx_n_s_index); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 235, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_3); + __pyx_t_1 = __Pyx_PyObject_Call(__pyx_t_3, __pyx_tuple__26, NULL); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 235, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_1); + __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; + __pyx_v_ZoneIDIndex = __pyx_t_1; + __pyx_t_1 = 0; + + /* "CAStar/AATC_Monitor_Viewer.pyx":236 + * LevelIndex = Columns.index("Level") + * ZoneIDIndex = Columns.index("ZoneID") + * for Zone in RawZoneList: # <<<<<<<<<<<<<< + * StartCoords = ast.literal_eval(Zone[StartCoordIndex]) + * EndCoords = ast.literal_eval(Zone[EndCoordIndex]) + */ + if (likely(PyList_CheckExact(__pyx_v_RawZoneList)) || PyTuple_CheckExact(__pyx_v_RawZoneList)) { + __pyx_t_1 = __pyx_v_RawZoneList; __Pyx_INCREF(__pyx_t_1); __pyx_t_5 = 0; + __pyx_t_6 = NULL; + } else { + __pyx_t_5 = -1; __pyx_t_1 = PyObject_GetIter(__pyx_v_RawZoneList); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 236, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_1); + __pyx_t_6 = Py_TYPE(__pyx_t_1)->tp_iternext; if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 236, __pyx_L1_error) + } + for (;;) { + if (likely(!__pyx_t_6)) { + if (likely(PyList_CheckExact(__pyx_t_1))) { + if (__pyx_t_5 >= PyList_GET_SIZE(__pyx_t_1)) break; + #if CYTHON_ASSUME_SAFE_MACROS && !CYTHON_AVOID_BORROWED_REFS + __pyx_t_3 = PyList_GET_ITEM(__pyx_t_1, __pyx_t_5); __Pyx_INCREF(__pyx_t_3); __pyx_t_5++; if (unlikely(0 < 0)) __PYX_ERR(0, 236, __pyx_L1_error) + #else + __pyx_t_3 = PySequence_ITEM(__pyx_t_1, __pyx_t_5); __pyx_t_5++; if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 236, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_3); + #endif + } else { + if (__pyx_t_5 >= PyTuple_GET_SIZE(__pyx_t_1)) break; + #if CYTHON_ASSUME_SAFE_MACROS && !CYTHON_AVOID_BORROWED_REFS + __pyx_t_3 = PyTuple_GET_ITEM(__pyx_t_1, __pyx_t_5); __Pyx_INCREF(__pyx_t_3); __pyx_t_5++; if (unlikely(0 < 0)) __PYX_ERR(0, 236, __pyx_L1_error) + #else + __pyx_t_3 = PySequence_ITEM(__pyx_t_1, __pyx_t_5); __pyx_t_5++; if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 236, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_3); + #endif + } + } else { + __pyx_t_3 = __pyx_t_6(__pyx_t_1); + if (unlikely(!__pyx_t_3)) { + PyObject* exc_type = PyErr_Occurred(); + if (exc_type) { + if (likely(exc_type == PyExc_StopIteration || PyErr_GivenExceptionMatches(exc_type, PyExc_StopIteration))) PyErr_Clear(); + else __PYX_ERR(0, 236, __pyx_L1_error) + } + break; + } + __Pyx_GOTREF(__pyx_t_3); + } + __Pyx_XDECREF_SET(__pyx_v_Zone, __pyx_t_3); + __pyx_t_3 = 0; + + /* "CAStar/AATC_Monitor_Viewer.pyx":237 + * ZoneIDIndex = Columns.index("ZoneID") + * for Zone in RawZoneList: + * StartCoords = ast.literal_eval(Zone[StartCoordIndex]) # <<<<<<<<<<<<<< + * EndCoords = ast.literal_eval(Zone[EndCoordIndex]) + * Coord = AATC_Coordinate.Coordinate(StartCoords[0],StartCoords[1],StartCoords[2],EndCoords[0]-StartCoords[0],EndCoords[1]-StartCoords[1],EndCoords[2]-StartCoords[2]) + */ + __pyx_t_4 = __Pyx_GetModuleGlobalName(__pyx_n_s_ast); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 237, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_4); + __pyx_t_2 = __Pyx_PyObject_GetAttrStr(__pyx_t_4, __pyx_n_s_literal_eval); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 237, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_2); + __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0; + __pyx_t_4 = PyObject_GetItem(__pyx_v_Zone, __pyx_v_StartCoordIndex); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 237, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_4); + __pyx_t_7 = NULL; + if (CYTHON_UNPACK_METHODS && unlikely(PyMethod_Check(__pyx_t_2))) { + __pyx_t_7 = PyMethod_GET_SELF(__pyx_t_2); + if (likely(__pyx_t_7)) { + PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_2); + __Pyx_INCREF(__pyx_t_7); + __Pyx_INCREF(function); + __Pyx_DECREF_SET(__pyx_t_2, function); + } + } + if (!__pyx_t_7) { + __pyx_t_3 = __Pyx_PyObject_CallOneArg(__pyx_t_2, __pyx_t_4); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 237, __pyx_L1_error) + __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0; + __Pyx_GOTREF(__pyx_t_3); + } else { + #if CYTHON_FAST_PYCALL + if (PyFunction_Check(__pyx_t_2)) { + PyObject *__pyx_temp[2] = {__pyx_t_7, __pyx_t_4}; + __pyx_t_3 = __Pyx_PyFunction_FastCall(__pyx_t_2, __pyx_temp+1-1, 1+1); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 237, __pyx_L1_error) + __Pyx_XDECREF(__pyx_t_7); __pyx_t_7 = 0; + __Pyx_GOTREF(__pyx_t_3); + __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0; + } else + #endif + #if CYTHON_FAST_PYCCALL + if (__Pyx_PyFastCFunction_Check(__pyx_t_2)) { + PyObject *__pyx_temp[2] = {__pyx_t_7, __pyx_t_4}; + __pyx_t_3 = __Pyx_PyCFunction_FastCall(__pyx_t_2, __pyx_temp+1-1, 1+1); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 237, __pyx_L1_error) + __Pyx_XDECREF(__pyx_t_7); __pyx_t_7 = 0; + __Pyx_GOTREF(__pyx_t_3); + __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0; + } else + #endif + { + __pyx_t_8 = PyTuple_New(1+1); if (unlikely(!__pyx_t_8)) __PYX_ERR(0, 237, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_8); + __Pyx_GIVEREF(__pyx_t_7); PyTuple_SET_ITEM(__pyx_t_8, 0, __pyx_t_7); __pyx_t_7 = NULL; + __Pyx_GIVEREF(__pyx_t_4); + PyTuple_SET_ITEM(__pyx_t_8, 0+1, __pyx_t_4); + __pyx_t_4 = 0; + __pyx_t_3 = __Pyx_PyObject_Call(__pyx_t_2, __pyx_t_8, NULL); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 237, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_3); + __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0; + } + } + __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; + __Pyx_XDECREF_SET(__pyx_v_StartCoords, __pyx_t_3); + __pyx_t_3 = 0; + + /* "CAStar/AATC_Monitor_Viewer.pyx":238 + * for Zone in RawZoneList: + * StartCoords = ast.literal_eval(Zone[StartCoordIndex]) + * EndCoords = ast.literal_eval(Zone[EndCoordIndex]) # <<<<<<<<<<<<<< + * Coord = AATC_Coordinate.Coordinate(StartCoords[0],StartCoords[1],StartCoords[2],EndCoords[0]-StartCoords[0],EndCoords[1]-StartCoords[1],EndCoords[2]-StartCoords[2]) + * Text = "Z:"+ str(Zone[ZoneIDIndex]) +" L:"+ str(Zone[LevelIndex]) + */ + __pyx_t_2 = __Pyx_GetModuleGlobalName(__pyx_n_s_ast); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 238, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_2); + __pyx_t_8 = __Pyx_PyObject_GetAttrStr(__pyx_t_2, __pyx_n_s_literal_eval); if (unlikely(!__pyx_t_8)) __PYX_ERR(0, 238, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_8); + __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; + __pyx_t_2 = PyObject_GetItem(__pyx_v_Zone, __pyx_v_EndCoordIndex); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 238, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_2); + __pyx_t_4 = NULL; + if (CYTHON_UNPACK_METHODS && unlikely(PyMethod_Check(__pyx_t_8))) { + __pyx_t_4 = PyMethod_GET_SELF(__pyx_t_8); + if (likely(__pyx_t_4)) { + PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_8); + __Pyx_INCREF(__pyx_t_4); + __Pyx_INCREF(function); + __Pyx_DECREF_SET(__pyx_t_8, function); + } + } + if (!__pyx_t_4) { + __pyx_t_3 = __Pyx_PyObject_CallOneArg(__pyx_t_8, __pyx_t_2); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 238, __pyx_L1_error) + __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; + __Pyx_GOTREF(__pyx_t_3); + } else { + #if CYTHON_FAST_PYCALL + if (PyFunction_Check(__pyx_t_8)) { + PyObject *__pyx_temp[2] = {__pyx_t_4, __pyx_t_2}; + __pyx_t_3 = __Pyx_PyFunction_FastCall(__pyx_t_8, __pyx_temp+1-1, 1+1); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 238, __pyx_L1_error) + __Pyx_XDECREF(__pyx_t_4); __pyx_t_4 = 0; + __Pyx_GOTREF(__pyx_t_3); + __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; + } else + #endif + #if CYTHON_FAST_PYCCALL + if (__Pyx_PyFastCFunction_Check(__pyx_t_8)) { + PyObject *__pyx_temp[2] = {__pyx_t_4, __pyx_t_2}; + __pyx_t_3 = __Pyx_PyCFunction_FastCall(__pyx_t_8, __pyx_temp+1-1, 1+1); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 238, __pyx_L1_error) + __Pyx_XDECREF(__pyx_t_4); __pyx_t_4 = 0; + __Pyx_GOTREF(__pyx_t_3); + __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; + } else + #endif + { + __pyx_t_7 = PyTuple_New(1+1); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 238, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_7); + __Pyx_GIVEREF(__pyx_t_4); PyTuple_SET_ITEM(__pyx_t_7, 0, __pyx_t_4); __pyx_t_4 = NULL; + __Pyx_GIVEREF(__pyx_t_2); + PyTuple_SET_ITEM(__pyx_t_7, 0+1, __pyx_t_2); + __pyx_t_2 = 0; + __pyx_t_3 = __Pyx_PyObject_Call(__pyx_t_8, __pyx_t_7, NULL); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 238, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_3); + __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0; + } + } + __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0; + __Pyx_XDECREF_SET(__pyx_v_EndCoords, __pyx_t_3); + __pyx_t_3 = 0; + + /* "CAStar/AATC_Monitor_Viewer.pyx":239 + * StartCoords = ast.literal_eval(Zone[StartCoordIndex]) + * EndCoords = ast.literal_eval(Zone[EndCoordIndex]) + * Coord = AATC_Coordinate.Coordinate(StartCoords[0],StartCoords[1],StartCoords[2],EndCoords[0]-StartCoords[0],EndCoords[1]-StartCoords[1],EndCoords[2]-StartCoords[2]) # <<<<<<<<<<<<<< + * Text = "Z:"+ str(Zone[ZoneIDIndex]) +" L:"+ str(Zone[LevelIndex]) + * Colour = (100,100,100) + */ + __pyx_t_8 = __Pyx_GetModuleGlobalName(__pyx_n_s_AATC_Coordinate); if (unlikely(!__pyx_t_8)) __PYX_ERR(0, 239, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_8); + __pyx_t_7 = __Pyx_PyObject_GetAttrStr(__pyx_t_8, __pyx_n_s_Coordinate); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 239, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_7); + __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0; + __pyx_t_8 = __Pyx_GetItemInt(__pyx_v_StartCoords, 0, long, 1, __Pyx_PyInt_From_long, 0, 0, 0); if (unlikely(!__pyx_t_8)) __PYX_ERR(0, 239, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_8); + __pyx_t_2 = __Pyx_GetItemInt(__pyx_v_StartCoords, 1, long, 1, __Pyx_PyInt_From_long, 0, 0, 0); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 239, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_2); + __pyx_t_4 = __Pyx_GetItemInt(__pyx_v_StartCoords, 2, long, 1, __Pyx_PyInt_From_long, 0, 0, 0); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 239, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_4); + __pyx_t_9 = __Pyx_GetItemInt(__pyx_v_EndCoords, 0, long, 1, __Pyx_PyInt_From_long, 0, 0, 0); if (unlikely(!__pyx_t_9)) __PYX_ERR(0, 239, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_9); + __pyx_t_10 = __Pyx_GetItemInt(__pyx_v_StartCoords, 0, long, 1, __Pyx_PyInt_From_long, 0, 0, 0); if (unlikely(!__pyx_t_10)) __PYX_ERR(0, 239, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_10); + __pyx_t_11 = PyNumber_Subtract(__pyx_t_9, __pyx_t_10); if (unlikely(!__pyx_t_11)) __PYX_ERR(0, 239, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_11); + __Pyx_DECREF(__pyx_t_9); __pyx_t_9 = 0; + __Pyx_DECREF(__pyx_t_10); __pyx_t_10 = 0; + __pyx_t_10 = __Pyx_GetItemInt(__pyx_v_EndCoords, 1, long, 1, __Pyx_PyInt_From_long, 0, 0, 0); if (unlikely(!__pyx_t_10)) __PYX_ERR(0, 239, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_10); + __pyx_t_9 = __Pyx_GetItemInt(__pyx_v_StartCoords, 1, long, 1, __Pyx_PyInt_From_long, 0, 0, 0); if (unlikely(!__pyx_t_9)) __PYX_ERR(0, 239, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_9); + __pyx_t_12 = PyNumber_Subtract(__pyx_t_10, __pyx_t_9); if (unlikely(!__pyx_t_12)) __PYX_ERR(0, 239, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_12); + __Pyx_DECREF(__pyx_t_10); __pyx_t_10 = 0; + __Pyx_DECREF(__pyx_t_9); __pyx_t_9 = 0; + __pyx_t_9 = __Pyx_GetItemInt(__pyx_v_EndCoords, 2, long, 1, __Pyx_PyInt_From_long, 0, 0, 0); if (unlikely(!__pyx_t_9)) __PYX_ERR(0, 239, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_9); + __pyx_t_10 = __Pyx_GetItemInt(__pyx_v_StartCoords, 2, long, 1, __Pyx_PyInt_From_long, 0, 0, 0); if (unlikely(!__pyx_t_10)) __PYX_ERR(0, 239, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_10); + __pyx_t_13 = PyNumber_Subtract(__pyx_t_9, __pyx_t_10); if (unlikely(!__pyx_t_13)) __PYX_ERR(0, 239, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_13); + __Pyx_DECREF(__pyx_t_9); __pyx_t_9 = 0; + __Pyx_DECREF(__pyx_t_10); __pyx_t_10 = 0; + __pyx_t_10 = NULL; + __pyx_t_14 = 0; + if (CYTHON_UNPACK_METHODS && unlikely(PyMethod_Check(__pyx_t_7))) { + __pyx_t_10 = PyMethod_GET_SELF(__pyx_t_7); + if (likely(__pyx_t_10)) { + PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_7); + __Pyx_INCREF(__pyx_t_10); + __Pyx_INCREF(function); + __Pyx_DECREF_SET(__pyx_t_7, function); + __pyx_t_14 = 1; + } + } + #if CYTHON_FAST_PYCALL + if (PyFunction_Check(__pyx_t_7)) { + PyObject *__pyx_temp[7] = {__pyx_t_10, __pyx_t_8, __pyx_t_2, __pyx_t_4, __pyx_t_11, __pyx_t_12, __pyx_t_13}; + __pyx_t_3 = __Pyx_PyFunction_FastCall(__pyx_t_7, __pyx_temp+1-__pyx_t_14, 6+__pyx_t_14); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 239, __pyx_L1_error) + __Pyx_XDECREF(__pyx_t_10); __pyx_t_10 = 0; + __Pyx_GOTREF(__pyx_t_3); + __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0; + __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; + __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0; + __Pyx_DECREF(__pyx_t_11); __pyx_t_11 = 0; + __Pyx_DECREF(__pyx_t_12); __pyx_t_12 = 0; + __Pyx_DECREF(__pyx_t_13); __pyx_t_13 = 0; + } else + #endif + #if CYTHON_FAST_PYCCALL + if (__Pyx_PyFastCFunction_Check(__pyx_t_7)) { + PyObject *__pyx_temp[7] = {__pyx_t_10, __pyx_t_8, __pyx_t_2, __pyx_t_4, __pyx_t_11, __pyx_t_12, __pyx_t_13}; + __pyx_t_3 = __Pyx_PyCFunction_FastCall(__pyx_t_7, __pyx_temp+1-__pyx_t_14, 6+__pyx_t_14); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 239, __pyx_L1_error) + __Pyx_XDECREF(__pyx_t_10); __pyx_t_10 = 0; + __Pyx_GOTREF(__pyx_t_3); + __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0; + __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; + __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0; + __Pyx_DECREF(__pyx_t_11); __pyx_t_11 = 0; + __Pyx_DECREF(__pyx_t_12); __pyx_t_12 = 0; + __Pyx_DECREF(__pyx_t_13); __pyx_t_13 = 0; + } else + #endif + { + __pyx_t_9 = PyTuple_New(6+__pyx_t_14); if (unlikely(!__pyx_t_9)) __PYX_ERR(0, 239, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_9); + if (__pyx_t_10) { + __Pyx_GIVEREF(__pyx_t_10); PyTuple_SET_ITEM(__pyx_t_9, 0, __pyx_t_10); __pyx_t_10 = NULL; + } + __Pyx_GIVEREF(__pyx_t_8); + PyTuple_SET_ITEM(__pyx_t_9, 0+__pyx_t_14, __pyx_t_8); + __Pyx_GIVEREF(__pyx_t_2); + PyTuple_SET_ITEM(__pyx_t_9, 1+__pyx_t_14, __pyx_t_2); + __Pyx_GIVEREF(__pyx_t_4); + PyTuple_SET_ITEM(__pyx_t_9, 2+__pyx_t_14, __pyx_t_4); + __Pyx_GIVEREF(__pyx_t_11); + PyTuple_SET_ITEM(__pyx_t_9, 3+__pyx_t_14, __pyx_t_11); + __Pyx_GIVEREF(__pyx_t_12); + PyTuple_SET_ITEM(__pyx_t_9, 4+__pyx_t_14, __pyx_t_12); + __Pyx_GIVEREF(__pyx_t_13); + PyTuple_SET_ITEM(__pyx_t_9, 5+__pyx_t_14, __pyx_t_13); + __pyx_t_8 = 0; + __pyx_t_2 = 0; + __pyx_t_4 = 0; + __pyx_t_11 = 0; + __pyx_t_12 = 0; + __pyx_t_13 = 0; + __pyx_t_3 = __Pyx_PyObject_Call(__pyx_t_7, __pyx_t_9, NULL); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 239, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_3); + __Pyx_DECREF(__pyx_t_9); __pyx_t_9 = 0; + } + __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0; + __Pyx_XDECREF_SET(__pyx_v_Coord, __pyx_t_3); + __pyx_t_3 = 0; + + /* "CAStar/AATC_Monitor_Viewer.pyx":240 + * EndCoords = ast.literal_eval(Zone[EndCoordIndex]) + * Coord = AATC_Coordinate.Coordinate(StartCoords[0],StartCoords[1],StartCoords[2],EndCoords[0]-StartCoords[0],EndCoords[1]-StartCoords[1],EndCoords[2]-StartCoords[2]) + * Text = "Z:"+ str(Zone[ZoneIDIndex]) +" L:"+ str(Zone[LevelIndex]) # <<<<<<<<<<<<<< + * Colour = (100,100,100) + * ZoneList.append(Monitor_Sprite(Coord,"NoFlyZone",Text,Colour)) + */ + __pyx_t_3 = PyObject_GetItem(__pyx_v_Zone, __pyx_v_ZoneIDIndex); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 240, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_3); + __pyx_t_7 = PyTuple_New(1); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 240, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_7); + __Pyx_GIVEREF(__pyx_t_3); + PyTuple_SET_ITEM(__pyx_t_7, 0, __pyx_t_3); + __pyx_t_3 = 0; + __pyx_t_3 = __Pyx_PyObject_Call(((PyObject *)(&PyString_Type)), __pyx_t_7, NULL); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 240, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_3); + __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0; + __pyx_t_7 = PyNumber_Add(__pyx_kp_s_Z, __pyx_t_3); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 240, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_7); + __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; + __pyx_t_3 = PyNumber_Add(__pyx_t_7, __pyx_kp_s_L); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 240, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_3); + __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0; + __pyx_t_7 = PyObject_GetItem(__pyx_v_Zone, __pyx_v_LevelIndex); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 240, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_7); + __pyx_t_9 = PyTuple_New(1); if (unlikely(!__pyx_t_9)) __PYX_ERR(0, 240, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_9); + __Pyx_GIVEREF(__pyx_t_7); + PyTuple_SET_ITEM(__pyx_t_9, 0, __pyx_t_7); + __pyx_t_7 = 0; + __pyx_t_7 = __Pyx_PyObject_Call(((PyObject *)(&PyString_Type)), __pyx_t_9, NULL); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 240, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_7); + __Pyx_DECREF(__pyx_t_9); __pyx_t_9 = 0; + __pyx_t_9 = PyNumber_Add(__pyx_t_3, __pyx_t_7); if (unlikely(!__pyx_t_9)) __PYX_ERR(0, 240, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_9); + __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; + __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0; + __Pyx_XDECREF_SET(__pyx_v_Text, __pyx_t_9); + __pyx_t_9 = 0; + + /* "CAStar/AATC_Monitor_Viewer.pyx":241 + * Coord = AATC_Coordinate.Coordinate(StartCoords[0],StartCoords[1],StartCoords[2],EndCoords[0]-StartCoords[0],EndCoords[1]-StartCoords[1],EndCoords[2]-StartCoords[2]) + * Text = "Z:"+ str(Zone[ZoneIDIndex]) +" L:"+ str(Zone[LevelIndex]) + * Colour = (100,100,100) # <<<<<<<<<<<<<< + * ZoneList.append(Monitor_Sprite(Coord,"NoFlyZone",Text,Colour)) + * return ZoneList + */ + __pyx_t_15.f0 = 0x64; + __pyx_t_15.f1 = 0x64; + __pyx_t_15.f2 = 0x64; + __pyx_v_Colour = __pyx_t_15; + + /* "CAStar/AATC_Monitor_Viewer.pyx":242 + * Text = "Z:"+ str(Zone[ZoneIDIndex]) +" L:"+ str(Zone[LevelIndex]) + * Colour = (100,100,100) + * ZoneList.append(Monitor_Sprite(Coord,"NoFlyZone",Text,Colour)) # <<<<<<<<<<<<<< + * return ZoneList + * + */ + __pyx_t_7 = __Pyx_GetModuleGlobalName(__pyx_n_s_Monitor_Sprite); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 242, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_7); + __pyx_t_3 = __pyx_convert__to_py___pyx_ctuple_long__and_long__and_long(__pyx_v_Colour); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 242, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_3); + __pyx_t_13 = NULL; + __pyx_t_14 = 0; + if (CYTHON_UNPACK_METHODS && unlikely(PyMethod_Check(__pyx_t_7))) { + __pyx_t_13 = PyMethod_GET_SELF(__pyx_t_7); + if (likely(__pyx_t_13)) { + PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_7); + __Pyx_INCREF(__pyx_t_13); + __Pyx_INCREF(function); + __Pyx_DECREF_SET(__pyx_t_7, function); + __pyx_t_14 = 1; + } + } + #if CYTHON_FAST_PYCALL + if (PyFunction_Check(__pyx_t_7)) { + PyObject *__pyx_temp[5] = {__pyx_t_13, __pyx_v_Coord, __pyx_n_s_NoFlyZone, __pyx_v_Text, __pyx_t_3}; + __pyx_t_9 = __Pyx_PyFunction_FastCall(__pyx_t_7, __pyx_temp+1-__pyx_t_14, 4+__pyx_t_14); if (unlikely(!__pyx_t_9)) __PYX_ERR(0, 242, __pyx_L1_error) + __Pyx_XDECREF(__pyx_t_13); __pyx_t_13 = 0; + __Pyx_GOTREF(__pyx_t_9); + __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; + } else + #endif + #if CYTHON_FAST_PYCCALL + if (__Pyx_PyFastCFunction_Check(__pyx_t_7)) { + PyObject *__pyx_temp[5] = {__pyx_t_13, __pyx_v_Coord, __pyx_n_s_NoFlyZone, __pyx_v_Text, __pyx_t_3}; + __pyx_t_9 = __Pyx_PyCFunction_FastCall(__pyx_t_7, __pyx_temp+1-__pyx_t_14, 4+__pyx_t_14); if (unlikely(!__pyx_t_9)) __PYX_ERR(0, 242, __pyx_L1_error) + __Pyx_XDECREF(__pyx_t_13); __pyx_t_13 = 0; + __Pyx_GOTREF(__pyx_t_9); + __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; + } else + #endif + { + __pyx_t_12 = PyTuple_New(4+__pyx_t_14); if (unlikely(!__pyx_t_12)) __PYX_ERR(0, 242, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_12); + if (__pyx_t_13) { + __Pyx_GIVEREF(__pyx_t_13); PyTuple_SET_ITEM(__pyx_t_12, 0, __pyx_t_13); __pyx_t_13 = NULL; + } + __Pyx_INCREF(__pyx_v_Coord); + __Pyx_GIVEREF(__pyx_v_Coord); + PyTuple_SET_ITEM(__pyx_t_12, 0+__pyx_t_14, __pyx_v_Coord); + __Pyx_INCREF(__pyx_n_s_NoFlyZone); + __Pyx_GIVEREF(__pyx_n_s_NoFlyZone); + PyTuple_SET_ITEM(__pyx_t_12, 1+__pyx_t_14, __pyx_n_s_NoFlyZone); + __Pyx_INCREF(__pyx_v_Text); + __Pyx_GIVEREF(__pyx_v_Text); + PyTuple_SET_ITEM(__pyx_t_12, 2+__pyx_t_14, __pyx_v_Text); + __Pyx_GIVEREF(__pyx_t_3); + PyTuple_SET_ITEM(__pyx_t_12, 3+__pyx_t_14, __pyx_t_3); + __pyx_t_3 = 0; + __pyx_t_9 = __Pyx_PyObject_Call(__pyx_t_7, __pyx_t_12, NULL); if (unlikely(!__pyx_t_9)) __PYX_ERR(0, 242, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_9); + __Pyx_DECREF(__pyx_t_12); __pyx_t_12 = 0; + } + __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0; + __pyx_t_16 = __Pyx_PyList_Append(__pyx_v_ZoneList, __pyx_t_9); if (unlikely(__pyx_t_16 == -1)) __PYX_ERR(0, 242, __pyx_L1_error) + __Pyx_DECREF(__pyx_t_9); __pyx_t_9 = 0; + + /* "CAStar/AATC_Monitor_Viewer.pyx":236 + * LevelIndex = Columns.index("Level") + * ZoneIDIndex = Columns.index("ZoneID") + * for Zone in RawZoneList: # <<<<<<<<<<<<<< + * StartCoords = ast.literal_eval(Zone[StartCoordIndex]) + * EndCoords = ast.literal_eval(Zone[EndCoordIndex]) + */ + } + __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; + + /* "CAStar/AATC_Monitor_Viewer.pyx":243 + * Colour = (100,100,100) + * ZoneList.append(Monitor_Sprite(Coord,"NoFlyZone",Text,Colour)) + * return ZoneList # <<<<<<<<<<<<<< + * + * def MakeSprites(M): + */ + __Pyx_XDECREF(__pyx_r); + __Pyx_INCREF(__pyx_v_ZoneList); + __pyx_r = __pyx_v_ZoneList; + goto __pyx_L0; + + /* "CAStar/AATC_Monitor_Viewer.pyx":229 + * return WaypointList + * + * def MakeZoneSprites(Message,RawZoneList): # <<<<<<<<<<<<<< + * ZoneList = [] + * Columns = ast.literal_eval(Message) + */ + + /* function exit code */ + __pyx_L1_error:; + __Pyx_XDECREF(__pyx_t_1); + __Pyx_XDECREF(__pyx_t_2); + __Pyx_XDECREF(__pyx_t_3); + __Pyx_XDECREF(__pyx_t_4); + __Pyx_XDECREF(__pyx_t_7); + __Pyx_XDECREF(__pyx_t_8); + __Pyx_XDECREF(__pyx_t_9); + __Pyx_XDECREF(__pyx_t_10); + __Pyx_XDECREF(__pyx_t_11); + __Pyx_XDECREF(__pyx_t_12); + __Pyx_XDECREF(__pyx_t_13); + __Pyx_AddTraceback("CAStar.AATC_Monitor_Viewer.MakeZoneSprites", __pyx_clineno, __pyx_lineno, __pyx_filename); + __pyx_r = NULL; + __pyx_L0:; + __Pyx_XDECREF(__pyx_v_ZoneList); + __Pyx_XDECREF(__pyx_v_Columns); + __Pyx_XDECREF(__pyx_v_StartCoordIndex); + __Pyx_XDECREF(__pyx_v_EndCoordIndex); + __Pyx_XDECREF(__pyx_v_LevelIndex); + __Pyx_XDECREF(__pyx_v_ZoneIDIndex); + __Pyx_XDECREF(__pyx_v_Zone); + __Pyx_XDECREF(__pyx_v_StartCoords); + __Pyx_XDECREF(__pyx_v_EndCoords); + __Pyx_XDECREF(__pyx_v_Coord); + __Pyx_XDECREF(__pyx_v_Text); + __Pyx_XGIVEREF(__pyx_r); + __Pyx_RefNannyFinishContext(); + return __pyx_r; +} + +/* "CAStar/AATC_Monitor_Viewer.pyx":245 + * return ZoneList + * + * def MakeSprites(M): # <<<<<<<<<<<<<< + * print("Refreshing data") + * SpriteList = [] + */ + +/* Python wrapper */ +static PyObject *__pyx_pw_6CAStar_19AATC_Monitor_Viewer_15MakeSprites(PyObject *__pyx_self, PyObject *__pyx_v_M); /*proto*/ +static PyMethodDef __pyx_mdef_6CAStar_19AATC_Monitor_Viewer_15MakeSprites = {"MakeSprites", (PyCFunction)__pyx_pw_6CAStar_19AATC_Monitor_Viewer_15MakeSprites, METH_O, 0}; +static PyObject *__pyx_pw_6CAStar_19AATC_Monitor_Viewer_15MakeSprites(PyObject *__pyx_self, PyObject *__pyx_v_M) { + PyObject *__pyx_r = 0; + __Pyx_RefNannyDeclarations + __Pyx_RefNannySetupContext("MakeSprites (wrapper)", 0); + __pyx_r = __pyx_pf_6CAStar_19AATC_Monitor_Viewer_14MakeSprites(__pyx_self, ((PyObject *)__pyx_v_M)); + + /* function exit code */ + __Pyx_RefNannyFinishContext(); + return __pyx_r; +} + +static PyObject *__pyx_pf_6CAStar_19AATC_Monitor_Viewer_14MakeSprites(CYTHON_UNUSED PyObject *__pyx_self, PyObject *__pyx_v_M) { + PyObject *__pyx_v_SpriteList = NULL; + PyObject *__pyx_v_Sucess = NULL; + PyObject *__pyx_v_Message = NULL; + PyObject *__pyx_v_DronesAll = NULL; + PyObject *__pyx_v_DronesMonitor = NULL; + PyObject *__pyx_v_FlightsAll = NULL; + PyObject *__pyx_v_FlightsMonitor = NULL; + PyObject *__pyx_v_WaypointsAll = NULL; + PyObject *__pyx_v_WaypointsMonitor = NULL; + PyObject *__pyx_v_NoFlyZones = NULL; + PyObject *__pyx_r = NULL; + __Pyx_RefNannyDeclarations + PyObject *__pyx_t_1 = NULL; + PyObject *__pyx_t_2 = NULL; + PyObject *__pyx_t_3 = NULL; + PyObject *__pyx_t_4 = NULL; + PyObject *__pyx_t_5 = NULL; + PyObject *(*__pyx_t_6)(PyObject *); + int __pyx_t_7; + int __pyx_t_8; + __Pyx_RefNannySetupContext("MakeSprites", 0); + + /* "CAStar/AATC_Monitor_Viewer.pyx":246 + * + * def MakeSprites(M): + * print("Refreshing data") # <<<<<<<<<<<<<< + * SpriteList = [] + * Sucess,Message,DronesAll = M.GetDronesAll() + */ + if (__Pyx_PrintOne(0, __pyx_kp_s_Refreshing_data) < 0) __PYX_ERR(0, 246, __pyx_L1_error) + + /* "CAStar/AATC_Monitor_Viewer.pyx":247 + * def MakeSprites(M): + * print("Refreshing data") + * SpriteList = [] # <<<<<<<<<<<<<< + * Sucess,Message,DronesAll = M.GetDronesAll() + * if Sucess: + */ + __pyx_t_1 = PyList_New(0); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 247, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_1); + __pyx_v_SpriteList = __pyx_t_1; + __pyx_t_1 = 0; + + /* "CAStar/AATC_Monitor_Viewer.pyx":248 + * print("Refreshing data") + * SpriteList = [] + * Sucess,Message,DronesAll = M.GetDronesAll() # <<<<<<<<<<<<<< + * if Sucess: + * SpriteList += MakeDroneSprites(Message,DronesAll) + */ + __pyx_t_2 = __Pyx_PyObject_GetAttrStr(__pyx_v_M, __pyx_n_s_GetDronesAll); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 248, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_2); + __pyx_t_3 = NULL; + if (CYTHON_UNPACK_METHODS && likely(PyMethod_Check(__pyx_t_2))) { + __pyx_t_3 = PyMethod_GET_SELF(__pyx_t_2); + if (likely(__pyx_t_3)) { + PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_2); + __Pyx_INCREF(__pyx_t_3); + __Pyx_INCREF(function); + __Pyx_DECREF_SET(__pyx_t_2, function); + } + } + if (__pyx_t_3) { + __pyx_t_1 = __Pyx_PyObject_CallOneArg(__pyx_t_2, __pyx_t_3); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 248, __pyx_L1_error) + __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; + } else { + __pyx_t_1 = __Pyx_PyObject_CallNoArg(__pyx_t_2); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 248, __pyx_L1_error) + } + __Pyx_GOTREF(__pyx_t_1); + __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; + if ((likely(PyTuple_CheckExact(__pyx_t_1))) || (PyList_CheckExact(__pyx_t_1))) { + PyObject* sequence = __pyx_t_1; + #if !CYTHON_COMPILING_IN_PYPY + Py_ssize_t size = Py_SIZE(sequence); + #else + Py_ssize_t size = PySequence_Size(sequence); + #endif + if (unlikely(size != 3)) { + if (size > 3) __Pyx_RaiseTooManyValuesError(3); + else if (size >= 0) __Pyx_RaiseNeedMoreValuesError(size); + __PYX_ERR(0, 248, __pyx_L1_error) + } + #if CYTHON_ASSUME_SAFE_MACROS && !CYTHON_AVOID_BORROWED_REFS + if (likely(PyTuple_CheckExact(sequence))) { + __pyx_t_2 = PyTuple_GET_ITEM(sequence, 0); + __pyx_t_3 = PyTuple_GET_ITEM(sequence, 1); + __pyx_t_4 = PyTuple_GET_ITEM(sequence, 2); + } else { + __pyx_t_2 = PyList_GET_ITEM(sequence, 0); + __pyx_t_3 = PyList_GET_ITEM(sequence, 1); + __pyx_t_4 = PyList_GET_ITEM(sequence, 2); + } + __Pyx_INCREF(__pyx_t_2); + __Pyx_INCREF(__pyx_t_3); + __Pyx_INCREF(__pyx_t_4); + #else + __pyx_t_2 = PySequence_ITEM(sequence, 0); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 248, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_2); + __pyx_t_3 = PySequence_ITEM(sequence, 1); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 248, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_3); + __pyx_t_4 = PySequence_ITEM(sequence, 2); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 248, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_4); + #endif + __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; + } else { + Py_ssize_t index = -1; + __pyx_t_5 = PyObject_GetIter(__pyx_t_1); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 248, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_5); + __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; + __pyx_t_6 = Py_TYPE(__pyx_t_5)->tp_iternext; + index = 0; __pyx_t_2 = __pyx_t_6(__pyx_t_5); if (unlikely(!__pyx_t_2)) goto __pyx_L3_unpacking_failed; + __Pyx_GOTREF(__pyx_t_2); + index = 1; __pyx_t_3 = __pyx_t_6(__pyx_t_5); if (unlikely(!__pyx_t_3)) goto __pyx_L3_unpacking_failed; + __Pyx_GOTREF(__pyx_t_3); + index = 2; __pyx_t_4 = __pyx_t_6(__pyx_t_5); if (unlikely(!__pyx_t_4)) goto __pyx_L3_unpacking_failed; + __Pyx_GOTREF(__pyx_t_4); + if (__Pyx_IternextUnpackEndCheck(__pyx_t_6(__pyx_t_5), 3) < 0) __PYX_ERR(0, 248, __pyx_L1_error) + __pyx_t_6 = NULL; + __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0; + goto __pyx_L4_unpacking_done; + __pyx_L3_unpacking_failed:; + __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0; + __pyx_t_6 = NULL; + if (__Pyx_IterFinish() == 0) __Pyx_RaiseNeedMoreValuesError(index); + __PYX_ERR(0, 248, __pyx_L1_error) + __pyx_L4_unpacking_done:; + } + __pyx_v_Sucess = __pyx_t_2; + __pyx_t_2 = 0; + __pyx_v_Message = __pyx_t_3; + __pyx_t_3 = 0; + __pyx_v_DronesAll = __pyx_t_4; + __pyx_t_4 = 0; + + /* "CAStar/AATC_Monitor_Viewer.pyx":249 + * SpriteList = [] + * Sucess,Message,DronesAll = M.GetDronesAll() + * if Sucess: # <<<<<<<<<<<<<< + * SpriteList += MakeDroneSprites(Message,DronesAll) + * + */ + __pyx_t_7 = __Pyx_PyObject_IsTrue(__pyx_v_Sucess); if (unlikely(__pyx_t_7 < 0)) __PYX_ERR(0, 249, __pyx_L1_error) + if (__pyx_t_7) { + + /* "CAStar/AATC_Monitor_Viewer.pyx":250 + * Sucess,Message,DronesAll = M.GetDronesAll() + * if Sucess: + * SpriteList += MakeDroneSprites(Message,DronesAll) # <<<<<<<<<<<<<< + * + * Sucess,Message,DronesMonitor = M.GetMonitorDrones() + */ + __pyx_t_4 = __Pyx_GetModuleGlobalName(__pyx_n_s_MakeDroneSprites); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 250, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_4); + __pyx_t_3 = NULL; + __pyx_t_8 = 0; + if (CYTHON_UNPACK_METHODS && unlikely(PyMethod_Check(__pyx_t_4))) { + __pyx_t_3 = PyMethod_GET_SELF(__pyx_t_4); + if (likely(__pyx_t_3)) { + PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_4); + __Pyx_INCREF(__pyx_t_3); + __Pyx_INCREF(function); + __Pyx_DECREF_SET(__pyx_t_4, function); + __pyx_t_8 = 1; + } + } + #if CYTHON_FAST_PYCALL + if (PyFunction_Check(__pyx_t_4)) { + PyObject *__pyx_temp[3] = {__pyx_t_3, __pyx_v_Message, __pyx_v_DronesAll}; + __pyx_t_1 = __Pyx_PyFunction_FastCall(__pyx_t_4, __pyx_temp+1-__pyx_t_8, 2+__pyx_t_8); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 250, __pyx_L1_error) + __Pyx_XDECREF(__pyx_t_3); __pyx_t_3 = 0; + __Pyx_GOTREF(__pyx_t_1); + } else + #endif + #if CYTHON_FAST_PYCCALL + if (__Pyx_PyFastCFunction_Check(__pyx_t_4)) { + PyObject *__pyx_temp[3] = {__pyx_t_3, __pyx_v_Message, __pyx_v_DronesAll}; + __pyx_t_1 = __Pyx_PyCFunction_FastCall(__pyx_t_4, __pyx_temp+1-__pyx_t_8, 2+__pyx_t_8); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 250, __pyx_L1_error) + __Pyx_XDECREF(__pyx_t_3); __pyx_t_3 = 0; + __Pyx_GOTREF(__pyx_t_1); + } else + #endif + { + __pyx_t_2 = PyTuple_New(2+__pyx_t_8); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 250, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_2); + if (__pyx_t_3) { + __Pyx_GIVEREF(__pyx_t_3); PyTuple_SET_ITEM(__pyx_t_2, 0, __pyx_t_3); __pyx_t_3 = NULL; + } + __Pyx_INCREF(__pyx_v_Message); + __Pyx_GIVEREF(__pyx_v_Message); + PyTuple_SET_ITEM(__pyx_t_2, 0+__pyx_t_8, __pyx_v_Message); + __Pyx_INCREF(__pyx_v_DronesAll); + __Pyx_GIVEREF(__pyx_v_DronesAll); + PyTuple_SET_ITEM(__pyx_t_2, 1+__pyx_t_8, __pyx_v_DronesAll); + __pyx_t_1 = __Pyx_PyObject_Call(__pyx_t_4, __pyx_t_2, NULL); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 250, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_1); + __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; + } + __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0; + __pyx_t_4 = PyNumber_InPlaceAdd(__pyx_v_SpriteList, __pyx_t_1); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 250, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_4); + __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; + __Pyx_DECREF_SET(__pyx_v_SpriteList, __pyx_t_4); + __pyx_t_4 = 0; + + /* "CAStar/AATC_Monitor_Viewer.pyx":249 + * SpriteList = [] + * Sucess,Message,DronesAll = M.GetDronesAll() + * if Sucess: # <<<<<<<<<<<<<< + * SpriteList += MakeDroneSprites(Message,DronesAll) + * + */ + } + + /* "CAStar/AATC_Monitor_Viewer.pyx":252 + * SpriteList += MakeDroneSprites(Message,DronesAll) + * + * Sucess,Message,DronesMonitor = M.GetMonitorDrones() # <<<<<<<<<<<<<< + * if Sucess: + * SpriteList += MakeDroneSprites(Message,DronesMonitor) + */ + __pyx_t_1 = __Pyx_PyObject_GetAttrStr(__pyx_v_M, __pyx_n_s_GetMonitorDrones); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 252, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_1); + __pyx_t_2 = NULL; + if (CYTHON_UNPACK_METHODS && likely(PyMethod_Check(__pyx_t_1))) { + __pyx_t_2 = PyMethod_GET_SELF(__pyx_t_1); + if (likely(__pyx_t_2)) { + PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_1); + __Pyx_INCREF(__pyx_t_2); + __Pyx_INCREF(function); + __Pyx_DECREF_SET(__pyx_t_1, function); + } + } + if (__pyx_t_2) { + __pyx_t_4 = __Pyx_PyObject_CallOneArg(__pyx_t_1, __pyx_t_2); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 252, __pyx_L1_error) + __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; + } else { + __pyx_t_4 = __Pyx_PyObject_CallNoArg(__pyx_t_1); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 252, __pyx_L1_error) + } + __Pyx_GOTREF(__pyx_t_4); + __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; + if ((likely(PyTuple_CheckExact(__pyx_t_4))) || (PyList_CheckExact(__pyx_t_4))) { + PyObject* sequence = __pyx_t_4; + #if !CYTHON_COMPILING_IN_PYPY + Py_ssize_t size = Py_SIZE(sequence); + #else + Py_ssize_t size = PySequence_Size(sequence); + #endif + if (unlikely(size != 3)) { + if (size > 3) __Pyx_RaiseTooManyValuesError(3); + else if (size >= 0) __Pyx_RaiseNeedMoreValuesError(size); + __PYX_ERR(0, 252, __pyx_L1_error) + } + #if CYTHON_ASSUME_SAFE_MACROS && !CYTHON_AVOID_BORROWED_REFS + if (likely(PyTuple_CheckExact(sequence))) { + __pyx_t_1 = PyTuple_GET_ITEM(sequence, 0); + __pyx_t_2 = PyTuple_GET_ITEM(sequence, 1); + __pyx_t_3 = PyTuple_GET_ITEM(sequence, 2); + } else { + __pyx_t_1 = PyList_GET_ITEM(sequence, 0); + __pyx_t_2 = PyList_GET_ITEM(sequence, 1); + __pyx_t_3 = PyList_GET_ITEM(sequence, 2); + } + __Pyx_INCREF(__pyx_t_1); + __Pyx_INCREF(__pyx_t_2); + __Pyx_INCREF(__pyx_t_3); + #else + __pyx_t_1 = PySequence_ITEM(sequence, 0); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 252, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_1); + __pyx_t_2 = PySequence_ITEM(sequence, 1); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 252, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_2); + __pyx_t_3 = PySequence_ITEM(sequence, 2); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 252, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_3); + #endif + __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0; + } else { + Py_ssize_t index = -1; + __pyx_t_5 = PyObject_GetIter(__pyx_t_4); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 252, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_5); + __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0; + __pyx_t_6 = Py_TYPE(__pyx_t_5)->tp_iternext; + index = 0; __pyx_t_1 = __pyx_t_6(__pyx_t_5); if (unlikely(!__pyx_t_1)) goto __pyx_L6_unpacking_failed; + __Pyx_GOTREF(__pyx_t_1); + index = 1; __pyx_t_2 = __pyx_t_6(__pyx_t_5); if (unlikely(!__pyx_t_2)) goto __pyx_L6_unpacking_failed; + __Pyx_GOTREF(__pyx_t_2); + index = 2; __pyx_t_3 = __pyx_t_6(__pyx_t_5); if (unlikely(!__pyx_t_3)) goto __pyx_L6_unpacking_failed; + __Pyx_GOTREF(__pyx_t_3); + if (__Pyx_IternextUnpackEndCheck(__pyx_t_6(__pyx_t_5), 3) < 0) __PYX_ERR(0, 252, __pyx_L1_error) + __pyx_t_6 = NULL; + __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0; + goto __pyx_L7_unpacking_done; + __pyx_L6_unpacking_failed:; + __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0; + __pyx_t_6 = NULL; + if (__Pyx_IterFinish() == 0) __Pyx_RaiseNeedMoreValuesError(index); + __PYX_ERR(0, 252, __pyx_L1_error) + __pyx_L7_unpacking_done:; + } + __Pyx_DECREF_SET(__pyx_v_Sucess, __pyx_t_1); + __pyx_t_1 = 0; + __Pyx_DECREF_SET(__pyx_v_Message, __pyx_t_2); + __pyx_t_2 = 0; + __pyx_v_DronesMonitor = __pyx_t_3; + __pyx_t_3 = 0; + + /* "CAStar/AATC_Monitor_Viewer.pyx":253 + * + * Sucess,Message,DronesMonitor = M.GetMonitorDrones() + * if Sucess: # <<<<<<<<<<<<<< + * SpriteList += MakeDroneSprites(Message,DronesMonitor) + * + */ + __pyx_t_7 = __Pyx_PyObject_IsTrue(__pyx_v_Sucess); if (unlikely(__pyx_t_7 < 0)) __PYX_ERR(0, 253, __pyx_L1_error) + if (__pyx_t_7) { + + /* "CAStar/AATC_Monitor_Viewer.pyx":254 + * Sucess,Message,DronesMonitor = M.GetMonitorDrones() + * if Sucess: + * SpriteList += MakeDroneSprites(Message,DronesMonitor) # <<<<<<<<<<<<<< + * + * Sucess,Message,FlightsAll = M.GetFlightsAll() + */ + __pyx_t_3 = __Pyx_GetModuleGlobalName(__pyx_n_s_MakeDroneSprites); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 254, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_3); + __pyx_t_2 = NULL; + __pyx_t_8 = 0; + if (CYTHON_UNPACK_METHODS && unlikely(PyMethod_Check(__pyx_t_3))) { + __pyx_t_2 = PyMethod_GET_SELF(__pyx_t_3); + if (likely(__pyx_t_2)) { + PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_3); + __Pyx_INCREF(__pyx_t_2); + __Pyx_INCREF(function); + __Pyx_DECREF_SET(__pyx_t_3, function); + __pyx_t_8 = 1; + } + } + #if CYTHON_FAST_PYCALL + if (PyFunction_Check(__pyx_t_3)) { + PyObject *__pyx_temp[3] = {__pyx_t_2, __pyx_v_Message, __pyx_v_DronesMonitor}; + __pyx_t_4 = __Pyx_PyFunction_FastCall(__pyx_t_3, __pyx_temp+1-__pyx_t_8, 2+__pyx_t_8); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 254, __pyx_L1_error) + __Pyx_XDECREF(__pyx_t_2); __pyx_t_2 = 0; + __Pyx_GOTREF(__pyx_t_4); + } else + #endif + #if CYTHON_FAST_PYCCALL + if (__Pyx_PyFastCFunction_Check(__pyx_t_3)) { + PyObject *__pyx_temp[3] = {__pyx_t_2, __pyx_v_Message, __pyx_v_DronesMonitor}; + __pyx_t_4 = __Pyx_PyCFunction_FastCall(__pyx_t_3, __pyx_temp+1-__pyx_t_8, 2+__pyx_t_8); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 254, __pyx_L1_error) + __Pyx_XDECREF(__pyx_t_2); __pyx_t_2 = 0; + __Pyx_GOTREF(__pyx_t_4); + } else + #endif + { + __pyx_t_1 = PyTuple_New(2+__pyx_t_8); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 254, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_1); + if (__pyx_t_2) { + __Pyx_GIVEREF(__pyx_t_2); PyTuple_SET_ITEM(__pyx_t_1, 0, __pyx_t_2); __pyx_t_2 = NULL; + } + __Pyx_INCREF(__pyx_v_Message); + __Pyx_GIVEREF(__pyx_v_Message); + PyTuple_SET_ITEM(__pyx_t_1, 0+__pyx_t_8, __pyx_v_Message); + __Pyx_INCREF(__pyx_v_DronesMonitor); + __Pyx_GIVEREF(__pyx_v_DronesMonitor); + PyTuple_SET_ITEM(__pyx_t_1, 1+__pyx_t_8, __pyx_v_DronesMonitor); + __pyx_t_4 = __Pyx_PyObject_Call(__pyx_t_3, __pyx_t_1, NULL); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 254, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_4); + __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; + } + __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; + __pyx_t_3 = PyNumber_InPlaceAdd(__pyx_v_SpriteList, __pyx_t_4); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 254, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_3); + __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0; + __Pyx_DECREF_SET(__pyx_v_SpriteList, __pyx_t_3); + __pyx_t_3 = 0; + + /* "CAStar/AATC_Monitor_Viewer.pyx":253 + * + * Sucess,Message,DronesMonitor = M.GetMonitorDrones() + * if Sucess: # <<<<<<<<<<<<<< + * SpriteList += MakeDroneSprites(Message,DronesMonitor) + * + */ + } + + /* "CAStar/AATC_Monitor_Viewer.pyx":256 + * SpriteList += MakeDroneSprites(Message,DronesMonitor) + * + * Sucess,Message,FlightsAll = M.GetFlightsAll() # <<<<<<<<<<<<<< + * if Sucess: + * SpriteList += MakeFlightSprites(Message,FlightsAll) + */ + __pyx_t_4 = __Pyx_PyObject_GetAttrStr(__pyx_v_M, __pyx_n_s_GetFlightsAll); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 256, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_4); + __pyx_t_1 = NULL; + if (CYTHON_UNPACK_METHODS && likely(PyMethod_Check(__pyx_t_4))) { + __pyx_t_1 = PyMethod_GET_SELF(__pyx_t_4); + if (likely(__pyx_t_1)) { + PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_4); + __Pyx_INCREF(__pyx_t_1); + __Pyx_INCREF(function); + __Pyx_DECREF_SET(__pyx_t_4, function); + } + } + if (__pyx_t_1) { + __pyx_t_3 = __Pyx_PyObject_CallOneArg(__pyx_t_4, __pyx_t_1); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 256, __pyx_L1_error) + __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; + } else { + __pyx_t_3 = __Pyx_PyObject_CallNoArg(__pyx_t_4); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 256, __pyx_L1_error) + } + __Pyx_GOTREF(__pyx_t_3); + __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0; + if ((likely(PyTuple_CheckExact(__pyx_t_3))) || (PyList_CheckExact(__pyx_t_3))) { + PyObject* sequence = __pyx_t_3; + #if !CYTHON_COMPILING_IN_PYPY + Py_ssize_t size = Py_SIZE(sequence); + #else + Py_ssize_t size = PySequence_Size(sequence); + #endif + if (unlikely(size != 3)) { + if (size > 3) __Pyx_RaiseTooManyValuesError(3); + else if (size >= 0) __Pyx_RaiseNeedMoreValuesError(size); + __PYX_ERR(0, 256, __pyx_L1_error) + } + #if CYTHON_ASSUME_SAFE_MACROS && !CYTHON_AVOID_BORROWED_REFS + if (likely(PyTuple_CheckExact(sequence))) { + __pyx_t_4 = PyTuple_GET_ITEM(sequence, 0); + __pyx_t_1 = PyTuple_GET_ITEM(sequence, 1); + __pyx_t_2 = PyTuple_GET_ITEM(sequence, 2); + } else { + __pyx_t_4 = PyList_GET_ITEM(sequence, 0); + __pyx_t_1 = PyList_GET_ITEM(sequence, 1); + __pyx_t_2 = PyList_GET_ITEM(sequence, 2); + } + __Pyx_INCREF(__pyx_t_4); + __Pyx_INCREF(__pyx_t_1); + __Pyx_INCREF(__pyx_t_2); + #else + __pyx_t_4 = PySequence_ITEM(sequence, 0); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 256, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_4); + __pyx_t_1 = PySequence_ITEM(sequence, 1); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 256, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_1); + __pyx_t_2 = PySequence_ITEM(sequence, 2); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 256, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_2); + #endif + __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; + } else { + Py_ssize_t index = -1; + __pyx_t_5 = PyObject_GetIter(__pyx_t_3); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 256, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_5); + __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; + __pyx_t_6 = Py_TYPE(__pyx_t_5)->tp_iternext; + index = 0; __pyx_t_4 = __pyx_t_6(__pyx_t_5); if (unlikely(!__pyx_t_4)) goto __pyx_L9_unpacking_failed; + __Pyx_GOTREF(__pyx_t_4); + index = 1; __pyx_t_1 = __pyx_t_6(__pyx_t_5); if (unlikely(!__pyx_t_1)) goto __pyx_L9_unpacking_failed; + __Pyx_GOTREF(__pyx_t_1); + index = 2; __pyx_t_2 = __pyx_t_6(__pyx_t_5); if (unlikely(!__pyx_t_2)) goto __pyx_L9_unpacking_failed; + __Pyx_GOTREF(__pyx_t_2); + if (__Pyx_IternextUnpackEndCheck(__pyx_t_6(__pyx_t_5), 3) < 0) __PYX_ERR(0, 256, __pyx_L1_error) + __pyx_t_6 = NULL; + __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0; + goto __pyx_L10_unpacking_done; + __pyx_L9_unpacking_failed:; + __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0; + __pyx_t_6 = NULL; + if (__Pyx_IterFinish() == 0) __Pyx_RaiseNeedMoreValuesError(index); + __PYX_ERR(0, 256, __pyx_L1_error) + __pyx_L10_unpacking_done:; + } + __Pyx_DECREF_SET(__pyx_v_Sucess, __pyx_t_4); + __pyx_t_4 = 0; + __Pyx_DECREF_SET(__pyx_v_Message, __pyx_t_1); + __pyx_t_1 = 0; + __pyx_v_FlightsAll = __pyx_t_2; + __pyx_t_2 = 0; + + /* "CAStar/AATC_Monitor_Viewer.pyx":257 + * + * Sucess,Message,FlightsAll = M.GetFlightsAll() + * if Sucess: # <<<<<<<<<<<<<< + * SpriteList += MakeFlightSprites(Message,FlightsAll) + * + */ + __pyx_t_7 = __Pyx_PyObject_IsTrue(__pyx_v_Sucess); if (unlikely(__pyx_t_7 < 0)) __PYX_ERR(0, 257, __pyx_L1_error) + if (__pyx_t_7) { + + /* "CAStar/AATC_Monitor_Viewer.pyx":258 + * Sucess,Message,FlightsAll = M.GetFlightsAll() + * if Sucess: + * SpriteList += MakeFlightSprites(Message,FlightsAll) # <<<<<<<<<<<<<< + * + * Sucess,Message,FlightsMonitor = M.GetMonitorFlights() + */ + __pyx_t_2 = __Pyx_GetModuleGlobalName(__pyx_n_s_MakeFlightSprites); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 258, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_2); + __pyx_t_1 = NULL; + __pyx_t_8 = 0; + if (CYTHON_UNPACK_METHODS && unlikely(PyMethod_Check(__pyx_t_2))) { + __pyx_t_1 = PyMethod_GET_SELF(__pyx_t_2); + if (likely(__pyx_t_1)) { + PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_2); + __Pyx_INCREF(__pyx_t_1); + __Pyx_INCREF(function); + __Pyx_DECREF_SET(__pyx_t_2, function); + __pyx_t_8 = 1; + } + } + #if CYTHON_FAST_PYCALL + if (PyFunction_Check(__pyx_t_2)) { + PyObject *__pyx_temp[3] = {__pyx_t_1, __pyx_v_Message, __pyx_v_FlightsAll}; + __pyx_t_3 = __Pyx_PyFunction_FastCall(__pyx_t_2, __pyx_temp+1-__pyx_t_8, 2+__pyx_t_8); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 258, __pyx_L1_error) + __Pyx_XDECREF(__pyx_t_1); __pyx_t_1 = 0; + __Pyx_GOTREF(__pyx_t_3); + } else + #endif + #if CYTHON_FAST_PYCCALL + if (__Pyx_PyFastCFunction_Check(__pyx_t_2)) { + PyObject *__pyx_temp[3] = {__pyx_t_1, __pyx_v_Message, __pyx_v_FlightsAll}; + __pyx_t_3 = __Pyx_PyCFunction_FastCall(__pyx_t_2, __pyx_temp+1-__pyx_t_8, 2+__pyx_t_8); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 258, __pyx_L1_error) + __Pyx_XDECREF(__pyx_t_1); __pyx_t_1 = 0; + __Pyx_GOTREF(__pyx_t_3); + } else + #endif + { + __pyx_t_4 = PyTuple_New(2+__pyx_t_8); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 258, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_4); + if (__pyx_t_1) { + __Pyx_GIVEREF(__pyx_t_1); PyTuple_SET_ITEM(__pyx_t_4, 0, __pyx_t_1); __pyx_t_1 = NULL; + } + __Pyx_INCREF(__pyx_v_Message); + __Pyx_GIVEREF(__pyx_v_Message); + PyTuple_SET_ITEM(__pyx_t_4, 0+__pyx_t_8, __pyx_v_Message); + __Pyx_INCREF(__pyx_v_FlightsAll); + __Pyx_GIVEREF(__pyx_v_FlightsAll); + PyTuple_SET_ITEM(__pyx_t_4, 1+__pyx_t_8, __pyx_v_FlightsAll); + __pyx_t_3 = __Pyx_PyObject_Call(__pyx_t_2, __pyx_t_4, NULL); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 258, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_3); + __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0; + } + __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; + __pyx_t_2 = PyNumber_InPlaceAdd(__pyx_v_SpriteList, __pyx_t_3); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 258, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_2); + __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; + __Pyx_DECREF_SET(__pyx_v_SpriteList, __pyx_t_2); + __pyx_t_2 = 0; + + /* "CAStar/AATC_Monitor_Viewer.pyx":257 + * + * Sucess,Message,FlightsAll = M.GetFlightsAll() + * if Sucess: # <<<<<<<<<<<<<< + * SpriteList += MakeFlightSprites(Message,FlightsAll) + * + */ + } + + /* "CAStar/AATC_Monitor_Viewer.pyx":260 + * SpriteList += MakeFlightSprites(Message,FlightsAll) + * + * Sucess,Message,FlightsMonitor = M.GetMonitorFlights() # <<<<<<<<<<<<<< + * if Sucess: + * SpriteList += MakeFlightSprites(Message,FlightsMonitor) + */ + __pyx_t_3 = __Pyx_PyObject_GetAttrStr(__pyx_v_M, __pyx_n_s_GetMonitorFlights); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 260, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_3); + __pyx_t_4 = NULL; + if (CYTHON_UNPACK_METHODS && likely(PyMethod_Check(__pyx_t_3))) { + __pyx_t_4 = PyMethod_GET_SELF(__pyx_t_3); + if (likely(__pyx_t_4)) { + PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_3); + __Pyx_INCREF(__pyx_t_4); + __Pyx_INCREF(function); + __Pyx_DECREF_SET(__pyx_t_3, function); + } + } + if (__pyx_t_4) { + __pyx_t_2 = __Pyx_PyObject_CallOneArg(__pyx_t_3, __pyx_t_4); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 260, __pyx_L1_error) + __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0; + } else { + __pyx_t_2 = __Pyx_PyObject_CallNoArg(__pyx_t_3); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 260, __pyx_L1_error) + } + __Pyx_GOTREF(__pyx_t_2); + __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; + if ((likely(PyTuple_CheckExact(__pyx_t_2))) || (PyList_CheckExact(__pyx_t_2))) { + PyObject* sequence = __pyx_t_2; + #if !CYTHON_COMPILING_IN_PYPY + Py_ssize_t size = Py_SIZE(sequence); + #else + Py_ssize_t size = PySequence_Size(sequence); + #endif + if (unlikely(size != 3)) { + if (size > 3) __Pyx_RaiseTooManyValuesError(3); + else if (size >= 0) __Pyx_RaiseNeedMoreValuesError(size); + __PYX_ERR(0, 260, __pyx_L1_error) + } + #if CYTHON_ASSUME_SAFE_MACROS && !CYTHON_AVOID_BORROWED_REFS + if (likely(PyTuple_CheckExact(sequence))) { + __pyx_t_3 = PyTuple_GET_ITEM(sequence, 0); + __pyx_t_4 = PyTuple_GET_ITEM(sequence, 1); + __pyx_t_1 = PyTuple_GET_ITEM(sequence, 2); + } else { + __pyx_t_3 = PyList_GET_ITEM(sequence, 0); + __pyx_t_4 = PyList_GET_ITEM(sequence, 1); + __pyx_t_1 = PyList_GET_ITEM(sequence, 2); + } + __Pyx_INCREF(__pyx_t_3); + __Pyx_INCREF(__pyx_t_4); + __Pyx_INCREF(__pyx_t_1); + #else + __pyx_t_3 = PySequence_ITEM(sequence, 0); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 260, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_3); + __pyx_t_4 = PySequence_ITEM(sequence, 1); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 260, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_4); + __pyx_t_1 = PySequence_ITEM(sequence, 2); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 260, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_1); + #endif + __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; + } else { + Py_ssize_t index = -1; + __pyx_t_5 = PyObject_GetIter(__pyx_t_2); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 260, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_5); + __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; + __pyx_t_6 = Py_TYPE(__pyx_t_5)->tp_iternext; + index = 0; __pyx_t_3 = __pyx_t_6(__pyx_t_5); if (unlikely(!__pyx_t_3)) goto __pyx_L12_unpacking_failed; + __Pyx_GOTREF(__pyx_t_3); + index = 1; __pyx_t_4 = __pyx_t_6(__pyx_t_5); if (unlikely(!__pyx_t_4)) goto __pyx_L12_unpacking_failed; + __Pyx_GOTREF(__pyx_t_4); + index = 2; __pyx_t_1 = __pyx_t_6(__pyx_t_5); if (unlikely(!__pyx_t_1)) goto __pyx_L12_unpacking_failed; + __Pyx_GOTREF(__pyx_t_1); + if (__Pyx_IternextUnpackEndCheck(__pyx_t_6(__pyx_t_5), 3) < 0) __PYX_ERR(0, 260, __pyx_L1_error) + __pyx_t_6 = NULL; + __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0; + goto __pyx_L13_unpacking_done; + __pyx_L12_unpacking_failed:; + __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0; + __pyx_t_6 = NULL; + if (__Pyx_IterFinish() == 0) __Pyx_RaiseNeedMoreValuesError(index); + __PYX_ERR(0, 260, __pyx_L1_error) + __pyx_L13_unpacking_done:; + } + __Pyx_DECREF_SET(__pyx_v_Sucess, __pyx_t_3); + __pyx_t_3 = 0; + __Pyx_DECREF_SET(__pyx_v_Message, __pyx_t_4); + __pyx_t_4 = 0; + __pyx_v_FlightsMonitor = __pyx_t_1; + __pyx_t_1 = 0; + + /* "CAStar/AATC_Monitor_Viewer.pyx":261 + * + * Sucess,Message,FlightsMonitor = M.GetMonitorFlights() + * if Sucess: # <<<<<<<<<<<<<< + * SpriteList += MakeFlightSprites(Message,FlightsMonitor) + * + */ + __pyx_t_7 = __Pyx_PyObject_IsTrue(__pyx_v_Sucess); if (unlikely(__pyx_t_7 < 0)) __PYX_ERR(0, 261, __pyx_L1_error) + if (__pyx_t_7) { + + /* "CAStar/AATC_Monitor_Viewer.pyx":262 + * Sucess,Message,FlightsMonitor = M.GetMonitorFlights() + * if Sucess: + * SpriteList += MakeFlightSprites(Message,FlightsMonitor) # <<<<<<<<<<<<<< + * + * Sucess,Message,WaypointsAll = M.GetFlightWaypointsAll() + */ + __pyx_t_1 = __Pyx_GetModuleGlobalName(__pyx_n_s_MakeFlightSprites); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 262, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_1); + __pyx_t_4 = NULL; + __pyx_t_8 = 0; + if (CYTHON_UNPACK_METHODS && unlikely(PyMethod_Check(__pyx_t_1))) { + __pyx_t_4 = PyMethod_GET_SELF(__pyx_t_1); + if (likely(__pyx_t_4)) { + PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_1); + __Pyx_INCREF(__pyx_t_4); + __Pyx_INCREF(function); + __Pyx_DECREF_SET(__pyx_t_1, function); + __pyx_t_8 = 1; + } + } + #if CYTHON_FAST_PYCALL + if (PyFunction_Check(__pyx_t_1)) { + PyObject *__pyx_temp[3] = {__pyx_t_4, __pyx_v_Message, __pyx_v_FlightsMonitor}; + __pyx_t_2 = __Pyx_PyFunction_FastCall(__pyx_t_1, __pyx_temp+1-__pyx_t_8, 2+__pyx_t_8); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 262, __pyx_L1_error) + __Pyx_XDECREF(__pyx_t_4); __pyx_t_4 = 0; + __Pyx_GOTREF(__pyx_t_2); + } else + #endif + #if CYTHON_FAST_PYCCALL + if (__Pyx_PyFastCFunction_Check(__pyx_t_1)) { + PyObject *__pyx_temp[3] = {__pyx_t_4, __pyx_v_Message, __pyx_v_FlightsMonitor}; + __pyx_t_2 = __Pyx_PyCFunction_FastCall(__pyx_t_1, __pyx_temp+1-__pyx_t_8, 2+__pyx_t_8); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 262, __pyx_L1_error) + __Pyx_XDECREF(__pyx_t_4); __pyx_t_4 = 0; + __Pyx_GOTREF(__pyx_t_2); + } else + #endif + { + __pyx_t_3 = PyTuple_New(2+__pyx_t_8); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 262, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_3); + if (__pyx_t_4) { + __Pyx_GIVEREF(__pyx_t_4); PyTuple_SET_ITEM(__pyx_t_3, 0, __pyx_t_4); __pyx_t_4 = NULL; + } + __Pyx_INCREF(__pyx_v_Message); + __Pyx_GIVEREF(__pyx_v_Message); + PyTuple_SET_ITEM(__pyx_t_3, 0+__pyx_t_8, __pyx_v_Message); + __Pyx_INCREF(__pyx_v_FlightsMonitor); + __Pyx_GIVEREF(__pyx_v_FlightsMonitor); + PyTuple_SET_ITEM(__pyx_t_3, 1+__pyx_t_8, __pyx_v_FlightsMonitor); + __pyx_t_2 = __Pyx_PyObject_Call(__pyx_t_1, __pyx_t_3, NULL); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 262, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_2); + __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; + } + __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; + __pyx_t_1 = PyNumber_InPlaceAdd(__pyx_v_SpriteList, __pyx_t_2); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 262, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_1); + __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; + __Pyx_DECREF_SET(__pyx_v_SpriteList, __pyx_t_1); + __pyx_t_1 = 0; + + /* "CAStar/AATC_Monitor_Viewer.pyx":261 + * + * Sucess,Message,FlightsMonitor = M.GetMonitorFlights() + * if Sucess: # <<<<<<<<<<<<<< + * SpriteList += MakeFlightSprites(Message,FlightsMonitor) + * + */ + } + + /* "CAStar/AATC_Monitor_Viewer.pyx":264 + * SpriteList += MakeFlightSprites(Message,FlightsMonitor) + * + * Sucess,Message,WaypointsAll = M.GetFlightWaypointsAll() # <<<<<<<<<<<<<< + * if Sucess: + * SpriteList += MakeWaypointSprites(Message,WaypointsAll) + */ + __pyx_t_2 = __Pyx_PyObject_GetAttrStr(__pyx_v_M, __pyx_n_s_GetFlightWaypointsAll); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 264, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_2); + __pyx_t_3 = NULL; + if (CYTHON_UNPACK_METHODS && likely(PyMethod_Check(__pyx_t_2))) { + __pyx_t_3 = PyMethod_GET_SELF(__pyx_t_2); + if (likely(__pyx_t_3)) { + PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_2); + __Pyx_INCREF(__pyx_t_3); + __Pyx_INCREF(function); + __Pyx_DECREF_SET(__pyx_t_2, function); + } + } + if (__pyx_t_3) { + __pyx_t_1 = __Pyx_PyObject_CallOneArg(__pyx_t_2, __pyx_t_3); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 264, __pyx_L1_error) + __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; + } else { + __pyx_t_1 = __Pyx_PyObject_CallNoArg(__pyx_t_2); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 264, __pyx_L1_error) + } + __Pyx_GOTREF(__pyx_t_1); + __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; + if ((likely(PyTuple_CheckExact(__pyx_t_1))) || (PyList_CheckExact(__pyx_t_1))) { + PyObject* sequence = __pyx_t_1; + #if !CYTHON_COMPILING_IN_PYPY + Py_ssize_t size = Py_SIZE(sequence); + #else + Py_ssize_t size = PySequence_Size(sequence); + #endif + if (unlikely(size != 3)) { + if (size > 3) __Pyx_RaiseTooManyValuesError(3); + else if (size >= 0) __Pyx_RaiseNeedMoreValuesError(size); + __PYX_ERR(0, 264, __pyx_L1_error) + } + #if CYTHON_ASSUME_SAFE_MACROS && !CYTHON_AVOID_BORROWED_REFS + if (likely(PyTuple_CheckExact(sequence))) { + __pyx_t_2 = PyTuple_GET_ITEM(sequence, 0); + __pyx_t_3 = PyTuple_GET_ITEM(sequence, 1); + __pyx_t_4 = PyTuple_GET_ITEM(sequence, 2); + } else { + __pyx_t_2 = PyList_GET_ITEM(sequence, 0); + __pyx_t_3 = PyList_GET_ITEM(sequence, 1); + __pyx_t_4 = PyList_GET_ITEM(sequence, 2); + } + __Pyx_INCREF(__pyx_t_2); + __Pyx_INCREF(__pyx_t_3); + __Pyx_INCREF(__pyx_t_4); + #else + __pyx_t_2 = PySequence_ITEM(sequence, 0); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 264, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_2); + __pyx_t_3 = PySequence_ITEM(sequence, 1); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 264, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_3); + __pyx_t_4 = PySequence_ITEM(sequence, 2); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 264, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_4); + #endif + __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; + } else { + Py_ssize_t index = -1; + __pyx_t_5 = PyObject_GetIter(__pyx_t_1); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 264, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_5); + __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; + __pyx_t_6 = Py_TYPE(__pyx_t_5)->tp_iternext; + index = 0; __pyx_t_2 = __pyx_t_6(__pyx_t_5); if (unlikely(!__pyx_t_2)) goto __pyx_L15_unpacking_failed; + __Pyx_GOTREF(__pyx_t_2); + index = 1; __pyx_t_3 = __pyx_t_6(__pyx_t_5); if (unlikely(!__pyx_t_3)) goto __pyx_L15_unpacking_failed; + __Pyx_GOTREF(__pyx_t_3); + index = 2; __pyx_t_4 = __pyx_t_6(__pyx_t_5); if (unlikely(!__pyx_t_4)) goto __pyx_L15_unpacking_failed; + __Pyx_GOTREF(__pyx_t_4); + if (__Pyx_IternextUnpackEndCheck(__pyx_t_6(__pyx_t_5), 3) < 0) __PYX_ERR(0, 264, __pyx_L1_error) + __pyx_t_6 = NULL; + __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0; + goto __pyx_L16_unpacking_done; + __pyx_L15_unpacking_failed:; + __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0; + __pyx_t_6 = NULL; + if (__Pyx_IterFinish() == 0) __Pyx_RaiseNeedMoreValuesError(index); + __PYX_ERR(0, 264, __pyx_L1_error) + __pyx_L16_unpacking_done:; + } + __Pyx_DECREF_SET(__pyx_v_Sucess, __pyx_t_2); + __pyx_t_2 = 0; + __Pyx_DECREF_SET(__pyx_v_Message, __pyx_t_3); + __pyx_t_3 = 0; + __pyx_v_WaypointsAll = __pyx_t_4; + __pyx_t_4 = 0; + + /* "CAStar/AATC_Monitor_Viewer.pyx":265 + * + * Sucess,Message,WaypointsAll = M.GetFlightWaypointsAll() + * if Sucess: # <<<<<<<<<<<<<< + * SpriteList += MakeWaypointSprites(Message,WaypointsAll) + * + */ + __pyx_t_7 = __Pyx_PyObject_IsTrue(__pyx_v_Sucess); if (unlikely(__pyx_t_7 < 0)) __PYX_ERR(0, 265, __pyx_L1_error) + if (__pyx_t_7) { + + /* "CAStar/AATC_Monitor_Viewer.pyx":266 + * Sucess,Message,WaypointsAll = M.GetFlightWaypointsAll() + * if Sucess: + * SpriteList += MakeWaypointSprites(Message,WaypointsAll) # <<<<<<<<<<<<<< + * + * Sucess,Message,WaypointsMonitor = M.GetMonitorFlightWaypoints() + */ + __pyx_t_4 = __Pyx_GetModuleGlobalName(__pyx_n_s_MakeWaypointSprites); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 266, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_4); + __pyx_t_3 = NULL; + __pyx_t_8 = 0; + if (CYTHON_UNPACK_METHODS && unlikely(PyMethod_Check(__pyx_t_4))) { + __pyx_t_3 = PyMethod_GET_SELF(__pyx_t_4); + if (likely(__pyx_t_3)) { + PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_4); + __Pyx_INCREF(__pyx_t_3); + __Pyx_INCREF(function); + __Pyx_DECREF_SET(__pyx_t_4, function); + __pyx_t_8 = 1; + } + } + #if CYTHON_FAST_PYCALL + if (PyFunction_Check(__pyx_t_4)) { + PyObject *__pyx_temp[3] = {__pyx_t_3, __pyx_v_Message, __pyx_v_WaypointsAll}; + __pyx_t_1 = __Pyx_PyFunction_FastCall(__pyx_t_4, __pyx_temp+1-__pyx_t_8, 2+__pyx_t_8); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 266, __pyx_L1_error) + __Pyx_XDECREF(__pyx_t_3); __pyx_t_3 = 0; + __Pyx_GOTREF(__pyx_t_1); + } else + #endif + #if CYTHON_FAST_PYCCALL + if (__Pyx_PyFastCFunction_Check(__pyx_t_4)) { + PyObject *__pyx_temp[3] = {__pyx_t_3, __pyx_v_Message, __pyx_v_WaypointsAll}; + __pyx_t_1 = __Pyx_PyCFunction_FastCall(__pyx_t_4, __pyx_temp+1-__pyx_t_8, 2+__pyx_t_8); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 266, __pyx_L1_error) + __Pyx_XDECREF(__pyx_t_3); __pyx_t_3 = 0; + __Pyx_GOTREF(__pyx_t_1); + } else + #endif + { + __pyx_t_2 = PyTuple_New(2+__pyx_t_8); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 266, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_2); + if (__pyx_t_3) { + __Pyx_GIVEREF(__pyx_t_3); PyTuple_SET_ITEM(__pyx_t_2, 0, __pyx_t_3); __pyx_t_3 = NULL; + } + __Pyx_INCREF(__pyx_v_Message); + __Pyx_GIVEREF(__pyx_v_Message); + PyTuple_SET_ITEM(__pyx_t_2, 0+__pyx_t_8, __pyx_v_Message); + __Pyx_INCREF(__pyx_v_WaypointsAll); + __Pyx_GIVEREF(__pyx_v_WaypointsAll); + PyTuple_SET_ITEM(__pyx_t_2, 1+__pyx_t_8, __pyx_v_WaypointsAll); + __pyx_t_1 = __Pyx_PyObject_Call(__pyx_t_4, __pyx_t_2, NULL); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 266, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_1); + __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; + } + __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0; + __pyx_t_4 = PyNumber_InPlaceAdd(__pyx_v_SpriteList, __pyx_t_1); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 266, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_4); + __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; + __Pyx_DECREF_SET(__pyx_v_SpriteList, __pyx_t_4); + __pyx_t_4 = 0; + + /* "CAStar/AATC_Monitor_Viewer.pyx":265 + * + * Sucess,Message,WaypointsAll = M.GetFlightWaypointsAll() + * if Sucess: # <<<<<<<<<<<<<< + * SpriteList += MakeWaypointSprites(Message,WaypointsAll) + * + */ + } + + /* "CAStar/AATC_Monitor_Viewer.pyx":268 + * SpriteList += MakeWaypointSprites(Message,WaypointsAll) + * + * Sucess,Message,WaypointsMonitor = M.GetMonitorFlightWaypoints() # <<<<<<<<<<<<<< + * if Sucess: + * SpriteList += MakeWaypointSprites(Message,WaypointsMonitor) + */ + __pyx_t_1 = __Pyx_PyObject_GetAttrStr(__pyx_v_M, __pyx_n_s_GetMonitorFlightWaypoints); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 268, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_1); + __pyx_t_2 = NULL; + if (CYTHON_UNPACK_METHODS && likely(PyMethod_Check(__pyx_t_1))) { + __pyx_t_2 = PyMethod_GET_SELF(__pyx_t_1); + if (likely(__pyx_t_2)) { + PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_1); + __Pyx_INCREF(__pyx_t_2); + __Pyx_INCREF(function); + __Pyx_DECREF_SET(__pyx_t_1, function); + } + } + if (__pyx_t_2) { + __pyx_t_4 = __Pyx_PyObject_CallOneArg(__pyx_t_1, __pyx_t_2); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 268, __pyx_L1_error) + __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; + } else { + __pyx_t_4 = __Pyx_PyObject_CallNoArg(__pyx_t_1); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 268, __pyx_L1_error) + } + __Pyx_GOTREF(__pyx_t_4); + __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; + if ((likely(PyTuple_CheckExact(__pyx_t_4))) || (PyList_CheckExact(__pyx_t_4))) { + PyObject* sequence = __pyx_t_4; + #if !CYTHON_COMPILING_IN_PYPY + Py_ssize_t size = Py_SIZE(sequence); + #else + Py_ssize_t size = PySequence_Size(sequence); + #endif + if (unlikely(size != 3)) { + if (size > 3) __Pyx_RaiseTooManyValuesError(3); + else if (size >= 0) __Pyx_RaiseNeedMoreValuesError(size); + __PYX_ERR(0, 268, __pyx_L1_error) + } + #if CYTHON_ASSUME_SAFE_MACROS && !CYTHON_AVOID_BORROWED_REFS + if (likely(PyTuple_CheckExact(sequence))) { + __pyx_t_1 = PyTuple_GET_ITEM(sequence, 0); + __pyx_t_2 = PyTuple_GET_ITEM(sequence, 1); + __pyx_t_3 = PyTuple_GET_ITEM(sequence, 2); + } else { + __pyx_t_1 = PyList_GET_ITEM(sequence, 0); + __pyx_t_2 = PyList_GET_ITEM(sequence, 1); + __pyx_t_3 = PyList_GET_ITEM(sequence, 2); + } + __Pyx_INCREF(__pyx_t_1); + __Pyx_INCREF(__pyx_t_2); + __Pyx_INCREF(__pyx_t_3); + #else + __pyx_t_1 = PySequence_ITEM(sequence, 0); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 268, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_1); + __pyx_t_2 = PySequence_ITEM(sequence, 1); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 268, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_2); + __pyx_t_3 = PySequence_ITEM(sequence, 2); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 268, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_3); + #endif + __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0; + } else { + Py_ssize_t index = -1; + __pyx_t_5 = PyObject_GetIter(__pyx_t_4); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 268, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_5); + __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0; + __pyx_t_6 = Py_TYPE(__pyx_t_5)->tp_iternext; + index = 0; __pyx_t_1 = __pyx_t_6(__pyx_t_5); if (unlikely(!__pyx_t_1)) goto __pyx_L18_unpacking_failed; + __Pyx_GOTREF(__pyx_t_1); + index = 1; __pyx_t_2 = __pyx_t_6(__pyx_t_5); if (unlikely(!__pyx_t_2)) goto __pyx_L18_unpacking_failed; + __Pyx_GOTREF(__pyx_t_2); + index = 2; __pyx_t_3 = __pyx_t_6(__pyx_t_5); if (unlikely(!__pyx_t_3)) goto __pyx_L18_unpacking_failed; + __Pyx_GOTREF(__pyx_t_3); + if (__Pyx_IternextUnpackEndCheck(__pyx_t_6(__pyx_t_5), 3) < 0) __PYX_ERR(0, 268, __pyx_L1_error) + __pyx_t_6 = NULL; + __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0; + goto __pyx_L19_unpacking_done; + __pyx_L18_unpacking_failed:; + __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0; + __pyx_t_6 = NULL; + if (__Pyx_IterFinish() == 0) __Pyx_RaiseNeedMoreValuesError(index); + __PYX_ERR(0, 268, __pyx_L1_error) + __pyx_L19_unpacking_done:; + } + __Pyx_DECREF_SET(__pyx_v_Sucess, __pyx_t_1); + __pyx_t_1 = 0; + __Pyx_DECREF_SET(__pyx_v_Message, __pyx_t_2); + __pyx_t_2 = 0; + __pyx_v_WaypointsMonitor = __pyx_t_3; + __pyx_t_3 = 0; + + /* "CAStar/AATC_Monitor_Viewer.pyx":269 + * + * Sucess,Message,WaypointsMonitor = M.GetMonitorFlightWaypoints() + * if Sucess: # <<<<<<<<<<<<<< + * SpriteList += MakeWaypointSprites(Message,WaypointsMonitor) + * + */ + __pyx_t_7 = __Pyx_PyObject_IsTrue(__pyx_v_Sucess); if (unlikely(__pyx_t_7 < 0)) __PYX_ERR(0, 269, __pyx_L1_error) + if (__pyx_t_7) { + + /* "CAStar/AATC_Monitor_Viewer.pyx":270 + * Sucess,Message,WaypointsMonitor = M.GetMonitorFlightWaypoints() + * if Sucess: + * SpriteList += MakeWaypointSprites(Message,WaypointsMonitor) # <<<<<<<<<<<<<< + * + * Sucess,Message,NoFlyZones = M.GetNoFlyZones() + */ + __pyx_t_3 = __Pyx_GetModuleGlobalName(__pyx_n_s_MakeWaypointSprites); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 270, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_3); + __pyx_t_2 = NULL; + __pyx_t_8 = 0; + if (CYTHON_UNPACK_METHODS && unlikely(PyMethod_Check(__pyx_t_3))) { + __pyx_t_2 = PyMethod_GET_SELF(__pyx_t_3); + if (likely(__pyx_t_2)) { + PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_3); + __Pyx_INCREF(__pyx_t_2); + __Pyx_INCREF(function); + __Pyx_DECREF_SET(__pyx_t_3, function); + __pyx_t_8 = 1; + } + } + #if CYTHON_FAST_PYCALL + if (PyFunction_Check(__pyx_t_3)) { + PyObject *__pyx_temp[3] = {__pyx_t_2, __pyx_v_Message, __pyx_v_WaypointsMonitor}; + __pyx_t_4 = __Pyx_PyFunction_FastCall(__pyx_t_3, __pyx_temp+1-__pyx_t_8, 2+__pyx_t_8); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 270, __pyx_L1_error) + __Pyx_XDECREF(__pyx_t_2); __pyx_t_2 = 0; + __Pyx_GOTREF(__pyx_t_4); + } else + #endif + #if CYTHON_FAST_PYCCALL + if (__Pyx_PyFastCFunction_Check(__pyx_t_3)) { + PyObject *__pyx_temp[3] = {__pyx_t_2, __pyx_v_Message, __pyx_v_WaypointsMonitor}; + __pyx_t_4 = __Pyx_PyCFunction_FastCall(__pyx_t_3, __pyx_temp+1-__pyx_t_8, 2+__pyx_t_8); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 270, __pyx_L1_error) + __Pyx_XDECREF(__pyx_t_2); __pyx_t_2 = 0; + __Pyx_GOTREF(__pyx_t_4); + } else + #endif + { + __pyx_t_1 = PyTuple_New(2+__pyx_t_8); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 270, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_1); + if (__pyx_t_2) { + __Pyx_GIVEREF(__pyx_t_2); PyTuple_SET_ITEM(__pyx_t_1, 0, __pyx_t_2); __pyx_t_2 = NULL; + } + __Pyx_INCREF(__pyx_v_Message); + __Pyx_GIVEREF(__pyx_v_Message); + PyTuple_SET_ITEM(__pyx_t_1, 0+__pyx_t_8, __pyx_v_Message); + __Pyx_INCREF(__pyx_v_WaypointsMonitor); + __Pyx_GIVEREF(__pyx_v_WaypointsMonitor); + PyTuple_SET_ITEM(__pyx_t_1, 1+__pyx_t_8, __pyx_v_WaypointsMonitor); + __pyx_t_4 = __Pyx_PyObject_Call(__pyx_t_3, __pyx_t_1, NULL); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 270, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_4); + __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; + } + __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; + __pyx_t_3 = PyNumber_InPlaceAdd(__pyx_v_SpriteList, __pyx_t_4); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 270, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_3); + __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0; + __Pyx_DECREF_SET(__pyx_v_SpriteList, __pyx_t_3); + __pyx_t_3 = 0; + + /* "CAStar/AATC_Monitor_Viewer.pyx":269 + * + * Sucess,Message,WaypointsMonitor = M.GetMonitorFlightWaypoints() + * if Sucess: # <<<<<<<<<<<<<< + * SpriteList += MakeWaypointSprites(Message,WaypointsMonitor) + * + */ + } + + /* "CAStar/AATC_Monitor_Viewer.pyx":272 + * SpriteList += MakeWaypointSprites(Message,WaypointsMonitor) + * + * Sucess,Message,NoFlyZones = M.GetNoFlyZones() # <<<<<<<<<<<<<< + * if Sucess: + * SpriteList += MakeZoneSprites(Message,NoFlyZones) + */ + __pyx_t_4 = __Pyx_PyObject_GetAttrStr(__pyx_v_M, __pyx_n_s_GetNoFlyZones); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 272, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_4); + __pyx_t_1 = NULL; + if (CYTHON_UNPACK_METHODS && likely(PyMethod_Check(__pyx_t_4))) { + __pyx_t_1 = PyMethod_GET_SELF(__pyx_t_4); + if (likely(__pyx_t_1)) { + PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_4); + __Pyx_INCREF(__pyx_t_1); + __Pyx_INCREF(function); + __Pyx_DECREF_SET(__pyx_t_4, function); + } + } + if (__pyx_t_1) { + __pyx_t_3 = __Pyx_PyObject_CallOneArg(__pyx_t_4, __pyx_t_1); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 272, __pyx_L1_error) + __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; + } else { + __pyx_t_3 = __Pyx_PyObject_CallNoArg(__pyx_t_4); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 272, __pyx_L1_error) + } + __Pyx_GOTREF(__pyx_t_3); + __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0; + if ((likely(PyTuple_CheckExact(__pyx_t_3))) || (PyList_CheckExact(__pyx_t_3))) { + PyObject* sequence = __pyx_t_3; + #if !CYTHON_COMPILING_IN_PYPY + Py_ssize_t size = Py_SIZE(sequence); + #else + Py_ssize_t size = PySequence_Size(sequence); + #endif + if (unlikely(size != 3)) { + if (size > 3) __Pyx_RaiseTooManyValuesError(3); + else if (size >= 0) __Pyx_RaiseNeedMoreValuesError(size); + __PYX_ERR(0, 272, __pyx_L1_error) + } + #if CYTHON_ASSUME_SAFE_MACROS && !CYTHON_AVOID_BORROWED_REFS + if (likely(PyTuple_CheckExact(sequence))) { + __pyx_t_4 = PyTuple_GET_ITEM(sequence, 0); + __pyx_t_1 = PyTuple_GET_ITEM(sequence, 1); + __pyx_t_2 = PyTuple_GET_ITEM(sequence, 2); + } else { + __pyx_t_4 = PyList_GET_ITEM(sequence, 0); + __pyx_t_1 = PyList_GET_ITEM(sequence, 1); + __pyx_t_2 = PyList_GET_ITEM(sequence, 2); + } + __Pyx_INCREF(__pyx_t_4); + __Pyx_INCREF(__pyx_t_1); + __Pyx_INCREF(__pyx_t_2); + #else + __pyx_t_4 = PySequence_ITEM(sequence, 0); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 272, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_4); + __pyx_t_1 = PySequence_ITEM(sequence, 1); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 272, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_1); + __pyx_t_2 = PySequence_ITEM(sequence, 2); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 272, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_2); + #endif + __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; + } else { + Py_ssize_t index = -1; + __pyx_t_5 = PyObject_GetIter(__pyx_t_3); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 272, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_5); + __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; + __pyx_t_6 = Py_TYPE(__pyx_t_5)->tp_iternext; + index = 0; __pyx_t_4 = __pyx_t_6(__pyx_t_5); if (unlikely(!__pyx_t_4)) goto __pyx_L21_unpacking_failed; + __Pyx_GOTREF(__pyx_t_4); + index = 1; __pyx_t_1 = __pyx_t_6(__pyx_t_5); if (unlikely(!__pyx_t_1)) goto __pyx_L21_unpacking_failed; + __Pyx_GOTREF(__pyx_t_1); + index = 2; __pyx_t_2 = __pyx_t_6(__pyx_t_5); if (unlikely(!__pyx_t_2)) goto __pyx_L21_unpacking_failed; + __Pyx_GOTREF(__pyx_t_2); + if (__Pyx_IternextUnpackEndCheck(__pyx_t_6(__pyx_t_5), 3) < 0) __PYX_ERR(0, 272, __pyx_L1_error) + __pyx_t_6 = NULL; + __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0; + goto __pyx_L22_unpacking_done; + __pyx_L21_unpacking_failed:; + __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0; + __pyx_t_6 = NULL; + if (__Pyx_IterFinish() == 0) __Pyx_RaiseNeedMoreValuesError(index); + __PYX_ERR(0, 272, __pyx_L1_error) + __pyx_L22_unpacking_done:; + } + __Pyx_DECREF_SET(__pyx_v_Sucess, __pyx_t_4); + __pyx_t_4 = 0; + __Pyx_DECREF_SET(__pyx_v_Message, __pyx_t_1); + __pyx_t_1 = 0; + __pyx_v_NoFlyZones = __pyx_t_2; + __pyx_t_2 = 0; + + /* "CAStar/AATC_Monitor_Viewer.pyx":273 + * + * Sucess,Message,NoFlyZones = M.GetNoFlyZones() + * if Sucess: # <<<<<<<<<<<<<< + * SpriteList += MakeZoneSprites(Message,NoFlyZones) + * + */ + __pyx_t_7 = __Pyx_PyObject_IsTrue(__pyx_v_Sucess); if (unlikely(__pyx_t_7 < 0)) __PYX_ERR(0, 273, __pyx_L1_error) + if (__pyx_t_7) { + + /* "CAStar/AATC_Monitor_Viewer.pyx":274 + * Sucess,Message,NoFlyZones = M.GetNoFlyZones() + * if Sucess: + * SpriteList += MakeZoneSprites(Message,NoFlyZones) # <<<<<<<<<<<<<< + * + * #Sprites are created in this function to simplify code in case of an error(False) + */ + __pyx_t_2 = __Pyx_GetModuleGlobalName(__pyx_n_s_MakeZoneSprites); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 274, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_2); + __pyx_t_1 = NULL; + __pyx_t_8 = 0; + if (CYTHON_UNPACK_METHODS && unlikely(PyMethod_Check(__pyx_t_2))) { + __pyx_t_1 = PyMethod_GET_SELF(__pyx_t_2); + if (likely(__pyx_t_1)) { + PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_2); + __Pyx_INCREF(__pyx_t_1); + __Pyx_INCREF(function); + __Pyx_DECREF_SET(__pyx_t_2, function); + __pyx_t_8 = 1; + } + } + #if CYTHON_FAST_PYCALL + if (PyFunction_Check(__pyx_t_2)) { + PyObject *__pyx_temp[3] = {__pyx_t_1, __pyx_v_Message, __pyx_v_NoFlyZones}; + __pyx_t_3 = __Pyx_PyFunction_FastCall(__pyx_t_2, __pyx_temp+1-__pyx_t_8, 2+__pyx_t_8); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 274, __pyx_L1_error) + __Pyx_XDECREF(__pyx_t_1); __pyx_t_1 = 0; + __Pyx_GOTREF(__pyx_t_3); + } else + #endif + #if CYTHON_FAST_PYCCALL + if (__Pyx_PyFastCFunction_Check(__pyx_t_2)) { + PyObject *__pyx_temp[3] = {__pyx_t_1, __pyx_v_Message, __pyx_v_NoFlyZones}; + __pyx_t_3 = __Pyx_PyCFunction_FastCall(__pyx_t_2, __pyx_temp+1-__pyx_t_8, 2+__pyx_t_8); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 274, __pyx_L1_error) + __Pyx_XDECREF(__pyx_t_1); __pyx_t_1 = 0; + __Pyx_GOTREF(__pyx_t_3); + } else + #endif + { + __pyx_t_4 = PyTuple_New(2+__pyx_t_8); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 274, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_4); + if (__pyx_t_1) { + __Pyx_GIVEREF(__pyx_t_1); PyTuple_SET_ITEM(__pyx_t_4, 0, __pyx_t_1); __pyx_t_1 = NULL; + } + __Pyx_INCREF(__pyx_v_Message); + __Pyx_GIVEREF(__pyx_v_Message); + PyTuple_SET_ITEM(__pyx_t_4, 0+__pyx_t_8, __pyx_v_Message); + __Pyx_INCREF(__pyx_v_NoFlyZones); + __Pyx_GIVEREF(__pyx_v_NoFlyZones); + PyTuple_SET_ITEM(__pyx_t_4, 1+__pyx_t_8, __pyx_v_NoFlyZones); + __pyx_t_3 = __Pyx_PyObject_Call(__pyx_t_2, __pyx_t_4, NULL); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 274, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_3); + __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0; + } + __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; + __pyx_t_2 = PyNumber_InPlaceAdd(__pyx_v_SpriteList, __pyx_t_3); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 274, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_2); + __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; + __Pyx_DECREF_SET(__pyx_v_SpriteList, __pyx_t_2); + __pyx_t_2 = 0; + + /* "CAStar/AATC_Monitor_Viewer.pyx":273 + * + * Sucess,Message,NoFlyZones = M.GetNoFlyZones() + * if Sucess: # <<<<<<<<<<<<<< + * SpriteList += MakeZoneSprites(Message,NoFlyZones) + * + */ + } + + /* "CAStar/AATC_Monitor_Viewer.pyx":277 + * + * #Sprites are created in this function to simplify code in case of an error(False) + * print("Refreshed data") # <<<<<<<<<<<<<< + * return SpriteList #All sprites which were sucessfully created + * + */ + if (__Pyx_PrintOne(0, __pyx_kp_s_Refreshed_data) < 0) __PYX_ERR(0, 277, __pyx_L1_error) + + /* "CAStar/AATC_Monitor_Viewer.pyx":278 + * #Sprites are created in this function to simplify code in case of an error(False) + * print("Refreshed data") + * return SpriteList #All sprites which were sucessfully created # <<<<<<<<<<<<<< + * + * + */ + __Pyx_XDECREF(__pyx_r); + __Pyx_INCREF(__pyx_v_SpriteList); + __pyx_r = __pyx_v_SpriteList; + goto __pyx_L0; + + /* "CAStar/AATC_Monitor_Viewer.pyx":245 + * return ZoneList + * + * def MakeSprites(M): # <<<<<<<<<<<<<< + * print("Refreshing data") + * SpriteList = [] + */ + + /* function exit code */ + __pyx_L1_error:; + __Pyx_XDECREF(__pyx_t_1); + __Pyx_XDECREF(__pyx_t_2); + __Pyx_XDECREF(__pyx_t_3); + __Pyx_XDECREF(__pyx_t_4); + __Pyx_XDECREF(__pyx_t_5); + __Pyx_AddTraceback("CAStar.AATC_Monitor_Viewer.MakeSprites", __pyx_clineno, __pyx_lineno, __pyx_filename); + __pyx_r = NULL; + __pyx_L0:; + __Pyx_XDECREF(__pyx_v_SpriteList); + __Pyx_XDECREF(__pyx_v_Sucess); + __Pyx_XDECREF(__pyx_v_Message); + __Pyx_XDECREF(__pyx_v_DronesAll); + __Pyx_XDECREF(__pyx_v_DronesMonitor); + __Pyx_XDECREF(__pyx_v_FlightsAll); + __Pyx_XDECREF(__pyx_v_FlightsMonitor); + __Pyx_XDECREF(__pyx_v_WaypointsAll); + __Pyx_XDECREF(__pyx_v_WaypointsMonitor); + __Pyx_XDECREF(__pyx_v_NoFlyZones); + __Pyx_XGIVEREF(__pyx_r); + __Pyx_RefNannyFinishContext(); + return __pyx_r; +} + +static PyMethodDef __pyx_methods[] = { + {0, 0, 0, 0} +}; + +#if PY_MAJOR_VERSION >= 3 +static struct PyModuleDef __pyx_moduledef = { + #if PY_VERSION_HEX < 0x03020000 + { PyObject_HEAD_INIT(NULL) NULL, 0, NULL }, + #else + PyModuleDef_HEAD_INIT, + #endif + "AATC_Monitor_Viewer", + 0, /* m_doc */ + -1, /* m_size */ + __pyx_methods /* m_methods */, + NULL, /* m_reload */ + NULL, /* m_traverse */ + NULL, /* m_clear */ + NULL /* m_free */ +}; +#endif + +static __Pyx_StringTabEntry __pyx_string_tab[] = { + {&__pyx_kp_s_127_0_0_1, __pyx_k_127_0_0_1, sizeof(__pyx_k_127_0_0_1), 0, 0, 1, 0}, + {&__pyx_n_s_AA, __pyx_k_AA, sizeof(__pyx_k_AA), 0, 0, 1, 1}, + {&__pyx_n_s_AATC_Coordinate, __pyx_k_AATC_Coordinate, sizeof(__pyx_k_AATC_Coordinate), 0, 0, 1, 1}, + {&__pyx_n_s_AATC_Monitor, __pyx_k_AATC_Monitor, sizeof(__pyx_k_AATC_Monitor), 0, 0, 1, 1}, + {&__pyx_kp_s_AATC_Monitor_Viewer_pyx, __pyx_k_AATC_Monitor_Viewer_pyx, sizeof(__pyx_k_AATC_Monitor_Viewer_pyx), 0, 0, 1, 0}, + {&__pyx_n_s_AddDrawObject, __pyx_k_AddDrawObject, sizeof(__pyx_k_AddDrawObject), 0, 0, 1, 1}, + {&__pyx_n_s_Amount, __pyx_k_Amount, sizeof(__pyx_k_Amount), 0, 0, 1, 1}, + {&__pyx_kp_s_An_error_occured_restarting_main, __pyx_k_An_error_occured_restarting_main, sizeof(__pyx_k_An_error_occured_restarting_main), 0, 0, 1, 0}, + {&__pyx_kp_s_B, __pyx_k_B, sizeof(__pyx_k_B), 0, 0, 1, 0}, + {&__pyx_n_s_BatteryIndex, __pyx_k_BatteryIndex, sizeof(__pyx_k_BatteryIndex), 0, 0, 1, 1}, + {&__pyx_n_s_CAStar_AATC_Monitor_Viewer, __pyx_k_CAStar_AATC_Monitor_Viewer, sizeof(__pyx_k_CAStar_AATC_Monitor_Viewer), 0, 0, 1, 1}, + {&__pyx_n_s_Camera, __pyx_k_Camera, sizeof(__pyx_k_Camera), 0, 0, 1, 1}, + {&__pyx_n_s_CameraCoord, __pyx_k_CameraCoord, sizeof(__pyx_k_CameraCoord), 0, 0, 1, 1}, + {&__pyx_n_s_CameraEndX, __pyx_k_CameraEndX, sizeof(__pyx_k_CameraEndX), 0, 0, 1, 1}, + {&__pyx_n_s_CameraEndY, __pyx_k_CameraEndY, sizeof(__pyx_k_CameraEndY), 0, 0, 1, 1}, + {&__pyx_n_s_CameraWipe, __pyx_k_CameraWipe, sizeof(__pyx_k_CameraWipe), 0, 0, 1, 1}, + {&__pyx_n_s_CameraX, __pyx_k_CameraX, sizeof(__pyx_k_CameraX), 0, 0, 1, 1}, + {&__pyx_n_s_CameraXSize, __pyx_k_CameraXSize, sizeof(__pyx_k_CameraXSize), 0, 0, 1, 1}, + {&__pyx_n_s_CameraY, __pyx_k_CameraY, sizeof(__pyx_k_CameraY), 0, 0, 1, 1}, + {&__pyx_n_s_CameraYSize, __pyx_k_CameraYSize, sizeof(__pyx_k_CameraYSize), 0, 0, 1, 1}, + {&__pyx_n_s_CameraZoom, __pyx_k_CameraZoom, sizeof(__pyx_k_CameraZoom), 0, 0, 1, 1}, + {&__pyx_n_s_Camera_AddDrawObject, __pyx_k_Camera_AddDrawObject, sizeof(__pyx_k_Camera_AddDrawObject), 0, 0, 1, 1}, + {&__pyx_n_s_Camera_CameraWipe, __pyx_k_Camera_CameraWipe, sizeof(__pyx_k_Camera_CameraWipe), 0, 0, 1, 1}, + {&__pyx_n_s_Camera_Draw, __pyx_k_Camera_Draw, sizeof(__pyx_k_Camera_Draw), 0, 0, 1, 1}, + {&__pyx_n_s_Camera_GetCameraCoords, __pyx_k_Camera_GetCameraCoords, sizeof(__pyx_k_Camera_GetCameraCoords), 0, 0, 1, 1}, + {&__pyx_n_s_Camera_GetZoom, __pyx_k_Camera_GetZoom, sizeof(__pyx_k_Camera_GetZoom), 0, 0, 1, 1}, + {&__pyx_n_s_Camera_Get_Coord, __pyx_k_Camera_Get_Coord, sizeof(__pyx_k_Camera_Get_Coord), 0, 0, 1, 1}, + {&__pyx_n_s_Camera_IncrementCameraCoordX, __pyx_k_Camera_IncrementCameraCoordX, sizeof(__pyx_k_Camera_IncrementCameraCoordX), 0, 0, 1, 1}, + {&__pyx_n_s_Camera_IncrementCameraCoordY, __pyx_k_Camera_IncrementCameraCoordY, sizeof(__pyx_k_Camera_IncrementCameraCoordY), 0, 0, 1, 1}, + {&__pyx_n_s_Camera_ResetDrawObject, __pyx_k_Camera_ResetDrawObject, sizeof(__pyx_k_Camera_ResetDrawObject), 0, 0, 1, 1}, + {&__pyx_n_s_Camera_SetCameraCoords, __pyx_k_Camera_SetCameraCoords, sizeof(__pyx_k_Camera_SetCameraCoords), 0, 0, 1, 1}, + {&__pyx_n_s_Camera_SetZoom, __pyx_k_Camera_SetZoom, sizeof(__pyx_k_Camera_SetZoom), 0, 0, 1, 1}, + {&__pyx_n_s_Camera_UpdateCameraSize, __pyx_k_Camera_UpdateCameraSize, sizeof(__pyx_k_Camera_UpdateCameraSize), 0, 0, 1, 1}, + {&__pyx_n_s_Camera___init, __pyx_k_Camera___init, sizeof(__pyx_k_Camera___init), 0, 0, 1, 1}, + {&__pyx_kp_s_Camera_details, __pyx_k_Camera_details, sizeof(__pyx_k_Camera_details), 0, 0, 1, 0}, + {&__pyx_n_s_Clock, __pyx_k_Clock, sizeof(__pyx_k_Clock), 0, 0, 1, 1}, + {&__pyx_n_s_Colour, __pyx_k_Colour, sizeof(__pyx_k_Colour), 0, 0, 1, 1}, + {&__pyx_n_s_Columns, __pyx_k_Columns, sizeof(__pyx_k_Columns), 0, 0, 1, 1}, + {&__pyx_n_s_Coord, __pyx_k_Coord, sizeof(__pyx_k_Coord), 0, 0, 1, 1}, + {&__pyx_n_s_CoordIndex, __pyx_k_CoordIndex, sizeof(__pyx_k_CoordIndex), 0, 0, 1, 1}, + {&__pyx_n_s_CoordObject, __pyx_k_CoordObject, sizeof(__pyx_k_CoordObject), 0, 0, 1, 1}, + {&__pyx_n_s_Coordinate, __pyx_k_Coordinate, sizeof(__pyx_k_Coordinate), 0, 0, 1, 1}, + {&__pyx_n_s_Coords, __pyx_k_Coords, sizeof(__pyx_k_Coords), 0, 0, 1, 1}, + {&__pyx_n_s_CreateMonitorInterface, __pyx_k_CreateMonitorInterface, sizeof(__pyx_k_CreateMonitorInterface), 0, 0, 1, 1}, + {&__pyx_kp_s_D, __pyx_k_D, sizeof(__pyx_k_D), 0, 0, 1, 0}, + {&__pyx_kp_s_D_2, __pyx_k_D_2, sizeof(__pyx_k_D_2), 0, 0, 1, 0}, + {&__pyx_n_s_Distance, __pyx_k_Distance, sizeof(__pyx_k_Distance), 0, 0, 1, 1}, + {&__pyx_n_s_DistanceIndex, __pyx_k_DistanceIndex, sizeof(__pyx_k_DistanceIndex), 0, 0, 1, 1}, + {&__pyx_n_s_Draw, __pyx_k_Draw, sizeof(__pyx_k_Draw), 0, 0, 1, 1}, + {&__pyx_n_s_DrawObject, __pyx_k_DrawObject, sizeof(__pyx_k_DrawObject), 0, 0, 1, 1}, + {&__pyx_n_s_DrawObjects, __pyx_k_DrawObjects, sizeof(__pyx_k_DrawObjects), 0, 0, 1, 1}, + {&__pyx_n_s_Drone, __pyx_k_Drone, sizeof(__pyx_k_Drone), 0, 0, 1, 1}, + {&__pyx_n_s_DroneID, __pyx_k_DroneID, sizeof(__pyx_k_DroneID), 0, 0, 1, 1}, + {&__pyx_n_s_DroneIDIndex, __pyx_k_DroneIDIndex, sizeof(__pyx_k_DroneIDIndex), 0, 0, 1, 1}, + {&__pyx_n_s_DroneList, __pyx_k_DroneList, sizeof(__pyx_k_DroneList), 0, 0, 1, 1}, + {&__pyx_n_s_DroneName, __pyx_k_DroneName, sizeof(__pyx_k_DroneName), 0, 0, 1, 1}, + {&__pyx_n_s_DroneNameIndex, __pyx_k_DroneNameIndex, sizeof(__pyx_k_DroneNameIndex), 0, 0, 1, 1}, + {&__pyx_n_s_DronesAll, __pyx_k_DronesAll, sizeof(__pyx_k_DronesAll), 0, 0, 1, 1}, + {&__pyx_n_s_DronesMonitor, __pyx_k_DronesMonitor, sizeof(__pyx_k_DronesMonitor), 0, 0, 1, 1}, + {&__pyx_n_s_ETA, __pyx_k_ETA, sizeof(__pyx_k_ETA), 0, 0, 1, 1}, + {&__pyx_n_s_ETAIndex, __pyx_k_ETAIndex, sizeof(__pyx_k_ETAIndex), 0, 0, 1, 1}, + {&__pyx_kp_s_ETA_2, __pyx_k_ETA_2, sizeof(__pyx_k_ETA_2), 0, 0, 1, 0}, + {&__pyx_n_s_EndCoord, __pyx_k_EndCoord, sizeof(__pyx_k_EndCoord), 0, 0, 1, 1}, + {&__pyx_n_s_EndCoordIndex, __pyx_k_EndCoordIndex, sizeof(__pyx_k_EndCoordIndex), 0, 0, 1, 1}, + {&__pyx_n_s_EndCoords, __pyx_k_EndCoords, sizeof(__pyx_k_EndCoords), 0, 0, 1, 1}, + {&__pyx_n_s_EndCoordsIndex, __pyx_k_EndCoordsIndex, sizeof(__pyx_k_EndCoordsIndex), 0, 0, 1, 1}, + {&__pyx_n_s_EndPoint, __pyx_k_EndPoint, sizeof(__pyx_k_EndPoint), 0, 0, 1, 1}, + {&__pyx_n_s_EndTime, __pyx_k_EndTime, sizeof(__pyx_k_EndTime), 0, 0, 1, 1}, + {&__pyx_n_s_EndTimeIndex, __pyx_k_EndTimeIndex, sizeof(__pyx_k_EndTimeIndex), 0, 0, 1, 1}, + {&__pyx_n_s_Exit, __pyx_k_Exit, sizeof(__pyx_k_Exit), 0, 0, 1, 1}, + {&__pyx_kp_s_Exit_Y_N, __pyx_k_Exit_Y_N, sizeof(__pyx_k_Exit_Y_N), 0, 0, 1, 0}, + {&__pyx_kp_s_F, __pyx_k_F, sizeof(__pyx_k_F), 0, 0, 1, 0}, + {&__pyx_kp_s_FPS, __pyx_k_FPS, sizeof(__pyx_k_FPS), 0, 0, 1, 0}, + {&__pyx_n_s_Flight, __pyx_k_Flight, sizeof(__pyx_k_Flight), 0, 0, 1, 1}, + {&__pyx_n_s_FlightID, __pyx_k_FlightID, sizeof(__pyx_k_FlightID), 0, 0, 1, 1}, + {&__pyx_n_s_FlightIDIndex, __pyx_k_FlightIDIndex, sizeof(__pyx_k_FlightIDIndex), 0, 0, 1, 1}, + {&__pyx_n_s_FlightList, __pyx_k_FlightList, sizeof(__pyx_k_FlightList), 0, 0, 1, 1}, + {&__pyx_n_s_FlightsAll, __pyx_k_FlightsAll, sizeof(__pyx_k_FlightsAll), 0, 0, 1, 1}, + {&__pyx_n_s_FlightsMonitor, __pyx_k_FlightsMonitor, sizeof(__pyx_k_FlightsMonitor), 0, 0, 1, 1}, + {&__pyx_n_s_Font, __pyx_k_Font, sizeof(__pyx_k_Font), 0, 0, 1, 1}, + {&__pyx_n_s_ForceDraw, __pyx_k_ForceDraw, sizeof(__pyx_k_ForceDraw), 0, 0, 1, 1}, + {&__pyx_n_s_GetCameraCoords, __pyx_k_GetCameraCoords, sizeof(__pyx_k_GetCameraCoords), 0, 0, 1, 1}, + {&__pyx_n_s_GetDronesAll, __pyx_k_GetDronesAll, sizeof(__pyx_k_GetDronesAll), 0, 0, 1, 1}, + {&__pyx_n_s_GetFlightWaypointsAll, __pyx_k_GetFlightWaypointsAll, sizeof(__pyx_k_GetFlightWaypointsAll), 0, 0, 1, 1}, + {&__pyx_n_s_GetFlightsAll, __pyx_k_GetFlightsAll, sizeof(__pyx_k_GetFlightsAll), 0, 0, 1, 1}, + {&__pyx_n_s_GetFont, __pyx_k_GetFont, sizeof(__pyx_k_GetFont), 0, 0, 1, 1}, + {&__pyx_n_s_GetImage, __pyx_k_GetImage, sizeof(__pyx_k_GetImage), 0, 0, 1, 1}, + {&__pyx_n_s_GetMonitorDrones, __pyx_k_GetMonitorDrones, sizeof(__pyx_k_GetMonitorDrones), 0, 0, 1, 1}, + {&__pyx_n_s_GetMonitorFlightWaypoints, __pyx_k_GetMonitorFlightWaypoints, sizeof(__pyx_k_GetMonitorFlightWaypoints), 0, 0, 1, 1}, + {&__pyx_n_s_GetMonitorFlights, __pyx_k_GetMonitorFlights, sizeof(__pyx_k_GetMonitorFlights), 0, 0, 1, 1}, + {&__pyx_n_s_GetNoFlyZones, __pyx_k_GetNoFlyZones, sizeof(__pyx_k_GetNoFlyZones), 0, 0, 1, 1}, + {&__pyx_n_s_GetText, __pyx_k_GetText, sizeof(__pyx_k_GetText), 0, 0, 1, 1}, + {&__pyx_n_s_GetZoom, __pyx_k_GetZoom, sizeof(__pyx_k_GetZoom), 0, 0, 1, 1}, + {&__pyx_n_s_Get_Coord, __pyx_k_Get_Coord, sizeof(__pyx_k_Get_Coord), 0, 0, 1, 1}, + {&__pyx_n_s_Get_Coords, __pyx_k_Get_Coords, sizeof(__pyx_k_Get_Coords), 0, 0, 1, 1}, + {&__pyx_n_s_Get_X, __pyx_k_Get_X, sizeof(__pyx_k_Get_X), 0, 0, 1, 1}, + {&__pyx_n_s_Get_XSize, __pyx_k_Get_XSize, sizeof(__pyx_k_Get_XSize), 0, 0, 1, 1}, + {&__pyx_n_s_Get_Y, __pyx_k_Get_Y, sizeof(__pyx_k_Get_Y), 0, 0, 1, 1}, + {&__pyx_n_s_Get_YSize, __pyx_k_Get_YSize, sizeof(__pyx_k_Get_YSize), 0, 0, 1, 1}, + {&__pyx_n_s_Get_Z, __pyx_k_Get_Z, sizeof(__pyx_k_Get_Z), 0, 0, 1, 1}, + {&__pyx_n_s_IP, __pyx_k_IP, sizeof(__pyx_k_IP), 0, 0, 1, 1}, + {&__pyx_n_s_IncrementCameraCoordX, __pyx_k_IncrementCameraCoordX, sizeof(__pyx_k_IncrementCameraCoordX), 0, 0, 1, 1}, + {&__pyx_n_s_IncrementCameraCoordY, __pyx_k_IncrementCameraCoordY, sizeof(__pyx_k_IncrementCameraCoordY), 0, 0, 1, 1}, + {&__pyx_n_s_KEYDOWN, __pyx_k_KEYDOWN, sizeof(__pyx_k_KEYDOWN), 0, 0, 1, 1}, + {&__pyx_n_s_K_SPACE, __pyx_k_K_SPACE, sizeof(__pyx_k_K_SPACE), 0, 0, 1, 1}, + {&__pyx_n_s_K_a, __pyx_k_K_a, sizeof(__pyx_k_K_a), 0, 0, 1, 1}, + {&__pyx_n_s_K_d, __pyx_k_K_d, sizeof(__pyx_k_K_d), 0, 0, 1, 1}, + {&__pyx_n_s_K_e, __pyx_k_K_e, sizeof(__pyx_k_K_e), 0, 0, 1, 1}, + {&__pyx_n_s_K_q, __pyx_k_K_q, sizeof(__pyx_k_K_q), 0, 0, 1, 1}, + {&__pyx_n_s_K_s, __pyx_k_K_s, sizeof(__pyx_k_K_s), 0, 0, 1, 1}, + {&__pyx_n_s_K_w, __pyx_k_K_w, sizeof(__pyx_k_K_w), 0, 0, 1, 1}, + {&__pyx_kp_s_L, __pyx_k_L, sizeof(__pyx_k_L), 0, 0, 1, 0}, + {&__pyx_n_s_LastBattery, __pyx_k_LastBattery, sizeof(__pyx_k_LastBattery), 0, 0, 1, 1}, + {&__pyx_n_s_LastCoords, __pyx_k_LastCoords, sizeof(__pyx_k_LastCoords), 0, 0, 1, 1}, + {&__pyx_n_s_Last_Refresh_Time, __pyx_k_Last_Refresh_Time, sizeof(__pyx_k_Last_Refresh_Time), 0, 0, 1, 1}, + {&__pyx_n_s_Level, __pyx_k_Level, sizeof(__pyx_k_Level), 0, 0, 1, 1}, + {&__pyx_n_s_LevelIndex, __pyx_k_LevelIndex, sizeof(__pyx_k_LevelIndex), 0, 0, 1, 1}, + {&__pyx_n_s_Login, __pyx_k_Login, sizeof(__pyx_k_Login), 0, 0, 1, 1}, + {&__pyx_n_s_M, __pyx_k_M, sizeof(__pyx_k_M), 0, 0, 1, 1}, + {&__pyx_n_s_MOUSEBUTTONDOWN, __pyx_k_MOUSEBUTTONDOWN, sizeof(__pyx_k_MOUSEBUTTONDOWN), 0, 0, 1, 1}, + {&__pyx_n_s_MakeDroneSprites, __pyx_k_MakeDroneSprites, sizeof(__pyx_k_MakeDroneSprites), 0, 0, 1, 1}, + {&__pyx_n_s_MakeFlightSprites, __pyx_k_MakeFlightSprites, sizeof(__pyx_k_MakeFlightSprites), 0, 0, 1, 1}, + {&__pyx_n_s_MakeSprites, __pyx_k_MakeSprites, sizeof(__pyx_k_MakeSprites), 0, 0, 1, 1}, + {&__pyx_n_s_MakeWaypointSprites, __pyx_k_MakeWaypointSprites, sizeof(__pyx_k_MakeWaypointSprites), 0, 0, 1, 1}, + {&__pyx_n_s_MakeZoneSprites, __pyx_k_MakeZoneSprites, sizeof(__pyx_k_MakeZoneSprites), 0, 0, 1, 1}, + {&__pyx_n_s_Make_Image, __pyx_k_Make_Image, sizeof(__pyx_k_Make_Image), 0, 0, 1, 1}, + {&__pyx_n_s_Make_Text, __pyx_k_Make_Text, sizeof(__pyx_k_Make_Text), 0, 0, 1, 1}, + {&__pyx_n_s_MaxCoords, __pyx_k_MaxCoords, sizeof(__pyx_k_MaxCoords), 0, 0, 1, 1}, + {&__pyx_n_s_Message, __pyx_k_Message, sizeof(__pyx_k_Message), 0, 0, 1, 1}, + {&__pyx_n_s_MinCoords, __pyx_k_MinCoords, sizeof(__pyx_k_MinCoords), 0, 0, 1, 1}, + {&__pyx_n_s_MonCamera, __pyx_k_MonCamera, sizeof(__pyx_k_MonCamera), 0, 0, 1, 1}, + {&__pyx_n_s_Monitor_Sprite, __pyx_k_Monitor_Sprite, sizeof(__pyx_k_Monitor_Sprite), 0, 0, 1, 1}, + {&__pyx_n_s_Monitor_Sprite_Get_Coords, __pyx_k_Monitor_Sprite_Get_Coords, sizeof(__pyx_k_Monitor_Sprite_Get_Coords), 0, 0, 1, 1}, + {&__pyx_n_s_Monitor_Sprite_Make_Image, __pyx_k_Monitor_Sprite_Make_Image, sizeof(__pyx_k_Monitor_Sprite_Make_Image), 0, 0, 1, 1}, + {&__pyx_n_s_Monitor_Sprite_Make_Text, __pyx_k_Monitor_Sprite_Make_Text, sizeof(__pyx_k_Monitor_Sprite_Make_Text), 0, 0, 1, 1}, + {&__pyx_n_s_Monitor_Sprite___init, __pyx_k_Monitor_Sprite___init, sizeof(__pyx_k_Monitor_Sprite___init), 0, 0, 1, 1}, + {&__pyx_kp_s_Monitor_exit_was_called, __pyx_k_Monitor_exit_was_called, sizeof(__pyx_k_Monitor_exit_was_called), 0, 0, 1, 0}, + {&__pyx_kp_s_N, __pyx_k_N, sizeof(__pyx_k_N), 0, 0, 1, 0}, + {&__pyx_n_s_N_2, __pyx_k_N_2, sizeof(__pyx_k_N_2), 0, 0, 1, 1}, + {&__pyx_n_s_NoFlyZone, __pyx_k_NoFlyZone, sizeof(__pyx_k_NoFlyZone), 0, 0, 1, 1}, + {&__pyx_n_s_NoFlyZones, __pyx_k_NoFlyZones, sizeof(__pyx_k_NoFlyZones), 0, 0, 1, 1}, + {&__pyx_n_s_Object, __pyx_k_Object, sizeof(__pyx_k_Object), 0, 0, 1, 1}, + {&__pyx_n_s_Object_Coords, __pyx_k_Object_Coords, sizeof(__pyx_k_Object_Coords), 0, 0, 1, 1}, + {&__pyx_n_s_Port, __pyx_k_Port, sizeof(__pyx_k_Port), 0, 0, 1, 1}, + {&__pyx_n_s_PosX, __pyx_k_PosX, sizeof(__pyx_k_PosX), 0, 0, 1, 1}, + {&__pyx_n_s_PosY, __pyx_k_PosY, sizeof(__pyx_k_PosY), 0, 0, 1, 1}, + {&__pyx_n_s_QUIT, __pyx_k_QUIT, sizeof(__pyx_k_QUIT), 0, 0, 1, 1}, + {&__pyx_n_s_RawDroneList, __pyx_k_RawDroneList, sizeof(__pyx_k_RawDroneList), 0, 0, 1, 1}, + {&__pyx_n_s_RawFlightList, __pyx_k_RawFlightList, sizeof(__pyx_k_RawFlightList), 0, 0, 1, 1}, + {&__pyx_n_s_RawWaypointList, __pyx_k_RawWaypointList, sizeof(__pyx_k_RawWaypointList), 0, 0, 1, 1}, + {&__pyx_n_s_RawZoneList, __pyx_k_RawZoneList, sizeof(__pyx_k_RawZoneList), 0, 0, 1, 1}, + {&__pyx_n_s_Refresh_Delay, __pyx_k_Refresh_Delay, sizeof(__pyx_k_Refresh_Delay), 0, 0, 1, 1}, + {&__pyx_kp_s_Refreshed_data, __pyx_k_Refreshed_data, sizeof(__pyx_k_Refreshed_data), 0, 0, 1, 0}, + {&__pyx_kp_s_Refreshing_data, __pyx_k_Refreshing_data, sizeof(__pyx_k_Refreshing_data), 0, 0, 1, 0}, + {&__pyx_n_s_ResetDrawObject, __pyx_k_ResetDrawObject, sizeof(__pyx_k_ResetDrawObject), 0, 0, 1, 1}, + {&__pyx_kp_s_ST, __pyx_k_ST, sizeof(__pyx_k_ST), 0, 0, 1, 0}, + {&__pyx_n_s_SetCameraCoords, __pyx_k_SetCameraCoords, sizeof(__pyx_k_SetCameraCoords), 0, 0, 1, 1}, + {&__pyx_n_s_SetZoom, __pyx_k_SetZoom, sizeof(__pyx_k_SetZoom), 0, 0, 1, 1}, + {&__pyx_n_s_Set_X, __pyx_k_Set_X, sizeof(__pyx_k_Set_X), 0, 0, 1, 1}, + {&__pyx_n_s_Set_XSize, __pyx_k_Set_XSize, sizeof(__pyx_k_Set_XSize), 0, 0, 1, 1}, + {&__pyx_n_s_Set_Y, __pyx_k_Set_Y, sizeof(__pyx_k_Set_Y), 0, 0, 1, 1}, + {&__pyx_n_s_Set_YSize, __pyx_k_Set_YSize, sizeof(__pyx_k_Set_YSize), 0, 0, 1, 1}, + {&__pyx_n_s_Size, __pyx_k_Size, sizeof(__pyx_k_Size), 0, 0, 1, 1}, + {&__pyx_n_s_Sprite, __pyx_k_Sprite, sizeof(__pyx_k_Sprite), 0, 0, 1, 1}, + {&__pyx_n_s_SpriteList, __pyx_k_SpriteList, sizeof(__pyx_k_SpriteList), 0, 0, 1, 1}, + {&__pyx_n_s_Sprites, __pyx_k_Sprites, sizeof(__pyx_k_Sprites), 0, 0, 1, 1}, + {&__pyx_n_s_StartCoord, __pyx_k_StartCoord, sizeof(__pyx_k_StartCoord), 0, 0, 1, 1}, + {&__pyx_n_s_StartCoordIndex, __pyx_k_StartCoordIndex, sizeof(__pyx_k_StartCoordIndex), 0, 0, 1, 1}, + {&__pyx_n_s_StartCoords, __pyx_k_StartCoords, sizeof(__pyx_k_StartCoords), 0, 0, 1, 1}, + {&__pyx_n_s_StartCoordsIndex, __pyx_k_StartCoordsIndex, sizeof(__pyx_k_StartCoordsIndex), 0, 0, 1, 1}, + {&__pyx_n_s_StartPoint, __pyx_k_StartPoint, sizeof(__pyx_k_StartPoint), 0, 0, 1, 1}, + {&__pyx_n_s_StartTime, __pyx_k_StartTime, sizeof(__pyx_k_StartTime), 0, 0, 1, 1}, + {&__pyx_n_s_StartTimeIndex, __pyx_k_StartTimeIndex, sizeof(__pyx_k_StartTimeIndex), 0, 0, 1, 1}, + {&__pyx_n_s_Sucess, __pyx_k_Sucess, sizeof(__pyx_k_Sucess), 0, 0, 1, 1}, + {&__pyx_n_s_Surface, __pyx_k_Surface, sizeof(__pyx_k_Surface), 0, 0, 1, 1}, + {&__pyx_n_s_Text, __pyx_k_Text, sizeof(__pyx_k_Text), 0, 0, 1, 1}, + {&__pyx_n_s_Type, __pyx_k_Type, sizeof(__pyx_k_Type), 0, 0, 1, 1}, + {&__pyx_kp_s_U, __pyx_k_U, sizeof(__pyx_k_U), 0, 0, 1, 0}, + {&__pyx_n_s_UpdateCameraSize, __pyx_k_UpdateCameraSize, sizeof(__pyx_k_UpdateCameraSize), 0, 0, 1, 1}, + {&__pyx_n_s_UserID, __pyx_k_UserID, sizeof(__pyx_k_UserID), 0, 0, 1, 1}, + {&__pyx_n_s_UserIDIndex, __pyx_k_UserIDIndex, sizeof(__pyx_k_UserIDIndex), 0, 0, 1, 1}, + {&__pyx_kp_s_W, __pyx_k_W, sizeof(__pyx_k_W), 0, 0, 1, 0}, + {&__pyx_n_s_Waypoint, __pyx_k_Waypoint, sizeof(__pyx_k_Waypoint), 0, 0, 1, 1}, + {&__pyx_n_s_WaypointList, __pyx_k_WaypointList, sizeof(__pyx_k_WaypointList), 0, 0, 1, 1}, + {&__pyx_n_s_WaypointNumber, __pyx_k_WaypointNumber, sizeof(__pyx_k_WaypointNumber), 0, 0, 1, 1}, + {&__pyx_n_s_WaypointNumberIndex, __pyx_k_WaypointNumberIndex, sizeof(__pyx_k_WaypointNumberIndex), 0, 0, 1, 1}, + {&__pyx_n_s_WaypointsAll, __pyx_k_WaypointsAll, sizeof(__pyx_k_WaypointsAll), 0, 0, 1, 1}, + {&__pyx_n_s_WaypointsMonitor, __pyx_k_WaypointsMonitor, sizeof(__pyx_k_WaypointsMonitor), 0, 0, 1, 1}, + {&__pyx_n_s_Y, __pyx_k_Y, sizeof(__pyx_k_Y), 0, 0, 1, 1}, + {&__pyx_kp_s_Z, __pyx_k_Z, sizeof(__pyx_k_Z), 0, 0, 1, 0}, + {&__pyx_n_s_Zini, __pyx_k_Zini, sizeof(__pyx_k_Zini), 0, 0, 1, 1}, + {&__pyx_n_s_Zone, __pyx_k_Zone, sizeof(__pyx_k_Zone), 0, 0, 1, 1}, + {&__pyx_n_s_ZoneID, __pyx_k_ZoneID, sizeof(__pyx_k_ZoneID), 0, 0, 1, 1}, + {&__pyx_n_s_ZoneIDIndex, __pyx_k_ZoneIDIndex, sizeof(__pyx_k_ZoneIDIndex), 0, 0, 1, 1}, + {&__pyx_n_s_ZoneList, __pyx_k_ZoneList, sizeof(__pyx_k_ZoneList), 0, 0, 1, 1}, + {&__pyx_n_s_Zoom, __pyx_k_Zoom, sizeof(__pyx_k_Zoom), 0, 0, 1, 1}, + {&__pyx_kp_s__2, __pyx_k__2, sizeof(__pyx_k__2), 0, 0, 1, 0}, + {&__pyx_kp_s__6, __pyx_k__6, sizeof(__pyx_k__6), 0, 0, 1, 0}, + {&__pyx_n_s_append, __pyx_k_append, sizeof(__pyx_k_append), 0, 0, 1, 1}, + {&__pyx_n_s_ast, __pyx_k_ast, sizeof(__pyx_k_ast), 0, 0, 1, 1}, + {&__pyx_n_s_blit, __pyx_k_blit, sizeof(__pyx_k_blit), 0, 0, 1, 1}, + {&__pyx_n_s_cline_in_traceback, __pyx_k_cline_in_traceback, sizeof(__pyx_k_cline_in_traceback), 0, 0, 1, 1}, + {&__pyx_n_s_clock, __pyx_k_clock, sizeof(__pyx_k_clock), 0, 0, 1, 1}, + {&__pyx_n_s_convert, __pyx_k_convert, sizeof(__pyx_k_convert), 0, 0, 1, 1}, + {&__pyx_n_s_copy, __pyx_k_copy, sizeof(__pyx_k_copy), 0, 0, 1, 1}, + {&__pyx_n_s_display, __pyx_k_display, sizeof(__pyx_k_display), 0, 0, 1, 1}, + {&__pyx_n_s_doc, __pyx_k_doc, sizeof(__pyx_k_doc), 0, 0, 1, 1}, + {&__pyx_n_s_e, __pyx_k_e, sizeof(__pyx_k_e), 0, 0, 1, 1}, + {&__pyx_n_s_end, __pyx_k_end, sizeof(__pyx_k_end), 0, 0, 1, 1}, + {&__pyx_n_s_event, __pyx_k_event, sizeof(__pyx_k_event), 0, 0, 1, 1}, + {&__pyx_n_s_exit, __pyx_k_exit, sizeof(__pyx_k_exit), 0, 0, 1, 1}, + {&__pyx_n_s_file, __pyx_k_file, sizeof(__pyx_k_file), 0, 0, 1, 1}, + {&__pyx_n_s_fill, __pyx_k_fill, sizeof(__pyx_k_fill), 0, 0, 1, 1}, + {&__pyx_n_s_flip, __pyx_k_flip, sizeof(__pyx_k_flip), 0, 0, 1, 1}, + {&__pyx_n_s_font, __pyx_k_font, sizeof(__pyx_k_font), 0, 0, 1, 1}, + {&__pyx_n_s_fontParameters, __pyx_k_fontParameters, sizeof(__pyx_k_fontParameters), 0, 0, 1, 1}, + {&__pyx_n_s_font_size, __pyx_k_font_size, sizeof(__pyx_k_font_size), 0, 0, 1, 1}, + {&__pyx_n_s_fonts, __pyx_k_fonts, sizeof(__pyx_k_fonts), 0, 0, 1, 1}, + {&__pyx_n_s_gameDisplay, __pyx_k_gameDisplay, sizeof(__pyx_k_gameDisplay), 0, 0, 1, 1}, + {&__pyx_n_s_get, __pyx_k_get, sizeof(__pyx_k_get), 0, 0, 1, 1}, + {&__pyx_n_s_get_fps, __pyx_k_get_fps, sizeof(__pyx_k_get_fps), 0, 0, 1, 1}, + {&__pyx_n_s_get_pressed, __pyx_k_get_pressed, sizeof(__pyx_k_get_pressed), 0, 0, 1, 1}, + {&__pyx_n_s_get_size, __pyx_k_get_size, sizeof(__pyx_k_get_size), 0, 0, 1, 1}, + {&__pyx_n_s_height, __pyx_k_height, sizeof(__pyx_k_height), 0, 0, 1, 1}, + {&__pyx_n_s_image, __pyx_k_image, sizeof(__pyx_k_image), 0, 0, 1, 1}, + {&__pyx_n_s_images, __pyx_k_images, sizeof(__pyx_k_images), 0, 0, 1, 1}, + {&__pyx_n_s_import, __pyx_k_import, sizeof(__pyx_k_import), 0, 0, 1, 1}, + {&__pyx_n_s_index, __pyx_k_index, sizeof(__pyx_k_index), 0, 0, 1, 1}, + {&__pyx_n_s_init, __pyx_k_init, sizeof(__pyx_k_init), 0, 0, 1, 1}, + {&__pyx_n_s_init_2, __pyx_k_init_2, sizeof(__pyx_k_init_2), 0, 0, 1, 1}, + {&__pyx_n_s_input, __pyx_k_input, sizeof(__pyx_k_input), 0, 0, 1, 1}, + {&__pyx_n_s_key, __pyx_k_key, sizeof(__pyx_k_key), 0, 0, 1, 1}, + {&__pyx_n_s_keys, __pyx_k_keys, sizeof(__pyx_k_keys), 0, 0, 1, 1}, + {&__pyx_n_s_literal_eval, __pyx_k_literal_eval, sizeof(__pyx_k_literal_eval), 0, 0, 1, 1}, + {&__pyx_n_s_main, __pyx_k_main, sizeof(__pyx_k_main), 0, 0, 1, 1}, + {&__pyx_n_s_metaclass, __pyx_k_metaclass, sizeof(__pyx_k_metaclass), 0, 0, 1, 1}, + {&__pyx_n_s_module, __pyx_k_module, sizeof(__pyx_k_module), 0, 0, 1, 1}, + {&__pyx_n_s_pop, __pyx_k_pop, sizeof(__pyx_k_pop), 0, 0, 1, 1}, + {&__pyx_n_s_prepare, __pyx_k_prepare, sizeof(__pyx_k_prepare), 0, 0, 1, 1}, + {&__pyx_n_s_pressed, __pyx_k_pressed, sizeof(__pyx_k_pressed), 0, 0, 1, 1}, + {&__pyx_n_s_print, __pyx_k_print, sizeof(__pyx_k_print), 0, 0, 1, 1}, + {&__pyx_n_s_pygame, __pyx_k_pygame, sizeof(__pyx_k_pygame), 0, 0, 1, 1}, + {&__pyx_n_s_qualname, __pyx_k_qualname, sizeof(__pyx_k_qualname), 0, 0, 1, 1}, + {&__pyx_n_s_quit, __pyx_k_quit, sizeof(__pyx_k_quit), 0, 0, 1, 1}, + {&__pyx_n_s_random, __pyx_k_random, sizeof(__pyx_k_random), 0, 0, 1, 1}, + {&__pyx_n_s_refresh, __pyx_k_refresh, sizeof(__pyx_k_refresh), 0, 0, 1, 1}, + {&__pyx_n_s_render, __pyx_k_render, sizeof(__pyx_k_render), 0, 0, 1, 1}, + {&__pyx_n_s_result, __pyx_k_result, sizeof(__pyx_k_result), 0, 0, 1, 1}, + {&__pyx_n_s_sample, __pyx_k_sample, sizeof(__pyx_k_sample), 0, 0, 1, 1}, + {&__pyx_n_s_self, __pyx_k_self, sizeof(__pyx_k_self), 0, 0, 1, 1}, + {&__pyx_n_s_set_mode, __pyx_k_set_mode, sizeof(__pyx_k_set_mode), 0, 0, 1, 1}, + {&__pyx_n_s_sprite, __pyx_k_sprite, sizeof(__pyx_k_sprite), 0, 0, 1, 1}, + {&__pyx_n_s_sys, __pyx_k_sys, sizeof(__pyx_k_sys), 0, 0, 1, 1}, + {&__pyx_n_s_test, __pyx_k_test, sizeof(__pyx_k_test), 0, 0, 1, 1}, + {&__pyx_n_s_text, __pyx_k_text, sizeof(__pyx_k_text), 0, 0, 1, 1}, + {&__pyx_n_s_texts, __pyx_k_texts, sizeof(__pyx_k_texts), 0, 0, 1, 1}, + {&__pyx_n_s_tick, __pyx_k_tick, sizeof(__pyx_k_tick), 0, 0, 1, 1}, + {&__pyx_n_s_time, __pyx_k_time, sizeof(__pyx_k_time), 0, 0, 1, 1}, + {&__pyx_n_s_type, __pyx_k_type, sizeof(__pyx_k_type), 0, 0, 1, 1}, + {&__pyx_n_s_upper, __pyx_k_upper, sizeof(__pyx_k_upper), 0, 0, 1, 1}, + {&__pyx_n_s_width, __pyx_k_width, sizeof(__pyx_k_width), 0, 0, 1, 1}, + {&__pyx_n_s_x, __pyx_k_x, sizeof(__pyx_k_x), 0, 0, 1, 1}, + {&__pyx_n_s_xSize, __pyx_k_xSize, sizeof(__pyx_k_xSize), 0, 0, 1, 1}, + {&__pyx_n_s_xpixel, __pyx_k_xpixel, sizeof(__pyx_k_xpixel), 0, 0, 1, 1}, + {&__pyx_n_s_y, __pyx_k_y, sizeof(__pyx_k_y), 0, 0, 1, 1}, + {&__pyx_n_s_ySize, __pyx_k_ySize, sizeof(__pyx_k_ySize), 0, 0, 1, 1}, + {&__pyx_n_s_ypixel, __pyx_k_ypixel, sizeof(__pyx_k_ypixel), 0, 0, 1, 1}, + {0, 0, 0, 0, 0, 0, 0} +}; +static int __Pyx_InitCachedBuiltins(void) { + __pyx_builtin_input = __Pyx_GetBuiltinName(__pyx_n_s_input); if (!__pyx_builtin_input) __PYX_ERR(0, 357, __pyx_L1_error) + return 0; + __pyx_L1_error:; + return -1; +} + +static int __Pyx_InitCachedConstants(void) { + __Pyx_RefNannyDeclarations + __Pyx_RefNannySetupContext("__Pyx_InitCachedConstants", 0); + + /* "CAStar/AATC_Monitor_Viewer.pyx":82 + * self.CameraCoord.Set_YSize ((self.MaxCoords.Get_Y() - self.MinCoords.Get_Y())/self.CameraZoom) + * + * def CameraWipe(self,Colour = (0,0,0)): # <<<<<<<<<<<<<< + * self.gameDisplay.fill(Colour) + * def ResetDrawObject(self): + */ + __pyx_tuple_ = PyTuple_Pack(3, __pyx_int_0, __pyx_int_0, __pyx_int_0); if (unlikely(!__pyx_tuple_)) __PYX_ERR(0, 82, __pyx_L1_error) + __Pyx_GOTREF(__pyx_tuple_); + __Pyx_GIVEREF(__pyx_tuple_); + + /* "CAStar/AATC_Monitor_Viewer.pyx":134 + * + * class Monitor_Sprite(pygame.sprite.Sprite): + * def __init__(self,CoordObject,Type = "",Text = "",Colour = (255,255,255)): # <<<<<<<<<<<<<< + * self.Coords = CoordObject + * self.Type = Type + */ + __pyx_tuple__3 = PyTuple_Pack(3, __pyx_int_255, __pyx_int_255, __pyx_int_255); if (unlikely(!__pyx_tuple__3)) __PYX_ERR(0, 134, __pyx_L1_error) + __Pyx_GOTREF(__pyx_tuple__3); + __Pyx_GIVEREF(__pyx_tuple__3); + + /* "CAStar/AATC_Monitor_Viewer.pyx":139 + * self.Text = Text + * self.Colour = Colour + * self.image = pygame.Surface((1,1)) # <<<<<<<<<<<<<< + * #self.Make_Image(2,2) # No longer needed, is similar to that above. + * + */ + __pyx_tuple__4 = PyTuple_Pack(2, __pyx_int_1, __pyx_int_1); if (unlikely(!__pyx_tuple__4)) __PYX_ERR(0, 139, __pyx_L1_error) + __Pyx_GOTREF(__pyx_tuple__4); + __Pyx_GIVEREF(__pyx_tuple__4); + __pyx_tuple__5 = PyTuple_Pack(1, __pyx_tuple__4); if (unlikely(!__pyx_tuple__5)) __PYX_ERR(0, 139, __pyx_L1_error) + __Pyx_GOTREF(__pyx_tuple__5); + __Pyx_GIVEREF(__pyx_tuple__5); + + /* "CAStar/AATC_Monitor_Viewer.pyx":173 + * DroneList = [] + * Columns = ast.literal_eval(Message) + * CoordIndex = Columns.index("LastCoords") # <<<<<<<<<<<<<< + * DroneIDIndex = Columns.index("DroneID") + * UserIDIndex = Columns.index("UserID") + */ + __pyx_tuple__7 = PyTuple_Pack(1, __pyx_n_s_LastCoords); if (unlikely(!__pyx_tuple__7)) __PYX_ERR(0, 173, __pyx_L1_error) + __Pyx_GOTREF(__pyx_tuple__7); + __Pyx_GIVEREF(__pyx_tuple__7); + + /* "CAStar/AATC_Monitor_Viewer.pyx":174 + * Columns = ast.literal_eval(Message) + * CoordIndex = Columns.index("LastCoords") + * DroneIDIndex = Columns.index("DroneID") # <<<<<<<<<<<<<< + * UserIDIndex = Columns.index("UserID") + * DroneNameIndex = Columns.index("DroneName") + */ + __pyx_tuple__8 = PyTuple_Pack(1, __pyx_n_s_DroneID); if (unlikely(!__pyx_tuple__8)) __PYX_ERR(0, 174, __pyx_L1_error) + __Pyx_GOTREF(__pyx_tuple__8); + __Pyx_GIVEREF(__pyx_tuple__8); + + /* "CAStar/AATC_Monitor_Viewer.pyx":175 + * CoordIndex = Columns.index("LastCoords") + * DroneIDIndex = Columns.index("DroneID") + * UserIDIndex = Columns.index("UserID") # <<<<<<<<<<<<<< + * DroneNameIndex = Columns.index("DroneName") + * BatteryIndex = Columns.index("LastBattery") + */ + __pyx_tuple__9 = PyTuple_Pack(1, __pyx_n_s_UserID); if (unlikely(!__pyx_tuple__9)) __PYX_ERR(0, 175, __pyx_L1_error) + __Pyx_GOTREF(__pyx_tuple__9); + __Pyx_GIVEREF(__pyx_tuple__9); + + /* "CAStar/AATC_Monitor_Viewer.pyx":176 + * DroneIDIndex = Columns.index("DroneID") + * UserIDIndex = Columns.index("UserID") + * DroneNameIndex = Columns.index("DroneName") # <<<<<<<<<<<<<< + * BatteryIndex = Columns.index("LastBattery") + * for Drone in RawDroneList: + */ + __pyx_tuple__10 = PyTuple_Pack(1, __pyx_n_s_DroneName); if (unlikely(!__pyx_tuple__10)) __PYX_ERR(0, 176, __pyx_L1_error) + __Pyx_GOTREF(__pyx_tuple__10); + __Pyx_GIVEREF(__pyx_tuple__10); + + /* "CAStar/AATC_Monitor_Viewer.pyx":177 + * UserIDIndex = Columns.index("UserID") + * DroneNameIndex = Columns.index("DroneName") + * BatteryIndex = Columns.index("LastBattery") # <<<<<<<<<<<<<< + * for Drone in RawDroneList: + * LastCoords = ast.literal_eval(Drone[CoordIndex]) + */ + __pyx_tuple__11 = PyTuple_Pack(1, __pyx_n_s_LastBattery); if (unlikely(!__pyx_tuple__11)) __PYX_ERR(0, 177, __pyx_L1_error) + __Pyx_GOTREF(__pyx_tuple__11); + __Pyx_GIVEREF(__pyx_tuple__11); + + /* "CAStar/AATC_Monitor_Viewer.pyx":190 + * FlightList = [] + * Columns = ast.literal_eval(Message) + * FlightIDIndex = Columns.index("FlightID") # <<<<<<<<<<<<<< + * DroneIDIndex = Columns.index("DroneID") + * StartCoordsIndex = Columns.index("StartCoords") + */ + __pyx_tuple__12 = PyTuple_Pack(1, __pyx_n_s_FlightID); if (unlikely(!__pyx_tuple__12)) __PYX_ERR(0, 190, __pyx_L1_error) + __Pyx_GOTREF(__pyx_tuple__12); + __Pyx_GIVEREF(__pyx_tuple__12); + + /* "CAStar/AATC_Monitor_Viewer.pyx":191 + * Columns = ast.literal_eval(Message) + * FlightIDIndex = Columns.index("FlightID") + * DroneIDIndex = Columns.index("DroneID") # <<<<<<<<<<<<<< + * StartCoordsIndex = Columns.index("StartCoords") + * EndCoordsIndex = Columns.index("EndCoords") + */ + __pyx_tuple__13 = PyTuple_Pack(1, __pyx_n_s_DroneID); if (unlikely(!__pyx_tuple__13)) __PYX_ERR(0, 191, __pyx_L1_error) + __Pyx_GOTREF(__pyx_tuple__13); + __Pyx_GIVEREF(__pyx_tuple__13); + + /* "CAStar/AATC_Monitor_Viewer.pyx":192 + * FlightIDIndex = Columns.index("FlightID") + * DroneIDIndex = Columns.index("DroneID") + * StartCoordsIndex = Columns.index("StartCoords") # <<<<<<<<<<<<<< + * EndCoordsIndex = Columns.index("EndCoords") + * StartTimeIndex = Columns.index("StartTime") + */ + __pyx_tuple__14 = PyTuple_Pack(1, __pyx_n_s_StartCoords); if (unlikely(!__pyx_tuple__14)) __PYX_ERR(0, 192, __pyx_L1_error) + __Pyx_GOTREF(__pyx_tuple__14); + __Pyx_GIVEREF(__pyx_tuple__14); + + /* "CAStar/AATC_Monitor_Viewer.pyx":193 + * DroneIDIndex = Columns.index("DroneID") + * StartCoordsIndex = Columns.index("StartCoords") + * EndCoordsIndex = Columns.index("EndCoords") # <<<<<<<<<<<<<< + * StartTimeIndex = Columns.index("StartTime") + * ETAIndex = Columns.index("ETA") + */ + __pyx_tuple__15 = PyTuple_Pack(1, __pyx_n_s_EndCoords); if (unlikely(!__pyx_tuple__15)) __PYX_ERR(0, 193, __pyx_L1_error) + __Pyx_GOTREF(__pyx_tuple__15); + __Pyx_GIVEREF(__pyx_tuple__15); + + /* "CAStar/AATC_Monitor_Viewer.pyx":194 + * StartCoordsIndex = Columns.index("StartCoords") + * EndCoordsIndex = Columns.index("EndCoords") + * StartTimeIndex = Columns.index("StartTime") # <<<<<<<<<<<<<< + * ETAIndex = Columns.index("ETA") + * EndTimeIndex = Columns.index("EndTime") + */ + __pyx_tuple__16 = PyTuple_Pack(1, __pyx_n_s_StartTime); if (unlikely(!__pyx_tuple__16)) __PYX_ERR(0, 194, __pyx_L1_error) + __Pyx_GOTREF(__pyx_tuple__16); + __Pyx_GIVEREF(__pyx_tuple__16); + + /* "CAStar/AATC_Monitor_Viewer.pyx":195 + * EndCoordsIndex = Columns.index("EndCoords") + * StartTimeIndex = Columns.index("StartTime") + * ETAIndex = Columns.index("ETA") # <<<<<<<<<<<<<< + * EndTimeIndex = Columns.index("EndTime") + * DistanceIndex = Columns.index("Distance") + */ + __pyx_tuple__17 = PyTuple_Pack(1, __pyx_n_s_ETA); if (unlikely(!__pyx_tuple__17)) __PYX_ERR(0, 195, __pyx_L1_error) + __Pyx_GOTREF(__pyx_tuple__17); + __Pyx_GIVEREF(__pyx_tuple__17); + + /* "CAStar/AATC_Monitor_Viewer.pyx":196 + * StartTimeIndex = Columns.index("StartTime") + * ETAIndex = Columns.index("ETA") + * EndTimeIndex = Columns.index("EndTime") # <<<<<<<<<<<<<< + * DistanceIndex = Columns.index("Distance") + * for Flight in RawFlightList: + */ + __pyx_tuple__18 = PyTuple_Pack(1, __pyx_n_s_EndTime); if (unlikely(!__pyx_tuple__18)) __PYX_ERR(0, 196, __pyx_L1_error) + __Pyx_GOTREF(__pyx_tuple__18); + __Pyx_GIVEREF(__pyx_tuple__18); + + /* "CAStar/AATC_Monitor_Viewer.pyx":197 + * ETAIndex = Columns.index("ETA") + * EndTimeIndex = Columns.index("EndTime") + * DistanceIndex = Columns.index("Distance") # <<<<<<<<<<<<<< + * for Flight in RawFlightList: + * #Start Sprite + */ + __pyx_tuple__19 = PyTuple_Pack(1, __pyx_n_s_Distance); if (unlikely(!__pyx_tuple__19)) __PYX_ERR(0, 197, __pyx_L1_error) + __Pyx_GOTREF(__pyx_tuple__19); + __Pyx_GIVEREF(__pyx_tuple__19); + + /* "CAStar/AATC_Monitor_Viewer.pyx":218 + * WaypointList = [] + * Columns = ast.literal_eval(Message) + * CoordIndex = Columns.index("Coords") # <<<<<<<<<<<<<< + * WaypointNumberIndex = Columns.index("WaypointNumber") + * FlightIDIndex = Columns.index("FlightID") + */ + __pyx_tuple__20 = PyTuple_Pack(1, __pyx_n_s_Coords); if (unlikely(!__pyx_tuple__20)) __PYX_ERR(0, 218, __pyx_L1_error) + __Pyx_GOTREF(__pyx_tuple__20); + __Pyx_GIVEREF(__pyx_tuple__20); + + /* "CAStar/AATC_Monitor_Viewer.pyx":219 + * Columns = ast.literal_eval(Message) + * CoordIndex = Columns.index("Coords") + * WaypointNumberIndex = Columns.index("WaypointNumber") # <<<<<<<<<<<<<< + * FlightIDIndex = Columns.index("FlightID") + * for Waypoint in RawWaypointList: + */ + __pyx_tuple__21 = PyTuple_Pack(1, __pyx_n_s_WaypointNumber); if (unlikely(!__pyx_tuple__21)) __PYX_ERR(0, 219, __pyx_L1_error) + __Pyx_GOTREF(__pyx_tuple__21); + __Pyx_GIVEREF(__pyx_tuple__21); + + /* "CAStar/AATC_Monitor_Viewer.pyx":220 + * CoordIndex = Columns.index("Coords") + * WaypointNumberIndex = Columns.index("WaypointNumber") + * FlightIDIndex = Columns.index("FlightID") # <<<<<<<<<<<<<< + * for Waypoint in RawWaypointList: + * Coords = ast.literal_eval(Waypoint[CoordIndex]) + */ + __pyx_tuple__22 = PyTuple_Pack(1, __pyx_n_s_FlightID); if (unlikely(!__pyx_tuple__22)) __PYX_ERR(0, 220, __pyx_L1_error) + __Pyx_GOTREF(__pyx_tuple__22); + __Pyx_GIVEREF(__pyx_tuple__22); + + /* "CAStar/AATC_Monitor_Viewer.pyx":232 + * ZoneList = [] + * Columns = ast.literal_eval(Message) + * StartCoordIndex = Columns.index("StartCoord") # <<<<<<<<<<<<<< + * EndCoordIndex = Columns.index("EndCoord") + * LevelIndex = Columns.index("Level") + */ + __pyx_tuple__23 = PyTuple_Pack(1, __pyx_n_s_StartCoord); if (unlikely(!__pyx_tuple__23)) __PYX_ERR(0, 232, __pyx_L1_error) + __Pyx_GOTREF(__pyx_tuple__23); + __Pyx_GIVEREF(__pyx_tuple__23); + + /* "CAStar/AATC_Monitor_Viewer.pyx":233 + * Columns = ast.literal_eval(Message) + * StartCoordIndex = Columns.index("StartCoord") + * EndCoordIndex = Columns.index("EndCoord") # <<<<<<<<<<<<<< + * LevelIndex = Columns.index("Level") + * ZoneIDIndex = Columns.index("ZoneID") + */ + __pyx_tuple__24 = PyTuple_Pack(1, __pyx_n_s_EndCoord); if (unlikely(!__pyx_tuple__24)) __PYX_ERR(0, 233, __pyx_L1_error) + __Pyx_GOTREF(__pyx_tuple__24); + __Pyx_GIVEREF(__pyx_tuple__24); + + /* "CAStar/AATC_Monitor_Viewer.pyx":234 + * StartCoordIndex = Columns.index("StartCoord") + * EndCoordIndex = Columns.index("EndCoord") + * LevelIndex = Columns.index("Level") # <<<<<<<<<<<<<< + * ZoneIDIndex = Columns.index("ZoneID") + * for Zone in RawZoneList: + */ + __pyx_tuple__25 = PyTuple_Pack(1, __pyx_n_s_Level); if (unlikely(!__pyx_tuple__25)) __PYX_ERR(0, 234, __pyx_L1_error) + __Pyx_GOTREF(__pyx_tuple__25); + __Pyx_GIVEREF(__pyx_tuple__25); + + /* "CAStar/AATC_Monitor_Viewer.pyx":235 + * EndCoordIndex = Columns.index("EndCoord") + * LevelIndex = Columns.index("Level") + * ZoneIDIndex = Columns.index("ZoneID") # <<<<<<<<<<<<<< + * for Zone in RawZoneList: + * StartCoords = ast.literal_eval(Zone[StartCoordIndex]) + */ + __pyx_tuple__26 = PyTuple_Pack(1, __pyx_n_s_ZoneID); if (unlikely(!__pyx_tuple__26)) __PYX_ERR(0, 235, __pyx_L1_error) + __Pyx_GOTREF(__pyx_tuple__26); + __Pyx_GIVEREF(__pyx_tuple__26); + + /* "CAStar/AATC_Monitor_Viewer.pyx":9 + * + * _images= {} + * def GetImage(xSize,ySize,Colour): #Efficiently get images # <<<<<<<<<<<<<< + * result = _images.get((xSize,ySize,Colour)) + * if result == None: + */ + __pyx_tuple__27 = PyTuple_Pack(4, __pyx_n_s_xSize, __pyx_n_s_ySize, __pyx_n_s_Colour, __pyx_n_s_result); if (unlikely(!__pyx_tuple__27)) __PYX_ERR(0, 9, __pyx_L1_error) + __Pyx_GOTREF(__pyx_tuple__27); + __Pyx_GIVEREF(__pyx_tuple__27); + __pyx_codeobj__28 = (PyObject*)__Pyx_PyCode_New(3, 0, 4, 0, 0, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__27, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_AATC_Monitor_Viewer_pyx, __pyx_n_s_GetImage, 9, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__28)) __PYX_ERR(0, 9, __pyx_L1_error) + + /* "CAStar/AATC_Monitor_Viewer.pyx":20 + * + * _texts= {} + * def GetText(Text,fontParameters,AA,Colour): #Efficiently get text # <<<<<<<<<<<<<< + * result = _texts.get((Text,fontParameters,AA,Colour)) + * if result == None: + */ + __pyx_tuple__29 = PyTuple_Pack(5, __pyx_n_s_Text, __pyx_n_s_fontParameters, __pyx_n_s_AA, __pyx_n_s_Colour, __pyx_n_s_result); if (unlikely(!__pyx_tuple__29)) __PYX_ERR(0, 20, __pyx_L1_error) + __Pyx_GOTREF(__pyx_tuple__29); + __Pyx_GIVEREF(__pyx_tuple__29); + __pyx_codeobj__30 = (PyObject*)__Pyx_PyCode_New(4, 0, 5, 0, 0, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__29, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_AATC_Monitor_Viewer_pyx, __pyx_n_s_GetText, 20, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__30)) __PYX_ERR(0, 20, __pyx_L1_error) + + /* "CAStar/AATC_Monitor_Viewer.pyx":31 + * + * _fonts = {} + * def GetFont(Font,Size): # <<<<<<<<<<<<<< + * result = _fonts.get((Font,Size)) + * if result == None: + */ + __pyx_tuple__31 = PyTuple_Pack(3, __pyx_n_s_Font, __pyx_n_s_Size, __pyx_n_s_result); if (unlikely(!__pyx_tuple__31)) __PYX_ERR(0, 31, __pyx_L1_error) + __Pyx_GOTREF(__pyx_tuple__31); + __Pyx_GIVEREF(__pyx_tuple__31); + __pyx_codeobj__32 = (PyObject*)__Pyx_PyCode_New(2, 0, 3, 0, 0, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__31, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_AATC_Monitor_Viewer_pyx, __pyx_n_s_GetFont, 31, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__32)) __PYX_ERR(0, 31, __pyx_L1_error) + + /* "CAStar/AATC_Monitor_Viewer.pyx":49 + * + * class Camera: + * def __init__(self,xpixel,ypixel,MinCoords,MaxCoords): #COORDS (X,Y,Z) # <<<<<<<<<<<<<< + * self.xpixel = xpixel + * self.ypixel = ypixel + */ + __pyx_tuple__33 = PyTuple_Pack(5, __pyx_n_s_self, __pyx_n_s_xpixel, __pyx_n_s_ypixel, __pyx_n_s_MinCoords, __pyx_n_s_MaxCoords); if (unlikely(!__pyx_tuple__33)) __PYX_ERR(0, 49, __pyx_L1_error) + __Pyx_GOTREF(__pyx_tuple__33); + __Pyx_GIVEREF(__pyx_tuple__33); + __pyx_codeobj__34 = (PyObject*)__Pyx_PyCode_New(5, 0, 5, 0, 0, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__33, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_AATC_Monitor_Viewer_pyx, __pyx_n_s_init_2, 49, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__34)) __PYX_ERR(0, 49, __pyx_L1_error) + + /* "CAStar/AATC_Monitor_Viewer.pyx":61 + * self.DrawObjects = [] + * + * def GetZoom(self): # <<<<<<<<<<<<<< + * return self.CameraZoom + * def SetZoom(self,Zoom): + */ + __pyx_tuple__35 = PyTuple_Pack(1, __pyx_n_s_self); if (unlikely(!__pyx_tuple__35)) __PYX_ERR(0, 61, __pyx_L1_error) + __Pyx_GOTREF(__pyx_tuple__35); + __Pyx_GIVEREF(__pyx_tuple__35); + __pyx_codeobj__36 = (PyObject*)__Pyx_PyCode_New(1, 0, 1, 0, 0, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__35, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_AATC_Monitor_Viewer_pyx, __pyx_n_s_GetZoom, 61, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__36)) __PYX_ERR(0, 61, __pyx_L1_error) + + /* "CAStar/AATC_Monitor_Viewer.pyx":63 + * def GetZoom(self): + * return self.CameraZoom + * def SetZoom(self,Zoom): # <<<<<<<<<<<<<< + * self.CameraZoom = Zoom + * + */ + __pyx_tuple__37 = PyTuple_Pack(2, __pyx_n_s_self, __pyx_n_s_Zoom); if (unlikely(!__pyx_tuple__37)) __PYX_ERR(0, 63, __pyx_L1_error) + __Pyx_GOTREF(__pyx_tuple__37); + __Pyx_GIVEREF(__pyx_tuple__37); + __pyx_codeobj__38 = (PyObject*)__Pyx_PyCode_New(2, 0, 2, 0, 0, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__37, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_AATC_Monitor_Viewer_pyx, __pyx_n_s_SetZoom, 63, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__38)) __PYX_ERR(0, 63, __pyx_L1_error) + + /* "CAStar/AATC_Monitor_Viewer.pyx":66 + * self.CameraZoom = Zoom + * + * def GetCameraCoords(self): # <<<<<<<<<<<<<< + * return self.CameraCoord + * def IncrementCameraCoordX(self,Amount): + */ + __pyx_tuple__39 = PyTuple_Pack(1, __pyx_n_s_self); if (unlikely(!__pyx_tuple__39)) __PYX_ERR(0, 66, __pyx_L1_error) + __Pyx_GOTREF(__pyx_tuple__39); + __Pyx_GIVEREF(__pyx_tuple__39); + __pyx_codeobj__40 = (PyObject*)__Pyx_PyCode_New(1, 0, 1, 0, 0, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__39, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_AATC_Monitor_Viewer_pyx, __pyx_n_s_GetCameraCoords, 66, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__40)) __PYX_ERR(0, 66, __pyx_L1_error) + + /* "CAStar/AATC_Monitor_Viewer.pyx":68 + * def GetCameraCoords(self): + * return self.CameraCoord + * def IncrementCameraCoordX(self,Amount): # <<<<<<<<<<<<<< + * self.CameraCoord.Set_X( Amount+self.CameraCoord.Get_X()) + * + */ + __pyx_tuple__41 = PyTuple_Pack(2, __pyx_n_s_self, __pyx_n_s_Amount); if (unlikely(!__pyx_tuple__41)) __PYX_ERR(0, 68, __pyx_L1_error) + __Pyx_GOTREF(__pyx_tuple__41); + __Pyx_GIVEREF(__pyx_tuple__41); + __pyx_codeobj__42 = (PyObject*)__Pyx_PyCode_New(2, 0, 2, 0, 0, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__41, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_AATC_Monitor_Viewer_pyx, __pyx_n_s_IncrementCameraCoordX, 68, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__42)) __PYX_ERR(0, 68, __pyx_L1_error) + + /* "CAStar/AATC_Monitor_Viewer.pyx":71 + * self.CameraCoord.Set_X( Amount+self.CameraCoord.Get_X()) + * + * def IncrementCameraCoordY(self,Amount): # <<<<<<<<<<<<<< + * self.CameraCoord.Set_Y( Amount+self.CameraCoord.Get_Y()) + * + */ + __pyx_tuple__43 = PyTuple_Pack(2, __pyx_n_s_self, __pyx_n_s_Amount); if (unlikely(!__pyx_tuple__43)) __PYX_ERR(0, 71, __pyx_L1_error) + __Pyx_GOTREF(__pyx_tuple__43); + __Pyx_GIVEREF(__pyx_tuple__43); + __pyx_codeobj__44 = (PyObject*)__Pyx_PyCode_New(2, 0, 2, 0, 0, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__43, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_AATC_Monitor_Viewer_pyx, __pyx_n_s_IncrementCameraCoordY, 71, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__44)) __PYX_ERR(0, 71, __pyx_L1_error) + + /* "CAStar/AATC_Monitor_Viewer.pyx":74 + * self.CameraCoord.Set_Y( Amount+self.CameraCoord.Get_Y()) + * + * def SetCameraCoords(self,CameraX,CameraY): # <<<<<<<<<<<<<< + * self.CameraCoord.Set_X( CameraX) + * self.CameraCoord.Set_Y(CameraY) + */ + __pyx_tuple__45 = PyTuple_Pack(3, __pyx_n_s_self, __pyx_n_s_CameraX, __pyx_n_s_CameraY); if (unlikely(!__pyx_tuple__45)) __PYX_ERR(0, 74, __pyx_L1_error) + __Pyx_GOTREF(__pyx_tuple__45); + __Pyx_GIVEREF(__pyx_tuple__45); + __pyx_codeobj__46 = (PyObject*)__Pyx_PyCode_New(3, 0, 3, 0, 0, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__45, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_AATC_Monitor_Viewer_pyx, __pyx_n_s_SetCameraCoords, 74, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__46)) __PYX_ERR(0, 74, __pyx_L1_error) + + /* "CAStar/AATC_Monitor_Viewer.pyx":78 + * self.CameraCoord.Set_Y(CameraY) + * + * def UpdateCameraSize(self): #Gets width of map divided by zoom level eg at zoom 1x it has whole map # <<<<<<<<<<<<<< + * self.CameraCoord.Set_XSize ((self.MaxCoords.Get_X() - self.MinCoords.Get_X())/self.CameraZoom) + * self.CameraCoord.Set_YSize ((self.MaxCoords.Get_Y() - self.MinCoords.Get_Y())/self.CameraZoom) + */ + __pyx_tuple__47 = PyTuple_Pack(1, __pyx_n_s_self); if (unlikely(!__pyx_tuple__47)) __PYX_ERR(0, 78, __pyx_L1_error) + __Pyx_GOTREF(__pyx_tuple__47); + __Pyx_GIVEREF(__pyx_tuple__47); + __pyx_codeobj__48 = (PyObject*)__Pyx_PyCode_New(1, 0, 1, 0, 0, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__47, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_AATC_Monitor_Viewer_pyx, __pyx_n_s_UpdateCameraSize, 78, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__48)) __PYX_ERR(0, 78, __pyx_L1_error) + + /* "CAStar/AATC_Monitor_Viewer.pyx":82 + * self.CameraCoord.Set_YSize ((self.MaxCoords.Get_Y() - self.MinCoords.Get_Y())/self.CameraZoom) + * + * def CameraWipe(self,Colour = (0,0,0)): # <<<<<<<<<<<<<< + * self.gameDisplay.fill(Colour) + * def ResetDrawObject(self): + */ + __pyx_tuple__49 = PyTuple_Pack(2, __pyx_n_s_self, __pyx_n_s_Colour); if (unlikely(!__pyx_tuple__49)) __PYX_ERR(0, 82, __pyx_L1_error) + __Pyx_GOTREF(__pyx_tuple__49); + __Pyx_GIVEREF(__pyx_tuple__49); + __pyx_codeobj__50 = (PyObject*)__Pyx_PyCode_New(2, 0, 2, 0, 0, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__49, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_AATC_Monitor_Viewer_pyx, __pyx_n_s_CameraWipe, 82, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__50)) __PYX_ERR(0, 82, __pyx_L1_error) + __pyx_tuple__51 = PyTuple_Pack(1, ((PyObject*)__pyx_tuple_)); if (unlikely(!__pyx_tuple__51)) __PYX_ERR(0, 82, __pyx_L1_error) + __Pyx_GOTREF(__pyx_tuple__51); + __Pyx_GIVEREF(__pyx_tuple__51); + + /* "CAStar/AATC_Monitor_Viewer.pyx":84 + * def CameraWipe(self,Colour = (0,0,0)): + * self.gameDisplay.fill(Colour) + * def ResetDrawObject(self): # <<<<<<<<<<<<<< + * self.DrawObjects = [] + * def AddDrawObject(self,Object,ForceDraw): + */ + __pyx_tuple__52 = PyTuple_Pack(1, __pyx_n_s_self); if (unlikely(!__pyx_tuple__52)) __PYX_ERR(0, 84, __pyx_L1_error) + __Pyx_GOTREF(__pyx_tuple__52); + __Pyx_GIVEREF(__pyx_tuple__52); + __pyx_codeobj__53 = (PyObject*)__Pyx_PyCode_New(1, 0, 1, 0, 0, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__52, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_AATC_Monitor_Viewer_pyx, __pyx_n_s_ResetDrawObject, 84, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__53)) __PYX_ERR(0, 84, __pyx_L1_error) + + /* "CAStar/AATC_Monitor_Viewer.pyx":86 + * def ResetDrawObject(self): + * self.DrawObjects = [] + * def AddDrawObject(self,Object,ForceDraw): # <<<<<<<<<<<<<< + * self.DrawObjects.append({"Object":Object,"ForceDraw":ForceDraw}) + * + */ + __pyx_tuple__54 = PyTuple_Pack(3, __pyx_n_s_self, __pyx_n_s_Object, __pyx_n_s_ForceDraw); if (unlikely(!__pyx_tuple__54)) __PYX_ERR(0, 86, __pyx_L1_error) + __Pyx_GOTREF(__pyx_tuple__54); + __Pyx_GIVEREF(__pyx_tuple__54); + __pyx_codeobj__55 = (PyObject*)__Pyx_PyCode_New(3, 0, 3, 0, 0, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__54, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_AATC_Monitor_Viewer_pyx, __pyx_n_s_AddDrawObject, 86, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__55)) __PYX_ERR(0, 86, __pyx_L1_error) + + /* "CAStar/AATC_Monitor_Viewer.pyx":89 + * self.DrawObjects.append({"Object":Object,"ForceDraw":ForceDraw}) + * + * def Get_Coord(self): # <<<<<<<<<<<<<< + * return self.CameraCoord + * + */ + __pyx_tuple__56 = PyTuple_Pack(1, __pyx_n_s_self); if (unlikely(!__pyx_tuple__56)) __PYX_ERR(0, 89, __pyx_L1_error) + __Pyx_GOTREF(__pyx_tuple__56); + __Pyx_GIVEREF(__pyx_tuple__56); + __pyx_codeobj__57 = (PyObject*)__Pyx_PyCode_New(1, 0, 1, 0, 0, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__56, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_AATC_Monitor_Viewer_pyx, __pyx_n_s_Get_Coord, 89, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__57)) __PYX_ERR(0, 89, __pyx_L1_error) + + /* "CAStar/AATC_Monitor_Viewer.pyx":92 + * return self.CameraCoord + * + * def Draw(self): # <<<<<<<<<<<<<< + * cdef float CameraEndX,CameraEndY,CameraX,CameraY,CameraXSize,CameraYSize,x,y,xSize,ySize,PosX,PosY + * cdef int width,height,xpixel,ypixel,font_size + */ + __pyx_tuple__58 = PyTuple_Pack(23, __pyx_n_s_self, __pyx_n_s_CameraEndX, __pyx_n_s_CameraEndY, __pyx_n_s_CameraX, __pyx_n_s_CameraY, __pyx_n_s_CameraXSize, __pyx_n_s_CameraYSize, __pyx_n_s_x, __pyx_n_s_y, __pyx_n_s_xSize, __pyx_n_s_ySize, __pyx_n_s_PosX, __pyx_n_s_PosY, __pyx_n_s_width, __pyx_n_s_height, __pyx_n_s_xpixel, __pyx_n_s_ypixel, __pyx_n_s_font_size, __pyx_n_s_DrawObject, __pyx_n_s_Object, __pyx_n_s_Object_Coords, __pyx_n_s_image, __pyx_n_s_font); if (unlikely(!__pyx_tuple__58)) __PYX_ERR(0, 92, __pyx_L1_error) + __Pyx_GOTREF(__pyx_tuple__58); + __Pyx_GIVEREF(__pyx_tuple__58); + __pyx_codeobj__59 = (PyObject*)__Pyx_PyCode_New(1, 0, 23, 0, 0, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__58, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_AATC_Monitor_Viewer_pyx, __pyx_n_s_Draw, 92, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__59)) __PYX_ERR(0, 92, __pyx_L1_error) + + /* "CAStar/AATC_Monitor_Viewer.pyx":134 + * + * class Monitor_Sprite(pygame.sprite.Sprite): + * def __init__(self,CoordObject,Type = "",Text = "",Colour = (255,255,255)): # <<<<<<<<<<<<<< + * self.Coords = CoordObject + * self.Type = Type + */ + __pyx_tuple__60 = PyTuple_Pack(5, __pyx_n_s_self, __pyx_n_s_CoordObject, __pyx_n_s_Type, __pyx_n_s_Text, __pyx_n_s_Colour); if (unlikely(!__pyx_tuple__60)) __PYX_ERR(0, 134, __pyx_L1_error) + __Pyx_GOTREF(__pyx_tuple__60); + __Pyx_GIVEREF(__pyx_tuple__60); + __pyx_codeobj__61 = (PyObject*)__Pyx_PyCode_New(5, 0, 5, 0, 0, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__60, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_AATC_Monitor_Viewer_pyx, __pyx_n_s_init_2, 134, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__61)) __PYX_ERR(0, 134, __pyx_L1_error) + __pyx_tuple__62 = PyTuple_Pack(3, ((PyObject*)__pyx_kp_s__2), ((PyObject*)__pyx_kp_s__2), ((PyObject*)__pyx_tuple__3)); if (unlikely(!__pyx_tuple__62)) __PYX_ERR(0, 134, __pyx_L1_error) + __Pyx_GOTREF(__pyx_tuple__62); + __Pyx_GIVEREF(__pyx_tuple__62); + + /* "CAStar/AATC_Monitor_Viewer.pyx":142 + * #self.Make_Image(2,2) # No longer needed, is similar to that above. + * + * def Make_Image(self, int width, int height): # <<<<<<<<<<<<<< + * if self.image.get_size() != (width,height): #If new image does not match with previous + * self.image = GetImage(width,height,self.Colour) + */ + __pyx_tuple__63 = PyTuple_Pack(3, __pyx_n_s_self, __pyx_n_s_width, __pyx_n_s_height); if (unlikely(!__pyx_tuple__63)) __PYX_ERR(0, 142, __pyx_L1_error) + __Pyx_GOTREF(__pyx_tuple__63); + __Pyx_GIVEREF(__pyx_tuple__63); + __pyx_codeobj__64 = (PyObject*)__Pyx_PyCode_New(3, 0, 3, 0, 0, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__63, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_AATC_Monitor_Viewer_pyx, __pyx_n_s_Make_Image, 142, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__64)) __PYX_ERR(0, 142, __pyx_L1_error) + + /* "CAStar/AATC_Monitor_Viewer.pyx":150 + * ## self.image.fill(self.Colour) + * + * def Make_Text(self,font): # <<<<<<<<<<<<<< + * text = str((self.Coords.Get_X(),self.Coords.Get_Y(),self.Coords.Get_Z())) +" " +self.Text + " "+ self.Type + * return GetText(text,font,False,self.Colour) + */ + __pyx_tuple__65 = PyTuple_Pack(3, __pyx_n_s_self, __pyx_n_s_font, __pyx_n_s_text); if (unlikely(!__pyx_tuple__65)) __PYX_ERR(0, 150, __pyx_L1_error) + __Pyx_GOTREF(__pyx_tuple__65); + __Pyx_GIVEREF(__pyx_tuple__65); + __pyx_codeobj__66 = (PyObject*)__Pyx_PyCode_New(2, 0, 3, 0, 0, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__65, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_AATC_Monitor_Viewer_pyx, __pyx_n_s_Make_Text, 150, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__66)) __PYX_ERR(0, 150, __pyx_L1_error) + + /* "CAStar/AATC_Monitor_Viewer.pyx":154 + * return GetText(text,font,False,self.Colour) + * + * def Get_Coords(self): # <<<<<<<<<<<<<< + * return self.Coords + * ## + */ + __pyx_tuple__67 = PyTuple_Pack(1, __pyx_n_s_self); if (unlikely(!__pyx_tuple__67)) __PYX_ERR(0, 154, __pyx_L1_error) + __Pyx_GOTREF(__pyx_tuple__67); + __Pyx_GIVEREF(__pyx_tuple__67); + __pyx_codeobj__68 = (PyObject*)__Pyx_PyCode_New(1, 0, 1, 0, 0, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__67, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_AATC_Monitor_Viewer_pyx, __pyx_n_s_Get_Coords, 154, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__68)) __PYX_ERR(0, 154, __pyx_L1_error) + + /* "CAStar/AATC_Monitor_Viewer.pyx":170 + * + * + * def MakeDroneSprites(Message,RawDroneList): # <<<<<<<<<<<<<< + * DroneList = [] + * Columns = ast.literal_eval(Message) + */ + __pyx_tuple__69 = PyTuple_Pack(15, __pyx_n_s_Message, __pyx_n_s_RawDroneList, __pyx_n_s_DroneList, __pyx_n_s_Columns, __pyx_n_s_CoordIndex, __pyx_n_s_DroneIDIndex, __pyx_n_s_UserIDIndex, __pyx_n_s_DroneNameIndex, __pyx_n_s_BatteryIndex, __pyx_n_s_Drone, __pyx_n_s_LastCoords, __pyx_n_s_Coord, __pyx_n_s_Text, __pyx_n_s_Colour, __pyx_n_s_Sprite); if (unlikely(!__pyx_tuple__69)) __PYX_ERR(0, 170, __pyx_L1_error) + __Pyx_GOTREF(__pyx_tuple__69); + __Pyx_GIVEREF(__pyx_tuple__69); + __pyx_codeobj__70 = (PyObject*)__Pyx_PyCode_New(2, 0, 15, 0, 0, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__69, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_AATC_Monitor_Viewer_pyx, __pyx_n_s_MakeDroneSprites, 170, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__70)) __PYX_ERR(0, 170, __pyx_L1_error) + + /* "CAStar/AATC_Monitor_Viewer.pyx":187 + * return DroneList + * + * def MakeFlightSprites(Message,RawFlightList): # <<<<<<<<<<<<<< + * FlightList = [] + * Columns = ast.literal_eval(Message) + */ + __pyx_tuple__71 = PyTuple_Pack(17, __pyx_n_s_Message, __pyx_n_s_RawFlightList, __pyx_n_s_FlightList, __pyx_n_s_Columns, __pyx_n_s_FlightIDIndex, __pyx_n_s_DroneIDIndex, __pyx_n_s_StartCoordsIndex, __pyx_n_s_EndCoordsIndex, __pyx_n_s_StartTimeIndex, __pyx_n_s_ETAIndex, __pyx_n_s_EndTimeIndex, __pyx_n_s_DistanceIndex, __pyx_n_s_Flight, __pyx_n_s_Coords, __pyx_n_s_Coord, __pyx_n_s_Text, __pyx_n_s_Colour); if (unlikely(!__pyx_tuple__71)) __PYX_ERR(0, 187, __pyx_L1_error) + __Pyx_GOTREF(__pyx_tuple__71); + __Pyx_GIVEREF(__pyx_tuple__71); + __pyx_codeobj__72 = (PyObject*)__Pyx_PyCode_New(2, 0, 17, 0, 0, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__71, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_AATC_Monitor_Viewer_pyx, __pyx_n_s_MakeFlightSprites, 187, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__72)) __PYX_ERR(0, 187, __pyx_L1_error) + + /* "CAStar/AATC_Monitor_Viewer.pyx":215 + * + * + * def MakeWaypointSprites(Message,RawWaypointList): # <<<<<<<<<<<<<< + * WaypointList = [] + * Columns = ast.literal_eval(Message) + */ + __pyx_tuple__73 = PyTuple_Pack(12, __pyx_n_s_Message, __pyx_n_s_RawWaypointList, __pyx_n_s_WaypointList, __pyx_n_s_Columns, __pyx_n_s_CoordIndex, __pyx_n_s_WaypointNumberIndex, __pyx_n_s_FlightIDIndex, __pyx_n_s_Waypoint, __pyx_n_s_Coords, __pyx_n_s_Coord, __pyx_n_s_Text, __pyx_n_s_Colour); if (unlikely(!__pyx_tuple__73)) __PYX_ERR(0, 215, __pyx_L1_error) + __Pyx_GOTREF(__pyx_tuple__73); + __Pyx_GIVEREF(__pyx_tuple__73); + __pyx_codeobj__74 = (PyObject*)__Pyx_PyCode_New(2, 0, 12, 0, 0, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__73, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_AATC_Monitor_Viewer_pyx, __pyx_n_s_MakeWaypointSprites, 215, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__74)) __PYX_ERR(0, 215, __pyx_L1_error) + + /* "CAStar/AATC_Monitor_Viewer.pyx":229 + * return WaypointList + * + * def MakeZoneSprites(Message,RawZoneList): # <<<<<<<<<<<<<< + * ZoneList = [] + * Columns = ast.literal_eval(Message) + */ + __pyx_tuple__75 = PyTuple_Pack(14, __pyx_n_s_Message, __pyx_n_s_RawZoneList, __pyx_n_s_ZoneList, __pyx_n_s_Columns, __pyx_n_s_StartCoordIndex, __pyx_n_s_EndCoordIndex, __pyx_n_s_LevelIndex, __pyx_n_s_ZoneIDIndex, __pyx_n_s_Zone, __pyx_n_s_StartCoords, __pyx_n_s_EndCoords, __pyx_n_s_Coord, __pyx_n_s_Text, __pyx_n_s_Colour); if (unlikely(!__pyx_tuple__75)) __PYX_ERR(0, 229, __pyx_L1_error) + __Pyx_GOTREF(__pyx_tuple__75); + __Pyx_GIVEREF(__pyx_tuple__75); + __pyx_codeobj__76 = (PyObject*)__Pyx_PyCode_New(2, 0, 14, 0, 0, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__75, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_AATC_Monitor_Viewer_pyx, __pyx_n_s_MakeZoneSprites, 229, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__76)) __PYX_ERR(0, 229, __pyx_L1_error) + + /* "CAStar/AATC_Monitor_Viewer.pyx":245 + * return ZoneList + * + * def MakeSprites(M): # <<<<<<<<<<<<<< + * print("Refreshing data") + * SpriteList = [] + */ + __pyx_tuple__77 = PyTuple_Pack(11, __pyx_n_s_M, __pyx_n_s_SpriteList, __pyx_n_s_Sucess, __pyx_n_s_Message, __pyx_n_s_DronesAll, __pyx_n_s_DronesMonitor, __pyx_n_s_FlightsAll, __pyx_n_s_FlightsMonitor, __pyx_n_s_WaypointsAll, __pyx_n_s_WaypointsMonitor, __pyx_n_s_NoFlyZones); if (unlikely(!__pyx_tuple__77)) __PYX_ERR(0, 245, __pyx_L1_error) + __Pyx_GOTREF(__pyx_tuple__77); + __Pyx_GIVEREF(__pyx_tuple__77); + __pyx_codeobj__78 = (PyObject*)__Pyx_PyCode_New(1, 0, 11, 0, 0, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__77, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_AATC_Monitor_Viewer_pyx, __pyx_n_s_MakeSprites, 245, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__78)) __PYX_ERR(0, 245, __pyx_L1_error) + + /* "CAStar/AATC_Monitor_Viewer.pyx":291 + * try: + * M = AATC_Monitor.CreateMonitorInterface(IP = "127.0.0.1",Port = 8001) + * M.Login("Zini","") # <<<<<<<<<<<<<< + * #Sucess,Message,Data = M.GetCoordDetails() + * #MinCoords,MaxCoords,StepCoords = Data[0],Data[1],Data[2] + */ + __pyx_tuple__79 = PyTuple_Pack(2, __pyx_n_s_Zini, __pyx_kp_s__2); if (unlikely(!__pyx_tuple__79)) __PYX_ERR(0, 291, __pyx_L1_error) + __Pyx_GOTREF(__pyx_tuple__79); + __Pyx_GIVEREF(__pyx_tuple__79); + + /* "CAStar/AATC_Monitor_Viewer.pyx":294 + * #Sucess,Message,Data = M.GetCoordDetails() + * #MinCoords,MaxCoords,StepCoords = Data[0],Data[1],Data[2] + * MinCoords,MaxCoords = AATC_Coordinate.Coordinate(0,0,0),AATC_Coordinate.Coordinate(1,1,50) # <<<<<<<<<<<<<< + * MonCamera = Camera(xpixel,ypixel,MinCoords,MaxCoords) + * while True: + */ + __pyx_tuple__80 = PyTuple_Pack(3, __pyx_int_0, __pyx_int_0, __pyx_int_0); if (unlikely(!__pyx_tuple__80)) __PYX_ERR(0, 294, __pyx_L1_error) + __Pyx_GOTREF(__pyx_tuple__80); + __Pyx_GIVEREF(__pyx_tuple__80); + __pyx_tuple__81 = PyTuple_Pack(3, __pyx_int_1, __pyx_int_1, __pyx_int_50); if (unlikely(!__pyx_tuple__81)) __PYX_ERR(0, 294, __pyx_L1_error) + __Pyx_GOTREF(__pyx_tuple__81); + __Pyx_GIVEREF(__pyx_tuple__81); + + /* "CAStar/AATC_Monitor_Viewer.pyx":350 + * MonCamera.Draw() + * pygame.display.flip() + * clock.tick(60) # <<<<<<<<<<<<<< + * + * + */ + __pyx_tuple__82 = PyTuple_Pack(1, __pyx_int_60); if (unlikely(!__pyx_tuple__82)) __PYX_ERR(0, 350, __pyx_L1_error) + __Pyx_GOTREF(__pyx_tuple__82); + __Pyx_GIVEREF(__pyx_tuple__82); + + /* "CAStar/AATC_Monitor_Viewer.pyx":357 + * print(e) + * print("An error occured, restarting main loop") + * Exit = input("Exit? Y/N").upper() # <<<<<<<<<<<<<< + * + * + */ + __pyx_tuple__83 = PyTuple_Pack(1, __pyx_kp_s_Exit_Y_N); if (unlikely(!__pyx_tuple__83)) __PYX_ERR(0, 357, __pyx_L1_error) + __Pyx_GOTREF(__pyx_tuple__83); + __Pyx_GIVEREF(__pyx_tuple__83); + __Pyx_RefNannyFinishContext(); + return 0; + __pyx_L1_error:; + __Pyx_RefNannyFinishContext(); + return -1; +} + +static int __Pyx_InitGlobals(void) { + if (__Pyx_InitStrings(__pyx_string_tab) < 0) __PYX_ERR(0, 1, __pyx_L1_error); + __pyx_float_0_01 = PyFloat_FromDouble(0.01); if (unlikely(!__pyx_float_0_01)) __PYX_ERR(0, 1, __pyx_L1_error) + __pyx_float_0_99 = PyFloat_FromDouble(0.99); if (unlikely(!__pyx_float_0_99)) __PYX_ERR(0, 1, __pyx_L1_error) + __pyx_float_1_01 = PyFloat_FromDouble(1.01); if (unlikely(!__pyx_float_1_01)) __PYX_ERR(0, 1, __pyx_L1_error) + __pyx_float_0_001 = PyFloat_FromDouble(0.001); if (unlikely(!__pyx_float_0_001)) __PYX_ERR(0, 1, __pyx_L1_error) + __pyx_float_0_0001 = PyFloat_FromDouble(0.0001); if (unlikely(!__pyx_float_0_0001)) __PYX_ERR(0, 1, __pyx_L1_error) + __pyx_float_0_00001 = PyFloat_FromDouble(0.00001); if (unlikely(!__pyx_float_0_00001)) __PYX_ERR(0, 1, __pyx_L1_error) + __pyx_float_neg_0_01 = PyFloat_FromDouble(-0.01); if (unlikely(!__pyx_float_neg_0_01)) __PYX_ERR(0, 1, __pyx_L1_error) + __pyx_int_0 = PyInt_FromLong(0); if (unlikely(!__pyx_int_0)) __PYX_ERR(0, 1, __pyx_L1_error) + __pyx_int_1 = PyInt_FromLong(1); if (unlikely(!__pyx_int_1)) __PYX_ERR(0, 1, __pyx_L1_error) + __pyx_int_50 = PyInt_FromLong(50); if (unlikely(!__pyx_int_50)) __PYX_ERR(0, 1, __pyx_L1_error) + __pyx_int_60 = PyInt_FromLong(60); if (unlikely(!__pyx_int_60)) __PYX_ERR(0, 1, __pyx_L1_error) + __pyx_int_255 = PyInt_FromLong(255); if (unlikely(!__pyx_int_255)) __PYX_ERR(0, 1, __pyx_L1_error) + __pyx_int_700 = PyInt_FromLong(700); if (unlikely(!__pyx_int_700)) __PYX_ERR(0, 1, __pyx_L1_error) + __pyx_int_1200 = PyInt_FromLong(1200); if (unlikely(!__pyx_int_1200)) __PYX_ERR(0, 1, __pyx_L1_error) + __pyx_int_8001 = PyInt_FromLong(8001); if (unlikely(!__pyx_int_8001)) __PYX_ERR(0, 1, __pyx_L1_error) + return 0; + __pyx_L1_error:; + return -1; +} + +#if PY_MAJOR_VERSION < 3 +PyMODINIT_FUNC initAATC_Monitor_Viewer(void); /*proto*/ +PyMODINIT_FUNC initAATC_Monitor_Viewer(void) +#else +PyMODINIT_FUNC PyInit_AATC_Monitor_Viewer(void); /*proto*/ +PyMODINIT_FUNC PyInit_AATC_Monitor_Viewer(void) +#endif +{ + PyObject *__pyx_t_1 = NULL; + PyObject *__pyx_t_2 = NULL; + PyObject *__pyx_t_3 = NULL; + PyObject *__pyx_t_4 = NULL; + int __pyx_t_5; + PyObject *__pyx_t_6 = NULL; + PyObject *__pyx_t_7 = NULL; + PyObject *__pyx_t_8 = NULL; + PyObject *__pyx_t_9 = NULL; + PyObject *__pyx_t_10 = NULL; + PyObject *__pyx_t_11 = NULL; + int __pyx_t_12; + PyObject *__pyx_t_13 = NULL; + Py_ssize_t __pyx_t_14; + PyObject *(*__pyx_t_15)(PyObject *); + int __pyx_t_16; + Py_ssize_t __pyx_t_17; + __Pyx_RefNannyDeclarations + #if CYTHON_REFNANNY + __Pyx_RefNanny = __Pyx_RefNannyImportAPI("refnanny"); + if (!__Pyx_RefNanny) { + PyErr_Clear(); + __Pyx_RefNanny = __Pyx_RefNannyImportAPI("Cython.Runtime.refnanny"); + if (!__Pyx_RefNanny) + Py_FatalError("failed to import 'refnanny' module"); + } + #endif + __Pyx_RefNannySetupContext("PyMODINIT_FUNC PyInit_AATC_Monitor_Viewer(void)", 0); + if (__Pyx_check_binary_version() < 0) __PYX_ERR(0, 1, __pyx_L1_error) + __pyx_empty_tuple = PyTuple_New(0); if (unlikely(!__pyx_empty_tuple)) __PYX_ERR(0, 1, __pyx_L1_error) + __pyx_empty_bytes = PyBytes_FromStringAndSize("", 0); if (unlikely(!__pyx_empty_bytes)) __PYX_ERR(0, 1, __pyx_L1_error) + __pyx_empty_unicode = PyUnicode_FromStringAndSize("", 0); if (unlikely(!__pyx_empty_unicode)) __PYX_ERR(0, 1, __pyx_L1_error) + #ifdef __Pyx_CyFunction_USED + if (__pyx_CyFunction_init() < 0) __PYX_ERR(0, 1, __pyx_L1_error) + #endif + #ifdef __Pyx_FusedFunction_USED + if (__pyx_FusedFunction_init() < 0) __PYX_ERR(0, 1, __pyx_L1_error) + #endif + #ifdef __Pyx_Coroutine_USED + if (__pyx_Coroutine_init() < 0) __PYX_ERR(0, 1, __pyx_L1_error) + #endif + #ifdef __Pyx_Generator_USED + if (__pyx_Generator_init() < 0) __PYX_ERR(0, 1, __pyx_L1_error) + #endif + #ifdef __Pyx_StopAsyncIteration_USED + if (__pyx_StopAsyncIteration_init() < 0) __PYX_ERR(0, 1, __pyx_L1_error) + #endif + /*--- Library function declarations ---*/ + /*--- Threads initialization code ---*/ + #if defined(__PYX_FORCE_INIT_THREADS) && __PYX_FORCE_INIT_THREADS + #ifdef WITH_THREAD /* Python build with threading support? */ + PyEval_InitThreads(); + #endif + #endif + /*--- Module creation code ---*/ + #if PY_MAJOR_VERSION < 3 + __pyx_m = Py_InitModule4("AATC_Monitor_Viewer", __pyx_methods, 0, 0, PYTHON_API_VERSION); Py_XINCREF(__pyx_m); + #else + __pyx_m = PyModule_Create(&__pyx_moduledef); + #endif + if (unlikely(!__pyx_m)) __PYX_ERR(0, 1, __pyx_L1_error) + __pyx_d = PyModule_GetDict(__pyx_m); if (unlikely(!__pyx_d)) __PYX_ERR(0, 1, __pyx_L1_error) + Py_INCREF(__pyx_d); + __pyx_b = PyImport_AddModule(__Pyx_BUILTIN_MODULE_NAME); if (unlikely(!__pyx_b)) __PYX_ERR(0, 1, __pyx_L1_error) + __pyx_cython_runtime = PyImport_AddModule((char *) "cython_runtime"); if (unlikely(!__pyx_cython_runtime)) __PYX_ERR(0, 1, __pyx_L1_error) + #if CYTHON_COMPILING_IN_PYPY + Py_INCREF(__pyx_b); + #endif + if (PyObject_SetAttrString(__pyx_m, "__builtins__", __pyx_b) < 0) __PYX_ERR(0, 1, __pyx_L1_error); + /*--- Initialize various global constants etc. ---*/ + if (__Pyx_InitGlobals() < 0) __PYX_ERR(0, 1, __pyx_L1_error) + #if PY_MAJOR_VERSION < 3 && (__PYX_DEFAULT_STRING_ENCODING_IS_ASCII || __PYX_DEFAULT_STRING_ENCODING_IS_DEFAULT) + if (__Pyx_init_sys_getdefaultencoding_params() < 0) __PYX_ERR(0, 1, __pyx_L1_error) + #endif + if (__pyx_module_is_main_CAStar__AATC_Monitor_Viewer) { + if (PyObject_SetAttrString(__pyx_m, "__name__", __pyx_n_s_main) < 0) __PYX_ERR(0, 1, __pyx_L1_error) + } + #if PY_MAJOR_VERSION >= 3 + { + PyObject *modules = PyImport_GetModuleDict(); if (unlikely(!modules)) __PYX_ERR(0, 1, __pyx_L1_error) + if (!PyDict_GetItemString(modules, "CAStar.AATC_Monitor_Viewer")) { + if (unlikely(PyDict_SetItemString(modules, "CAStar.AATC_Monitor_Viewer", __pyx_m) < 0)) __PYX_ERR(0, 1, __pyx_L1_error) + } + } + #endif + /*--- Builtin init code ---*/ + if (__Pyx_InitCachedBuiltins() < 0) __PYX_ERR(0, 1, __pyx_L1_error) + /*--- Constants init code ---*/ + if (__Pyx_InitCachedConstants() < 0) __PYX_ERR(0, 1, __pyx_L1_error) + /*--- Global init code ---*/ + /*--- Variable export code ---*/ + /*--- Function export code ---*/ + /*--- Type init code ---*/ + /*--- Type import code ---*/ + /*--- Variable import code ---*/ + /*--- Function import code ---*/ + /*--- Execution code ---*/ + #if defined(__Pyx_Generator_USED) || defined(__Pyx_Coroutine_USED) + if (__Pyx_patch_abc() < 0) __PYX_ERR(0, 1, __pyx_L1_error) + #endif + + /* "CAStar/AATC_Monitor_Viewer.pyx":4 + * #cython: boundscheck=False, wraparound=False, infer_types=True,cdivision = True + * + * import pygame,AATC_Monitor,time,ast,sys,random,AATC_Coordinate # <<<<<<<<<<<<<< + * + * pygame.init() + */ + __pyx_t_1 = __Pyx_Import(__pyx_n_s_pygame, 0, -1); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 4, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_1); + if (PyDict_SetItem(__pyx_d, __pyx_n_s_pygame, __pyx_t_1) < 0) __PYX_ERR(0, 4, __pyx_L1_error) + __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; + __pyx_t_1 = __Pyx_Import(__pyx_n_s_AATC_Monitor, 0, -1); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 4, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_1); + if (PyDict_SetItem(__pyx_d, __pyx_n_s_AATC_Monitor, __pyx_t_1) < 0) __PYX_ERR(0, 4, __pyx_L1_error) + __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; + __pyx_t_1 = __Pyx_Import(__pyx_n_s_time, 0, -1); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 4, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_1); + if (PyDict_SetItem(__pyx_d, __pyx_n_s_time, __pyx_t_1) < 0) __PYX_ERR(0, 4, __pyx_L1_error) + __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; + __pyx_t_1 = __Pyx_Import(__pyx_n_s_ast, 0, -1); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 4, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_1); + if (PyDict_SetItem(__pyx_d, __pyx_n_s_ast, __pyx_t_1) < 0) __PYX_ERR(0, 4, __pyx_L1_error) + __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; + __pyx_t_1 = __Pyx_Import(__pyx_n_s_sys, 0, -1); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 4, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_1); + if (PyDict_SetItem(__pyx_d, __pyx_n_s_sys, __pyx_t_1) < 0) __PYX_ERR(0, 4, __pyx_L1_error) + __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; + __pyx_t_1 = __Pyx_Import(__pyx_n_s_random, 0, -1); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 4, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_1); + if (PyDict_SetItem(__pyx_d, __pyx_n_s_random, __pyx_t_1) < 0) __PYX_ERR(0, 4, __pyx_L1_error) + __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; + __pyx_t_1 = __Pyx_Import(__pyx_n_s_AATC_Coordinate, 0, -1); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 4, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_1); + if (PyDict_SetItem(__pyx_d, __pyx_n_s_AATC_Coordinate, __pyx_t_1) < 0) __PYX_ERR(0, 4, __pyx_L1_error) + __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; + + /* "CAStar/AATC_Monitor_Viewer.pyx":6 + * import pygame,AATC_Monitor,time,ast,sys,random,AATC_Coordinate + * + * pygame.init() # <<<<<<<<<<<<<< + * + * _images= {} + */ + __pyx_t_2 = __Pyx_GetModuleGlobalName(__pyx_n_s_pygame); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 6, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_2); + __pyx_t_3 = __Pyx_PyObject_GetAttrStr(__pyx_t_2, __pyx_n_s_init); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 6, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_3); + __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; + __pyx_t_2 = NULL; + if (CYTHON_UNPACK_METHODS && unlikely(PyMethod_Check(__pyx_t_3))) { + __pyx_t_2 = PyMethod_GET_SELF(__pyx_t_3); + if (likely(__pyx_t_2)) { + PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_3); + __Pyx_INCREF(__pyx_t_2); + __Pyx_INCREF(function); + __Pyx_DECREF_SET(__pyx_t_3, function); + } + } + if (__pyx_t_2) { + __pyx_t_1 = __Pyx_PyObject_CallOneArg(__pyx_t_3, __pyx_t_2); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 6, __pyx_L1_error) + __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; + } else { + __pyx_t_1 = __Pyx_PyObject_CallNoArg(__pyx_t_3); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 6, __pyx_L1_error) + } + __Pyx_GOTREF(__pyx_t_1); + __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; + __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; + + /* "CAStar/AATC_Monitor_Viewer.pyx":8 + * pygame.init() + * + * _images= {} # <<<<<<<<<<<<<< + * def GetImage(xSize,ySize,Colour): #Efficiently get images + * result = _images.get((xSize,ySize,Colour)) + */ + __pyx_t_1 = PyDict_New(); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 8, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_1); + if (PyDict_SetItem(__pyx_d, __pyx_n_s_images, __pyx_t_1) < 0) __PYX_ERR(0, 8, __pyx_L1_error) + __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; + + /* "CAStar/AATC_Monitor_Viewer.pyx":9 + * + * _images= {} + * def GetImage(xSize,ySize,Colour): #Efficiently get images # <<<<<<<<<<<<<< + * result = _images.get((xSize,ySize,Colour)) + * if result == None: + */ + __pyx_t_1 = PyCFunction_NewEx(&__pyx_mdef_6CAStar_19AATC_Monitor_Viewer_1GetImage, NULL, __pyx_n_s_CAStar_AATC_Monitor_Viewer); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 9, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_1); + if (PyDict_SetItem(__pyx_d, __pyx_n_s_GetImage, __pyx_t_1) < 0) __PYX_ERR(0, 9, __pyx_L1_error) + __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; + + /* "CAStar/AATC_Monitor_Viewer.pyx":19 + * return result#_copy + * + * _texts= {} # <<<<<<<<<<<<<< + * def GetText(Text,fontParameters,AA,Colour): #Efficiently get text + * result = _texts.get((Text,fontParameters,AA,Colour)) + */ + __pyx_t_1 = PyDict_New(); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 19, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_1); + if (PyDict_SetItem(__pyx_d, __pyx_n_s_texts, __pyx_t_1) < 0) __PYX_ERR(0, 19, __pyx_L1_error) + __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; + + /* "CAStar/AATC_Monitor_Viewer.pyx":20 + * + * _texts= {} + * def GetText(Text,fontParameters,AA,Colour): #Efficiently get text # <<<<<<<<<<<<<< + * result = _texts.get((Text,fontParameters,AA,Colour)) + * if result == None: + */ + __pyx_t_1 = PyCFunction_NewEx(&__pyx_mdef_6CAStar_19AATC_Monitor_Viewer_3GetText, NULL, __pyx_n_s_CAStar_AATC_Monitor_Viewer); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 20, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_1); + if (PyDict_SetItem(__pyx_d, __pyx_n_s_GetText, __pyx_t_1) < 0) __PYX_ERR(0, 20, __pyx_L1_error) + __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; + + /* "CAStar/AATC_Monitor_Viewer.pyx":30 + * + * + * _fonts = {} # <<<<<<<<<<<<<< + * def GetFont(Font,Size): + * result = _fonts.get((Font,Size)) + */ + __pyx_t_1 = PyDict_New(); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 30, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_1); + if (PyDict_SetItem(__pyx_d, __pyx_n_s_fonts, __pyx_t_1) < 0) __PYX_ERR(0, 30, __pyx_L1_error) + __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; + + /* "CAStar/AATC_Monitor_Viewer.pyx":31 + * + * _fonts = {} + * def GetFont(Font,Size): # <<<<<<<<<<<<<< + * result = _fonts.get((Font,Size)) + * if result == None: + */ + __pyx_t_1 = PyCFunction_NewEx(&__pyx_mdef_6CAStar_19AATC_Monitor_Viewer_5GetFont, NULL, __pyx_n_s_CAStar_AATC_Monitor_Viewer); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 31, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_1); + if (PyDict_SetItem(__pyx_d, __pyx_n_s_GetFont, __pyx_t_1) < 0) __PYX_ERR(0, 31, __pyx_L1_error) + __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; + + /* "CAStar/AATC_Monitor_Viewer.pyx":48 + * + * + * class Camera: # <<<<<<<<<<<<<< + * def __init__(self,xpixel,ypixel,MinCoords,MaxCoords): #COORDS (X,Y,Z) + * self.xpixel = xpixel + */ + __pyx_t_1 = __Pyx_Py3MetaclassPrepare((PyObject *) NULL, __pyx_empty_tuple, __pyx_n_s_Camera, __pyx_n_s_Camera, (PyObject *) NULL, __pyx_n_s_CAStar_AATC_Monitor_Viewer, (PyObject *) NULL); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 48, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_1); + + /* "CAStar/AATC_Monitor_Viewer.pyx":49 + * + * class Camera: + * def __init__(self,xpixel,ypixel,MinCoords,MaxCoords): #COORDS (X,Y,Z) # <<<<<<<<<<<<<< + * self.xpixel = xpixel + * self.ypixel = ypixel + */ + __pyx_t_3 = __Pyx_CyFunction_NewEx(&__pyx_mdef_6CAStar_19AATC_Monitor_Viewer_6Camera_1__init__, 0, __pyx_n_s_Camera___init, NULL, __pyx_n_s_CAStar_AATC_Monitor_Viewer, __pyx_d, ((PyObject *)__pyx_codeobj__34)); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 49, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_3); + if (PyObject_SetItem(__pyx_t_1, __pyx_n_s_init_2, __pyx_t_3) < 0) __PYX_ERR(0, 49, __pyx_L1_error) + __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; + + /* "CAStar/AATC_Monitor_Viewer.pyx":61 + * self.DrawObjects = [] + * + * def GetZoom(self): # <<<<<<<<<<<<<< + * return self.CameraZoom + * def SetZoom(self,Zoom): + */ + __pyx_t_3 = __Pyx_CyFunction_NewEx(&__pyx_mdef_6CAStar_19AATC_Monitor_Viewer_6Camera_3GetZoom, 0, __pyx_n_s_Camera_GetZoom, NULL, __pyx_n_s_CAStar_AATC_Monitor_Viewer, __pyx_d, ((PyObject *)__pyx_codeobj__36)); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 61, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_3); + if (PyObject_SetItem(__pyx_t_1, __pyx_n_s_GetZoom, __pyx_t_3) < 0) __PYX_ERR(0, 61, __pyx_L1_error) + __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; + + /* "CAStar/AATC_Monitor_Viewer.pyx":63 + * def GetZoom(self): + * return self.CameraZoom + * def SetZoom(self,Zoom): # <<<<<<<<<<<<<< + * self.CameraZoom = Zoom + * + */ + __pyx_t_3 = __Pyx_CyFunction_NewEx(&__pyx_mdef_6CAStar_19AATC_Monitor_Viewer_6Camera_5SetZoom, 0, __pyx_n_s_Camera_SetZoom, NULL, __pyx_n_s_CAStar_AATC_Monitor_Viewer, __pyx_d, ((PyObject *)__pyx_codeobj__38)); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 63, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_3); + if (PyObject_SetItem(__pyx_t_1, __pyx_n_s_SetZoom, __pyx_t_3) < 0) __PYX_ERR(0, 63, __pyx_L1_error) + __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; + + /* "CAStar/AATC_Monitor_Viewer.pyx":66 + * self.CameraZoom = Zoom + * + * def GetCameraCoords(self): # <<<<<<<<<<<<<< + * return self.CameraCoord + * def IncrementCameraCoordX(self,Amount): + */ + __pyx_t_3 = __Pyx_CyFunction_NewEx(&__pyx_mdef_6CAStar_19AATC_Monitor_Viewer_6Camera_7GetCameraCoords, 0, __pyx_n_s_Camera_GetCameraCoords, NULL, __pyx_n_s_CAStar_AATC_Monitor_Viewer, __pyx_d, ((PyObject *)__pyx_codeobj__40)); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 66, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_3); + if (PyObject_SetItem(__pyx_t_1, __pyx_n_s_GetCameraCoords, __pyx_t_3) < 0) __PYX_ERR(0, 66, __pyx_L1_error) + __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; + + /* "CAStar/AATC_Monitor_Viewer.pyx":68 + * def GetCameraCoords(self): + * return self.CameraCoord + * def IncrementCameraCoordX(self,Amount): # <<<<<<<<<<<<<< + * self.CameraCoord.Set_X( Amount+self.CameraCoord.Get_X()) + * + */ + __pyx_t_3 = __Pyx_CyFunction_NewEx(&__pyx_mdef_6CAStar_19AATC_Monitor_Viewer_6Camera_9IncrementCameraCoordX, 0, __pyx_n_s_Camera_IncrementCameraCoordX, NULL, __pyx_n_s_CAStar_AATC_Monitor_Viewer, __pyx_d, ((PyObject *)__pyx_codeobj__42)); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 68, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_3); + if (PyObject_SetItem(__pyx_t_1, __pyx_n_s_IncrementCameraCoordX, __pyx_t_3) < 0) __PYX_ERR(0, 68, __pyx_L1_error) + __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; + + /* "CAStar/AATC_Monitor_Viewer.pyx":71 + * self.CameraCoord.Set_X( Amount+self.CameraCoord.Get_X()) + * + * def IncrementCameraCoordY(self,Amount): # <<<<<<<<<<<<<< + * self.CameraCoord.Set_Y( Amount+self.CameraCoord.Get_Y()) + * + */ + __pyx_t_3 = __Pyx_CyFunction_NewEx(&__pyx_mdef_6CAStar_19AATC_Monitor_Viewer_6Camera_11IncrementCameraCoordY, 0, __pyx_n_s_Camera_IncrementCameraCoordY, NULL, __pyx_n_s_CAStar_AATC_Monitor_Viewer, __pyx_d, ((PyObject *)__pyx_codeobj__44)); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 71, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_3); + if (PyObject_SetItem(__pyx_t_1, __pyx_n_s_IncrementCameraCoordY, __pyx_t_3) < 0) __PYX_ERR(0, 71, __pyx_L1_error) + __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; + + /* "CAStar/AATC_Monitor_Viewer.pyx":74 + * self.CameraCoord.Set_Y( Amount+self.CameraCoord.Get_Y()) + * + * def SetCameraCoords(self,CameraX,CameraY): # <<<<<<<<<<<<<< + * self.CameraCoord.Set_X( CameraX) + * self.CameraCoord.Set_Y(CameraY) + */ + __pyx_t_3 = __Pyx_CyFunction_NewEx(&__pyx_mdef_6CAStar_19AATC_Monitor_Viewer_6Camera_13SetCameraCoords, 0, __pyx_n_s_Camera_SetCameraCoords, NULL, __pyx_n_s_CAStar_AATC_Monitor_Viewer, __pyx_d, ((PyObject *)__pyx_codeobj__46)); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 74, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_3); + if (PyObject_SetItem(__pyx_t_1, __pyx_n_s_SetCameraCoords, __pyx_t_3) < 0) __PYX_ERR(0, 74, __pyx_L1_error) + __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; + + /* "CAStar/AATC_Monitor_Viewer.pyx":78 + * self.CameraCoord.Set_Y(CameraY) + * + * def UpdateCameraSize(self): #Gets width of map divided by zoom level eg at zoom 1x it has whole map # <<<<<<<<<<<<<< + * self.CameraCoord.Set_XSize ((self.MaxCoords.Get_X() - self.MinCoords.Get_X())/self.CameraZoom) + * self.CameraCoord.Set_YSize ((self.MaxCoords.Get_Y() - self.MinCoords.Get_Y())/self.CameraZoom) + */ + __pyx_t_3 = __Pyx_CyFunction_NewEx(&__pyx_mdef_6CAStar_19AATC_Monitor_Viewer_6Camera_15UpdateCameraSize, 0, __pyx_n_s_Camera_UpdateCameraSize, NULL, __pyx_n_s_CAStar_AATC_Monitor_Viewer, __pyx_d, ((PyObject *)__pyx_codeobj__48)); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 78, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_3); + if (PyObject_SetItem(__pyx_t_1, __pyx_n_s_UpdateCameraSize, __pyx_t_3) < 0) __PYX_ERR(0, 78, __pyx_L1_error) + __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; + + /* "CAStar/AATC_Monitor_Viewer.pyx":82 + * self.CameraCoord.Set_YSize ((self.MaxCoords.Get_Y() - self.MinCoords.Get_Y())/self.CameraZoom) + * + * def CameraWipe(self,Colour = (0,0,0)): # <<<<<<<<<<<<<< + * self.gameDisplay.fill(Colour) + * def ResetDrawObject(self): + */ + __pyx_t_3 = __Pyx_CyFunction_NewEx(&__pyx_mdef_6CAStar_19AATC_Monitor_Viewer_6Camera_17CameraWipe, 0, __pyx_n_s_Camera_CameraWipe, NULL, __pyx_n_s_CAStar_AATC_Monitor_Viewer, __pyx_d, ((PyObject *)__pyx_codeobj__50)); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 82, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_3); + __Pyx_CyFunction_SetDefaultsTuple(__pyx_t_3, __pyx_tuple__51); + if (PyObject_SetItem(__pyx_t_1, __pyx_n_s_CameraWipe, __pyx_t_3) < 0) __PYX_ERR(0, 82, __pyx_L1_error) + __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; + + /* "CAStar/AATC_Monitor_Viewer.pyx":84 + * def CameraWipe(self,Colour = (0,0,0)): + * self.gameDisplay.fill(Colour) + * def ResetDrawObject(self): # <<<<<<<<<<<<<< + * self.DrawObjects = [] + * def AddDrawObject(self,Object,ForceDraw): + */ + __pyx_t_3 = __Pyx_CyFunction_NewEx(&__pyx_mdef_6CAStar_19AATC_Monitor_Viewer_6Camera_19ResetDrawObject, 0, __pyx_n_s_Camera_ResetDrawObject, NULL, __pyx_n_s_CAStar_AATC_Monitor_Viewer, __pyx_d, ((PyObject *)__pyx_codeobj__53)); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 84, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_3); + if (PyObject_SetItem(__pyx_t_1, __pyx_n_s_ResetDrawObject, __pyx_t_3) < 0) __PYX_ERR(0, 84, __pyx_L1_error) + __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; + + /* "CAStar/AATC_Monitor_Viewer.pyx":86 + * def ResetDrawObject(self): + * self.DrawObjects = [] + * def AddDrawObject(self,Object,ForceDraw): # <<<<<<<<<<<<<< + * self.DrawObjects.append({"Object":Object,"ForceDraw":ForceDraw}) + * + */ + __pyx_t_3 = __Pyx_CyFunction_NewEx(&__pyx_mdef_6CAStar_19AATC_Monitor_Viewer_6Camera_21AddDrawObject, 0, __pyx_n_s_Camera_AddDrawObject, NULL, __pyx_n_s_CAStar_AATC_Monitor_Viewer, __pyx_d, ((PyObject *)__pyx_codeobj__55)); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 86, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_3); + if (PyObject_SetItem(__pyx_t_1, __pyx_n_s_AddDrawObject, __pyx_t_3) < 0) __PYX_ERR(0, 86, __pyx_L1_error) + __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; + + /* "CAStar/AATC_Monitor_Viewer.pyx":89 + * self.DrawObjects.append({"Object":Object,"ForceDraw":ForceDraw}) + * + * def Get_Coord(self): # <<<<<<<<<<<<<< + * return self.CameraCoord + * + */ + __pyx_t_3 = __Pyx_CyFunction_NewEx(&__pyx_mdef_6CAStar_19AATC_Monitor_Viewer_6Camera_23Get_Coord, 0, __pyx_n_s_Camera_Get_Coord, NULL, __pyx_n_s_CAStar_AATC_Monitor_Viewer, __pyx_d, ((PyObject *)__pyx_codeobj__57)); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 89, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_3); + if (PyObject_SetItem(__pyx_t_1, __pyx_n_s_Get_Coord, __pyx_t_3) < 0) __PYX_ERR(0, 89, __pyx_L1_error) + __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; + + /* "CAStar/AATC_Monitor_Viewer.pyx":92 + * return self.CameraCoord + * + * def Draw(self): # <<<<<<<<<<<<<< + * cdef float CameraEndX,CameraEndY,CameraX,CameraY,CameraXSize,CameraYSize,x,y,xSize,ySize,PosX,PosY + * cdef int width,height,xpixel,ypixel,font_size + */ + __pyx_t_3 = __Pyx_CyFunction_NewEx(&__pyx_mdef_6CAStar_19AATC_Monitor_Viewer_6Camera_25Draw, 0, __pyx_n_s_Camera_Draw, NULL, __pyx_n_s_CAStar_AATC_Monitor_Viewer, __pyx_d, ((PyObject *)__pyx_codeobj__59)); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 92, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_3); + if (PyObject_SetItem(__pyx_t_1, __pyx_n_s_Draw, __pyx_t_3) < 0) __PYX_ERR(0, 92, __pyx_L1_error) + __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; + + /* "CAStar/AATC_Monitor_Viewer.pyx":48 + * + * + * class Camera: # <<<<<<<<<<<<<< + * def __init__(self,xpixel,ypixel,MinCoords,MaxCoords): #COORDS (X,Y,Z) + * self.xpixel = xpixel + */ + __pyx_t_3 = __Pyx_Py3ClassCreate(((PyObject*)&__Pyx_DefaultClassType), __pyx_n_s_Camera, __pyx_empty_tuple, __pyx_t_1, NULL, 0, 1); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 48, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_3); + if (PyDict_SetItem(__pyx_d, __pyx_n_s_Camera, __pyx_t_3) < 0) __PYX_ERR(0, 48, __pyx_L1_error) + __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; + __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; + + /* "CAStar/AATC_Monitor_Viewer.pyx":133 + * + * + * class Monitor_Sprite(pygame.sprite.Sprite): # <<<<<<<<<<<<<< + * def __init__(self,CoordObject,Type = "",Text = "",Colour = (255,255,255)): + * self.Coords = CoordObject + */ + __pyx_t_1 = __Pyx_GetModuleGlobalName(__pyx_n_s_pygame); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 133, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_1); + __pyx_t_3 = __Pyx_PyObject_GetAttrStr(__pyx_t_1, __pyx_n_s_sprite); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 133, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_3); + __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; + __pyx_t_1 = __Pyx_PyObject_GetAttrStr(__pyx_t_3, __pyx_n_s_Sprite); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 133, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_1); + __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; + __pyx_t_3 = PyTuple_New(1); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 133, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_3); + __Pyx_GIVEREF(__pyx_t_1); + PyTuple_SET_ITEM(__pyx_t_3, 0, __pyx_t_1); + __pyx_t_1 = 0; + __pyx_t_1 = __Pyx_CalculateMetaclass(NULL, __pyx_t_3); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 133, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_1); + __pyx_t_2 = __Pyx_Py3MetaclassPrepare(__pyx_t_1, __pyx_t_3, __pyx_n_s_Monitor_Sprite, __pyx_n_s_Monitor_Sprite, (PyObject *) NULL, __pyx_n_s_CAStar_AATC_Monitor_Viewer, (PyObject *) NULL); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 133, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_2); + + /* "CAStar/AATC_Monitor_Viewer.pyx":134 + * + * class Monitor_Sprite(pygame.sprite.Sprite): + * def __init__(self,CoordObject,Type = "",Text = "",Colour = (255,255,255)): # <<<<<<<<<<<<<< + * self.Coords = CoordObject + * self.Type = Type + */ + __pyx_t_4 = __Pyx_CyFunction_NewEx(&__pyx_mdef_6CAStar_19AATC_Monitor_Viewer_14Monitor_Sprite_1__init__, 0, __pyx_n_s_Monitor_Sprite___init, NULL, __pyx_n_s_CAStar_AATC_Monitor_Viewer, __pyx_d, ((PyObject *)__pyx_codeobj__61)); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 134, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_4); + __Pyx_CyFunction_SetDefaultsTuple(__pyx_t_4, __pyx_tuple__62); + if (PyObject_SetItem(__pyx_t_2, __pyx_n_s_init_2, __pyx_t_4) < 0) __PYX_ERR(0, 134, __pyx_L1_error) + __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0; + + /* "CAStar/AATC_Monitor_Viewer.pyx":142 + * #self.Make_Image(2,2) # No longer needed, is similar to that above. + * + * def Make_Image(self, int width, int height): # <<<<<<<<<<<<<< + * if self.image.get_size() != (width,height): #If new image does not match with previous + * self.image = GetImage(width,height,self.Colour) + */ + __pyx_t_4 = __Pyx_CyFunction_NewEx(&__pyx_mdef_6CAStar_19AATC_Monitor_Viewer_14Monitor_Sprite_3Make_Image, 0, __pyx_n_s_Monitor_Sprite_Make_Image, NULL, __pyx_n_s_CAStar_AATC_Monitor_Viewer, __pyx_d, ((PyObject *)__pyx_codeobj__64)); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 142, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_4); + if (PyObject_SetItem(__pyx_t_2, __pyx_n_s_Make_Image, __pyx_t_4) < 0) __PYX_ERR(0, 142, __pyx_L1_error) + __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0; + + /* "CAStar/AATC_Monitor_Viewer.pyx":150 + * ## self.image.fill(self.Colour) + * + * def Make_Text(self,font): # <<<<<<<<<<<<<< + * text = str((self.Coords.Get_X(),self.Coords.Get_Y(),self.Coords.Get_Z())) +" " +self.Text + " "+ self.Type + * return GetText(text,font,False,self.Colour) + */ + __pyx_t_4 = __Pyx_CyFunction_NewEx(&__pyx_mdef_6CAStar_19AATC_Monitor_Viewer_14Monitor_Sprite_5Make_Text, 0, __pyx_n_s_Monitor_Sprite_Make_Text, NULL, __pyx_n_s_CAStar_AATC_Monitor_Viewer, __pyx_d, ((PyObject *)__pyx_codeobj__66)); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 150, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_4); + if (PyObject_SetItem(__pyx_t_2, __pyx_n_s_Make_Text, __pyx_t_4) < 0) __PYX_ERR(0, 150, __pyx_L1_error) + __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0; + + /* "CAStar/AATC_Monitor_Viewer.pyx":154 + * return GetText(text,font,False,self.Colour) + * + * def Get_Coords(self): # <<<<<<<<<<<<<< + * return self.Coords + * ## + */ + __pyx_t_4 = __Pyx_CyFunction_NewEx(&__pyx_mdef_6CAStar_19AATC_Monitor_Viewer_14Monitor_Sprite_7Get_Coords, 0, __pyx_n_s_Monitor_Sprite_Get_Coords, NULL, __pyx_n_s_CAStar_AATC_Monitor_Viewer, __pyx_d, ((PyObject *)__pyx_codeobj__68)); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 154, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_4); + if (PyObject_SetItem(__pyx_t_2, __pyx_n_s_Get_Coords, __pyx_t_4) < 0) __PYX_ERR(0, 154, __pyx_L1_error) + __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0; + + /* "CAStar/AATC_Monitor_Viewer.pyx":133 + * + * + * class Monitor_Sprite(pygame.sprite.Sprite): # <<<<<<<<<<<<<< + * def __init__(self,CoordObject,Type = "",Text = "",Colour = (255,255,255)): + * self.Coords = CoordObject + */ + __pyx_t_4 = __Pyx_Py3ClassCreate(__pyx_t_1, __pyx_n_s_Monitor_Sprite, __pyx_t_3, __pyx_t_2, NULL, 0, 1); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 133, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_4); + if (PyDict_SetItem(__pyx_d, __pyx_n_s_Monitor_Sprite, __pyx_t_4) < 0) __PYX_ERR(0, 133, __pyx_L1_error) + __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0; + __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; + __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; + __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; + + /* "CAStar/AATC_Monitor_Viewer.pyx":170 + * + * + * def MakeDroneSprites(Message,RawDroneList): # <<<<<<<<<<<<<< + * DroneList = [] + * Columns = ast.literal_eval(Message) + */ + __pyx_t_3 = PyCFunction_NewEx(&__pyx_mdef_6CAStar_19AATC_Monitor_Viewer_7MakeDroneSprites, NULL, __pyx_n_s_CAStar_AATC_Monitor_Viewer); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 170, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_3); + if (PyDict_SetItem(__pyx_d, __pyx_n_s_MakeDroneSprites, __pyx_t_3) < 0) __PYX_ERR(0, 170, __pyx_L1_error) + __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; + + /* "CAStar/AATC_Monitor_Viewer.pyx":187 + * return DroneList + * + * def MakeFlightSprites(Message,RawFlightList): # <<<<<<<<<<<<<< + * FlightList = [] + * Columns = ast.literal_eval(Message) + */ + __pyx_t_3 = PyCFunction_NewEx(&__pyx_mdef_6CAStar_19AATC_Monitor_Viewer_9MakeFlightSprites, NULL, __pyx_n_s_CAStar_AATC_Monitor_Viewer); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 187, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_3); + if (PyDict_SetItem(__pyx_d, __pyx_n_s_MakeFlightSprites, __pyx_t_3) < 0) __PYX_ERR(0, 187, __pyx_L1_error) + __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; + + /* "CAStar/AATC_Monitor_Viewer.pyx":215 + * + * + * def MakeWaypointSprites(Message,RawWaypointList): # <<<<<<<<<<<<<< + * WaypointList = [] + * Columns = ast.literal_eval(Message) + */ + __pyx_t_3 = PyCFunction_NewEx(&__pyx_mdef_6CAStar_19AATC_Monitor_Viewer_11MakeWaypointSprites, NULL, __pyx_n_s_CAStar_AATC_Monitor_Viewer); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 215, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_3); + if (PyDict_SetItem(__pyx_d, __pyx_n_s_MakeWaypointSprites, __pyx_t_3) < 0) __PYX_ERR(0, 215, __pyx_L1_error) + __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; + + /* "CAStar/AATC_Monitor_Viewer.pyx":229 + * return WaypointList + * + * def MakeZoneSprites(Message,RawZoneList): # <<<<<<<<<<<<<< + * ZoneList = [] + * Columns = ast.literal_eval(Message) + */ + __pyx_t_3 = PyCFunction_NewEx(&__pyx_mdef_6CAStar_19AATC_Monitor_Viewer_13MakeZoneSprites, NULL, __pyx_n_s_CAStar_AATC_Monitor_Viewer); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 229, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_3); + if (PyDict_SetItem(__pyx_d, __pyx_n_s_MakeZoneSprites, __pyx_t_3) < 0) __PYX_ERR(0, 229, __pyx_L1_error) + __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; + + /* "CAStar/AATC_Monitor_Viewer.pyx":245 + * return ZoneList + * + * def MakeSprites(M): # <<<<<<<<<<<<<< + * print("Refreshing data") + * SpriteList = [] + */ + __pyx_t_3 = PyCFunction_NewEx(&__pyx_mdef_6CAStar_19AATC_Monitor_Viewer_15MakeSprites, NULL, __pyx_n_s_CAStar_AATC_Monitor_Viewer); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 245, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_3); + if (PyDict_SetItem(__pyx_d, __pyx_n_s_MakeSprites, __pyx_t_3) < 0) __PYX_ERR(0, 245, __pyx_L1_error) + __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; + + /* "CAStar/AATC_Monitor_Viewer.pyx":282 + * + * + * xpixel = 1200 # <<<<<<<<<<<<<< + * ypixel = 700 + * Refresh_Delay = 60 + */ + if (PyDict_SetItem(__pyx_d, __pyx_n_s_xpixel, __pyx_int_1200) < 0) __PYX_ERR(0, 282, __pyx_L1_error) + + /* "CAStar/AATC_Monitor_Viewer.pyx":283 + * + * xpixel = 1200 + * ypixel = 700 # <<<<<<<<<<<<<< + * Refresh_Delay = 60 + * clock = pygame.time.Clock() + */ + if (PyDict_SetItem(__pyx_d, __pyx_n_s_ypixel, __pyx_int_700) < 0) __PYX_ERR(0, 283, __pyx_L1_error) + + /* "CAStar/AATC_Monitor_Viewer.pyx":284 + * xpixel = 1200 + * ypixel = 700 + * Refresh_Delay = 60 # <<<<<<<<<<<<<< + * clock = pygame.time.Clock() + * pressed = pygame.key.get_pressed + */ + if (PyDict_SetItem(__pyx_d, __pyx_n_s_Refresh_Delay, __pyx_int_60) < 0) __PYX_ERR(0, 284, __pyx_L1_error) + + /* "CAStar/AATC_Monitor_Viewer.pyx":285 + * ypixel = 700 + * Refresh_Delay = 60 + * clock = pygame.time.Clock() # <<<<<<<<<<<<<< + * pressed = pygame.key.get_pressed + * Exit = "N" + */ + __pyx_t_1 = __Pyx_GetModuleGlobalName(__pyx_n_s_pygame); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 285, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_1); + __pyx_t_2 = __Pyx_PyObject_GetAttrStr(__pyx_t_1, __pyx_n_s_time); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 285, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_2); + __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; + __pyx_t_1 = __Pyx_PyObject_GetAttrStr(__pyx_t_2, __pyx_n_s_Clock); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 285, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_1); + __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; + __pyx_t_2 = NULL; + if (CYTHON_UNPACK_METHODS && likely(PyMethod_Check(__pyx_t_1))) { + __pyx_t_2 = PyMethod_GET_SELF(__pyx_t_1); + if (likely(__pyx_t_2)) { + PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_1); + __Pyx_INCREF(__pyx_t_2); + __Pyx_INCREF(function); + __Pyx_DECREF_SET(__pyx_t_1, function); + } + } + if (__pyx_t_2) { + __pyx_t_3 = __Pyx_PyObject_CallOneArg(__pyx_t_1, __pyx_t_2); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 285, __pyx_L1_error) + __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; + } else { + __pyx_t_3 = __Pyx_PyObject_CallNoArg(__pyx_t_1); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 285, __pyx_L1_error) + } + __Pyx_GOTREF(__pyx_t_3); + __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; + if (PyDict_SetItem(__pyx_d, __pyx_n_s_clock, __pyx_t_3) < 0) __PYX_ERR(0, 285, __pyx_L1_error) + __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; + + /* "CAStar/AATC_Monitor_Viewer.pyx":286 + * Refresh_Delay = 60 + * clock = pygame.time.Clock() + * pressed = pygame.key.get_pressed # <<<<<<<<<<<<<< + * Exit = "N" + * while Exit != "Y": + */ + __pyx_t_3 = __Pyx_GetModuleGlobalName(__pyx_n_s_pygame); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 286, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_3); + __pyx_t_1 = __Pyx_PyObject_GetAttrStr(__pyx_t_3, __pyx_n_s_key); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 286, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_1); + __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; + __pyx_t_3 = __Pyx_PyObject_GetAttrStr(__pyx_t_1, __pyx_n_s_get_pressed); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 286, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_3); + __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; + if (PyDict_SetItem(__pyx_d, __pyx_n_s_pressed, __pyx_t_3) < 0) __PYX_ERR(0, 286, __pyx_L1_error) + __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; + + /* "CAStar/AATC_Monitor_Viewer.pyx":287 + * clock = pygame.time.Clock() + * pressed = pygame.key.get_pressed + * Exit = "N" # <<<<<<<<<<<<<< + * while Exit != "Y": + * try: + */ + if (PyDict_SetItem(__pyx_d, __pyx_n_s_Exit, __pyx_n_s_N_2) < 0) __PYX_ERR(0, 287, __pyx_L1_error) + + /* "CAStar/AATC_Monitor_Viewer.pyx":288 + * pressed = pygame.key.get_pressed + * Exit = "N" + * while Exit != "Y": # <<<<<<<<<<<<<< + * try: + * M = AATC_Monitor.CreateMonitorInterface(IP = "127.0.0.1",Port = 8001) + */ + while (1) { + __pyx_t_3 = __Pyx_GetModuleGlobalName(__pyx_n_s_Exit); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 288, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_3); + __pyx_t_5 = (__Pyx_PyString_Equals(__pyx_t_3, __pyx_n_s_Y, Py_NE)); if (unlikely(__pyx_t_5 < 0)) __PYX_ERR(0, 288, __pyx_L1_error) + __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; + if (!__pyx_t_5) break; + + /* "CAStar/AATC_Monitor_Viewer.pyx":289 + * Exit = "N" + * while Exit != "Y": + * try: # <<<<<<<<<<<<<< + * M = AATC_Monitor.CreateMonitorInterface(IP = "127.0.0.1",Port = 8001) + * M.Login("Zini","") + */ + { + __Pyx_PyThreadState_declare + __Pyx_PyThreadState_assign + __Pyx_ExceptionSave(&__pyx_t_6, &__pyx_t_7, &__pyx_t_8); + __Pyx_XGOTREF(__pyx_t_6); + __Pyx_XGOTREF(__pyx_t_7); + __Pyx_XGOTREF(__pyx_t_8); + /*try:*/ { + + /* "CAStar/AATC_Monitor_Viewer.pyx":290 + * while Exit != "Y": + * try: + * M = AATC_Monitor.CreateMonitorInterface(IP = "127.0.0.1",Port = 8001) # <<<<<<<<<<<<<< + * M.Login("Zini","") + * #Sucess,Message,Data = M.GetCoordDetails() + */ + __pyx_t_3 = __Pyx_GetModuleGlobalName(__pyx_n_s_AATC_Monitor); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 290, __pyx_L4_error) + __Pyx_GOTREF(__pyx_t_3); + __pyx_t_1 = __Pyx_PyObject_GetAttrStr(__pyx_t_3, __pyx_n_s_CreateMonitorInterface); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 290, __pyx_L4_error) + __Pyx_GOTREF(__pyx_t_1); + __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; + __pyx_t_3 = PyDict_New(); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 290, __pyx_L4_error) + __Pyx_GOTREF(__pyx_t_3); + if (PyDict_SetItem(__pyx_t_3, __pyx_n_s_IP, __pyx_kp_s_127_0_0_1) < 0) __PYX_ERR(0, 290, __pyx_L4_error) + if (PyDict_SetItem(__pyx_t_3, __pyx_n_s_Port, __pyx_int_8001) < 0) __PYX_ERR(0, 290, __pyx_L4_error) + __pyx_t_2 = __Pyx_PyObject_Call(__pyx_t_1, __pyx_empty_tuple, __pyx_t_3); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 290, __pyx_L4_error) + __Pyx_GOTREF(__pyx_t_2); + __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; + __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; + if (PyDict_SetItem(__pyx_d, __pyx_n_s_M, __pyx_t_2) < 0) __PYX_ERR(0, 290, __pyx_L4_error) + __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; + + /* "CAStar/AATC_Monitor_Viewer.pyx":291 + * try: + * M = AATC_Monitor.CreateMonitorInterface(IP = "127.0.0.1",Port = 8001) + * M.Login("Zini","") # <<<<<<<<<<<<<< + * #Sucess,Message,Data = M.GetCoordDetails() + * #MinCoords,MaxCoords,StepCoords = Data[0],Data[1],Data[2] + */ + __pyx_t_2 = __Pyx_GetModuleGlobalName(__pyx_n_s_M); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 291, __pyx_L4_error) + __Pyx_GOTREF(__pyx_t_2); + __pyx_t_3 = __Pyx_PyObject_GetAttrStr(__pyx_t_2, __pyx_n_s_Login); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 291, __pyx_L4_error) + __Pyx_GOTREF(__pyx_t_3); + __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; + __pyx_t_2 = __Pyx_PyObject_Call(__pyx_t_3, __pyx_tuple__79, NULL); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 291, __pyx_L4_error) + __Pyx_GOTREF(__pyx_t_2); + __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; + __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; + + /* "CAStar/AATC_Monitor_Viewer.pyx":294 + * #Sucess,Message,Data = M.GetCoordDetails() + * #MinCoords,MaxCoords,StepCoords = Data[0],Data[1],Data[2] + * MinCoords,MaxCoords = AATC_Coordinate.Coordinate(0,0,0),AATC_Coordinate.Coordinate(1,1,50) # <<<<<<<<<<<<<< + * MonCamera = Camera(xpixel,ypixel,MinCoords,MaxCoords) + * while True: + */ + __pyx_t_2 = __Pyx_GetModuleGlobalName(__pyx_n_s_AATC_Coordinate); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 294, __pyx_L4_error) + __Pyx_GOTREF(__pyx_t_2); + __pyx_t_3 = __Pyx_PyObject_GetAttrStr(__pyx_t_2, __pyx_n_s_Coordinate); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 294, __pyx_L4_error) + __Pyx_GOTREF(__pyx_t_3); + __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; + __pyx_t_2 = __Pyx_PyObject_Call(__pyx_t_3, __pyx_tuple__80, NULL); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 294, __pyx_L4_error) + __Pyx_GOTREF(__pyx_t_2); + __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; + __pyx_t_3 = __Pyx_GetModuleGlobalName(__pyx_n_s_AATC_Coordinate); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 294, __pyx_L4_error) + __Pyx_GOTREF(__pyx_t_3); + __pyx_t_1 = __Pyx_PyObject_GetAttrStr(__pyx_t_3, __pyx_n_s_Coordinate); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 294, __pyx_L4_error) + __Pyx_GOTREF(__pyx_t_1); + __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; + __pyx_t_3 = __Pyx_PyObject_Call(__pyx_t_1, __pyx_tuple__81, NULL); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 294, __pyx_L4_error) + __Pyx_GOTREF(__pyx_t_3); + __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; + if (PyDict_SetItem(__pyx_d, __pyx_n_s_MinCoords, __pyx_t_2) < 0) __PYX_ERR(0, 294, __pyx_L4_error) + __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; + if (PyDict_SetItem(__pyx_d, __pyx_n_s_MaxCoords, __pyx_t_3) < 0) __PYX_ERR(0, 294, __pyx_L4_error) + __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; + + /* "CAStar/AATC_Monitor_Viewer.pyx":295 + * #MinCoords,MaxCoords,StepCoords = Data[0],Data[1],Data[2] + * MinCoords,MaxCoords = AATC_Coordinate.Coordinate(0,0,0),AATC_Coordinate.Coordinate(1,1,50) + * MonCamera = Camera(xpixel,ypixel,MinCoords,MaxCoords) # <<<<<<<<<<<<<< + * while True: + * MonCamera.ResetDrawObject() + */ + __pyx_t_2 = __Pyx_GetModuleGlobalName(__pyx_n_s_Camera); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 295, __pyx_L4_error) + __Pyx_GOTREF(__pyx_t_2); + __pyx_t_1 = __Pyx_GetModuleGlobalName(__pyx_n_s_xpixel); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 295, __pyx_L4_error) + __Pyx_GOTREF(__pyx_t_1); + __pyx_t_4 = __Pyx_GetModuleGlobalName(__pyx_n_s_ypixel); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 295, __pyx_L4_error) + __Pyx_GOTREF(__pyx_t_4); + __pyx_t_9 = __Pyx_GetModuleGlobalName(__pyx_n_s_MinCoords); if (unlikely(!__pyx_t_9)) __PYX_ERR(0, 295, __pyx_L4_error) + __Pyx_GOTREF(__pyx_t_9); + __pyx_t_10 = __Pyx_GetModuleGlobalName(__pyx_n_s_MaxCoords); if (unlikely(!__pyx_t_10)) __PYX_ERR(0, 295, __pyx_L4_error) + __Pyx_GOTREF(__pyx_t_10); + __pyx_t_11 = NULL; + __pyx_t_12 = 0; + if (CYTHON_UNPACK_METHODS && unlikely(PyMethod_Check(__pyx_t_2))) { + __pyx_t_11 = PyMethod_GET_SELF(__pyx_t_2); + if (likely(__pyx_t_11)) { + PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_2); + __Pyx_INCREF(__pyx_t_11); + __Pyx_INCREF(function); + __Pyx_DECREF_SET(__pyx_t_2, function); + __pyx_t_12 = 1; + } + } + #if CYTHON_FAST_PYCALL + if (PyFunction_Check(__pyx_t_2)) { + PyObject *__pyx_temp[5] = {__pyx_t_11, __pyx_t_1, __pyx_t_4, __pyx_t_9, __pyx_t_10}; + __pyx_t_3 = __Pyx_PyFunction_FastCall(__pyx_t_2, __pyx_temp+1-__pyx_t_12, 4+__pyx_t_12); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 295, __pyx_L4_error) + __Pyx_XDECREF(__pyx_t_11); __pyx_t_11 = 0; + __Pyx_GOTREF(__pyx_t_3); + __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; + __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0; + __Pyx_DECREF(__pyx_t_9); __pyx_t_9 = 0; + __Pyx_DECREF(__pyx_t_10); __pyx_t_10 = 0; + } else + #endif + #if CYTHON_FAST_PYCCALL + if (__Pyx_PyFastCFunction_Check(__pyx_t_2)) { + PyObject *__pyx_temp[5] = {__pyx_t_11, __pyx_t_1, __pyx_t_4, __pyx_t_9, __pyx_t_10}; + __pyx_t_3 = __Pyx_PyCFunction_FastCall(__pyx_t_2, __pyx_temp+1-__pyx_t_12, 4+__pyx_t_12); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 295, __pyx_L4_error) + __Pyx_XDECREF(__pyx_t_11); __pyx_t_11 = 0; + __Pyx_GOTREF(__pyx_t_3); + __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; + __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0; + __Pyx_DECREF(__pyx_t_9); __pyx_t_9 = 0; + __Pyx_DECREF(__pyx_t_10); __pyx_t_10 = 0; + } else + #endif + { + __pyx_t_13 = PyTuple_New(4+__pyx_t_12); if (unlikely(!__pyx_t_13)) __PYX_ERR(0, 295, __pyx_L4_error) + __Pyx_GOTREF(__pyx_t_13); + if (__pyx_t_11) { + __Pyx_GIVEREF(__pyx_t_11); PyTuple_SET_ITEM(__pyx_t_13, 0, __pyx_t_11); __pyx_t_11 = NULL; + } + __Pyx_GIVEREF(__pyx_t_1); + PyTuple_SET_ITEM(__pyx_t_13, 0+__pyx_t_12, __pyx_t_1); + __Pyx_GIVEREF(__pyx_t_4); + PyTuple_SET_ITEM(__pyx_t_13, 1+__pyx_t_12, __pyx_t_4); + __Pyx_GIVEREF(__pyx_t_9); + PyTuple_SET_ITEM(__pyx_t_13, 2+__pyx_t_12, __pyx_t_9); + __Pyx_GIVEREF(__pyx_t_10); + PyTuple_SET_ITEM(__pyx_t_13, 3+__pyx_t_12, __pyx_t_10); + __pyx_t_1 = 0; + __pyx_t_4 = 0; + __pyx_t_9 = 0; + __pyx_t_10 = 0; + __pyx_t_3 = __Pyx_PyObject_Call(__pyx_t_2, __pyx_t_13, NULL); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 295, __pyx_L4_error) + __Pyx_GOTREF(__pyx_t_3); + __Pyx_DECREF(__pyx_t_13); __pyx_t_13 = 0; + } + __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; + if (PyDict_SetItem(__pyx_d, __pyx_n_s_MonCamera, __pyx_t_3) < 0) __PYX_ERR(0, 295, __pyx_L4_error) + __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; + + /* "CAStar/AATC_Monitor_Viewer.pyx":296 + * MinCoords,MaxCoords = AATC_Coordinate.Coordinate(0,0,0),AATC_Coordinate.Coordinate(1,1,50) + * MonCamera = Camera(xpixel,ypixel,MinCoords,MaxCoords) + * while True: # <<<<<<<<<<<<<< + * MonCamera.ResetDrawObject() + * Sprites = MakeSprites(M) + */ + while (1) { + + /* "CAStar/AATC_Monitor_Viewer.pyx":297 + * MonCamera = Camera(xpixel,ypixel,MinCoords,MaxCoords) + * while True: + * MonCamera.ResetDrawObject() # <<<<<<<<<<<<<< + * Sprites = MakeSprites(M) + * #font = (None, 30) + */ + __pyx_t_2 = __Pyx_GetModuleGlobalName(__pyx_n_s_MonCamera); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 297, __pyx_L4_error) + __Pyx_GOTREF(__pyx_t_2); + __pyx_t_13 = __Pyx_PyObject_GetAttrStr(__pyx_t_2, __pyx_n_s_ResetDrawObject); if (unlikely(!__pyx_t_13)) __PYX_ERR(0, 297, __pyx_L4_error) + __Pyx_GOTREF(__pyx_t_13); + __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; + __pyx_t_2 = NULL; + if (CYTHON_UNPACK_METHODS && unlikely(PyMethod_Check(__pyx_t_13))) { + __pyx_t_2 = PyMethod_GET_SELF(__pyx_t_13); + if (likely(__pyx_t_2)) { + PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_13); + __Pyx_INCREF(__pyx_t_2); + __Pyx_INCREF(function); + __Pyx_DECREF_SET(__pyx_t_13, function); + } + } + if (__pyx_t_2) { + __pyx_t_3 = __Pyx_PyObject_CallOneArg(__pyx_t_13, __pyx_t_2); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 297, __pyx_L4_error) + __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; + } else { + __pyx_t_3 = __Pyx_PyObject_CallNoArg(__pyx_t_13); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 297, __pyx_L4_error) + } + __Pyx_GOTREF(__pyx_t_3); + __Pyx_DECREF(__pyx_t_13); __pyx_t_13 = 0; + __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; + + /* "CAStar/AATC_Monitor_Viewer.pyx":298 + * while True: + * MonCamera.ResetDrawObject() + * Sprites = MakeSprites(M) # <<<<<<<<<<<<<< + * #font = (None, 30) + * for sprite in Sprites: + */ + __pyx_t_13 = __Pyx_GetModuleGlobalName(__pyx_n_s_MakeSprites); if (unlikely(!__pyx_t_13)) __PYX_ERR(0, 298, __pyx_L4_error) + __Pyx_GOTREF(__pyx_t_13); + __pyx_t_2 = __Pyx_GetModuleGlobalName(__pyx_n_s_M); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 298, __pyx_L4_error) + __Pyx_GOTREF(__pyx_t_2); + __pyx_t_10 = NULL; + if (CYTHON_UNPACK_METHODS && unlikely(PyMethod_Check(__pyx_t_13))) { + __pyx_t_10 = PyMethod_GET_SELF(__pyx_t_13); + if (likely(__pyx_t_10)) { + PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_13); + __Pyx_INCREF(__pyx_t_10); + __Pyx_INCREF(function); + __Pyx_DECREF_SET(__pyx_t_13, function); + } + } + if (!__pyx_t_10) { + __pyx_t_3 = __Pyx_PyObject_CallOneArg(__pyx_t_13, __pyx_t_2); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 298, __pyx_L4_error) + __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; + __Pyx_GOTREF(__pyx_t_3); + } else { + #if CYTHON_FAST_PYCALL + if (PyFunction_Check(__pyx_t_13)) { + PyObject *__pyx_temp[2] = {__pyx_t_10, __pyx_t_2}; + __pyx_t_3 = __Pyx_PyFunction_FastCall(__pyx_t_13, __pyx_temp+1-1, 1+1); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 298, __pyx_L4_error) + __Pyx_XDECREF(__pyx_t_10); __pyx_t_10 = 0; + __Pyx_GOTREF(__pyx_t_3); + __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; + } else + #endif + #if CYTHON_FAST_PYCCALL + if (__Pyx_PyFastCFunction_Check(__pyx_t_13)) { + PyObject *__pyx_temp[2] = {__pyx_t_10, __pyx_t_2}; + __pyx_t_3 = __Pyx_PyCFunction_FastCall(__pyx_t_13, __pyx_temp+1-1, 1+1); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 298, __pyx_L4_error) + __Pyx_XDECREF(__pyx_t_10); __pyx_t_10 = 0; + __Pyx_GOTREF(__pyx_t_3); + __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; + } else + #endif + { + __pyx_t_9 = PyTuple_New(1+1); if (unlikely(!__pyx_t_9)) __PYX_ERR(0, 298, __pyx_L4_error) + __Pyx_GOTREF(__pyx_t_9); + __Pyx_GIVEREF(__pyx_t_10); PyTuple_SET_ITEM(__pyx_t_9, 0, __pyx_t_10); __pyx_t_10 = NULL; + __Pyx_GIVEREF(__pyx_t_2); + PyTuple_SET_ITEM(__pyx_t_9, 0+1, __pyx_t_2); + __pyx_t_2 = 0; + __pyx_t_3 = __Pyx_PyObject_Call(__pyx_t_13, __pyx_t_9, NULL); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 298, __pyx_L4_error) + __Pyx_GOTREF(__pyx_t_3); + __Pyx_DECREF(__pyx_t_9); __pyx_t_9 = 0; + } + } + __Pyx_DECREF(__pyx_t_13); __pyx_t_13 = 0; + if (PyDict_SetItem(__pyx_d, __pyx_n_s_Sprites, __pyx_t_3) < 0) __PYX_ERR(0, 298, __pyx_L4_error) + __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; + + /* "CAStar/AATC_Monitor_Viewer.pyx":300 + * Sprites = MakeSprites(M) + * #font = (None, 30) + * for sprite in Sprites: # <<<<<<<<<<<<<< + * MonCamera.AddDrawObject(sprite,False) + * + */ + __pyx_t_3 = __Pyx_GetModuleGlobalName(__pyx_n_s_Sprites); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 300, __pyx_L4_error) + __Pyx_GOTREF(__pyx_t_3); + if (likely(PyList_CheckExact(__pyx_t_3)) || PyTuple_CheckExact(__pyx_t_3)) { + __pyx_t_13 = __pyx_t_3; __Pyx_INCREF(__pyx_t_13); __pyx_t_14 = 0; + __pyx_t_15 = NULL; + } else { + __pyx_t_14 = -1; __pyx_t_13 = PyObject_GetIter(__pyx_t_3); if (unlikely(!__pyx_t_13)) __PYX_ERR(0, 300, __pyx_L4_error) + __Pyx_GOTREF(__pyx_t_13); + __pyx_t_15 = Py_TYPE(__pyx_t_13)->tp_iternext; if (unlikely(!__pyx_t_15)) __PYX_ERR(0, 300, __pyx_L4_error) + } + __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; + for (;;) { + if (likely(!__pyx_t_15)) { + if (likely(PyList_CheckExact(__pyx_t_13))) { + if (__pyx_t_14 >= PyList_GET_SIZE(__pyx_t_13)) break; + #if CYTHON_ASSUME_SAFE_MACROS && !CYTHON_AVOID_BORROWED_REFS + __pyx_t_3 = PyList_GET_ITEM(__pyx_t_13, __pyx_t_14); __Pyx_INCREF(__pyx_t_3); __pyx_t_14++; if (unlikely(0 < 0)) __PYX_ERR(0, 300, __pyx_L4_error) + #else + __pyx_t_3 = PySequence_ITEM(__pyx_t_13, __pyx_t_14); __pyx_t_14++; if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 300, __pyx_L4_error) + __Pyx_GOTREF(__pyx_t_3); + #endif + } else { + if (__pyx_t_14 >= PyTuple_GET_SIZE(__pyx_t_13)) break; + #if CYTHON_ASSUME_SAFE_MACROS && !CYTHON_AVOID_BORROWED_REFS + __pyx_t_3 = PyTuple_GET_ITEM(__pyx_t_13, __pyx_t_14); __Pyx_INCREF(__pyx_t_3); __pyx_t_14++; if (unlikely(0 < 0)) __PYX_ERR(0, 300, __pyx_L4_error) + #else + __pyx_t_3 = PySequence_ITEM(__pyx_t_13, __pyx_t_14); __pyx_t_14++; if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 300, __pyx_L4_error) + __Pyx_GOTREF(__pyx_t_3); + #endif + } + } else { + __pyx_t_3 = __pyx_t_15(__pyx_t_13); + if (unlikely(!__pyx_t_3)) { + PyObject* exc_type = PyErr_Occurred(); + if (exc_type) { + if (likely(exc_type == PyExc_StopIteration || PyErr_GivenExceptionMatches(exc_type, PyExc_StopIteration))) PyErr_Clear(); + else __PYX_ERR(0, 300, __pyx_L4_error) + } + break; + } + __Pyx_GOTREF(__pyx_t_3); + } + if (PyDict_SetItem(__pyx_d, __pyx_n_s_sprite, __pyx_t_3) < 0) __PYX_ERR(0, 300, __pyx_L4_error) + __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; + + /* "CAStar/AATC_Monitor_Viewer.pyx":301 + * #font = (None, 30) + * for sprite in Sprites: + * MonCamera.AddDrawObject(sprite,False) # <<<<<<<<<<<<<< + * + * Last_Refresh_Time = time.time() + */ + __pyx_t_9 = __Pyx_GetModuleGlobalName(__pyx_n_s_MonCamera); if (unlikely(!__pyx_t_9)) __PYX_ERR(0, 301, __pyx_L4_error) + __Pyx_GOTREF(__pyx_t_9); + __pyx_t_2 = __Pyx_PyObject_GetAttrStr(__pyx_t_9, __pyx_n_s_AddDrawObject); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 301, __pyx_L4_error) + __Pyx_GOTREF(__pyx_t_2); + __Pyx_DECREF(__pyx_t_9); __pyx_t_9 = 0; + __pyx_t_9 = __Pyx_GetModuleGlobalName(__pyx_n_s_sprite); if (unlikely(!__pyx_t_9)) __PYX_ERR(0, 301, __pyx_L4_error) + __Pyx_GOTREF(__pyx_t_9); + __pyx_t_10 = NULL; + __pyx_t_12 = 0; + if (CYTHON_UNPACK_METHODS && unlikely(PyMethod_Check(__pyx_t_2))) { + __pyx_t_10 = PyMethod_GET_SELF(__pyx_t_2); + if (likely(__pyx_t_10)) { + PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_2); + __Pyx_INCREF(__pyx_t_10); + __Pyx_INCREF(function); + __Pyx_DECREF_SET(__pyx_t_2, function); + __pyx_t_12 = 1; + } + } + #if CYTHON_FAST_PYCALL + if (PyFunction_Check(__pyx_t_2)) { + PyObject *__pyx_temp[3] = {__pyx_t_10, __pyx_t_9, Py_False}; + __pyx_t_3 = __Pyx_PyFunction_FastCall(__pyx_t_2, __pyx_temp+1-__pyx_t_12, 2+__pyx_t_12); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 301, __pyx_L4_error) + __Pyx_XDECREF(__pyx_t_10); __pyx_t_10 = 0; + __Pyx_GOTREF(__pyx_t_3); + __Pyx_DECREF(__pyx_t_9); __pyx_t_9 = 0; + } else + #endif + #if CYTHON_FAST_PYCCALL + if (__Pyx_PyFastCFunction_Check(__pyx_t_2)) { + PyObject *__pyx_temp[3] = {__pyx_t_10, __pyx_t_9, Py_False}; + __pyx_t_3 = __Pyx_PyCFunction_FastCall(__pyx_t_2, __pyx_temp+1-__pyx_t_12, 2+__pyx_t_12); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 301, __pyx_L4_error) + __Pyx_XDECREF(__pyx_t_10); __pyx_t_10 = 0; + __Pyx_GOTREF(__pyx_t_3); + __Pyx_DECREF(__pyx_t_9); __pyx_t_9 = 0; + } else + #endif + { + __pyx_t_4 = PyTuple_New(2+__pyx_t_12); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 301, __pyx_L4_error) + __Pyx_GOTREF(__pyx_t_4); + if (__pyx_t_10) { + __Pyx_GIVEREF(__pyx_t_10); PyTuple_SET_ITEM(__pyx_t_4, 0, __pyx_t_10); __pyx_t_10 = NULL; + } + __Pyx_GIVEREF(__pyx_t_9); + PyTuple_SET_ITEM(__pyx_t_4, 0+__pyx_t_12, __pyx_t_9); + __Pyx_INCREF(Py_False); + __Pyx_GIVEREF(Py_False); + PyTuple_SET_ITEM(__pyx_t_4, 1+__pyx_t_12, Py_False); + __pyx_t_9 = 0; + __pyx_t_3 = __Pyx_PyObject_Call(__pyx_t_2, __pyx_t_4, NULL); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 301, __pyx_L4_error) + __Pyx_GOTREF(__pyx_t_3); + __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0; + } + __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; + __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; + + /* "CAStar/AATC_Monitor_Viewer.pyx":300 + * Sprites = MakeSprites(M) + * #font = (None, 30) + * for sprite in Sprites: # <<<<<<<<<<<<<< + * MonCamera.AddDrawObject(sprite,False) + * + */ + } + __Pyx_DECREF(__pyx_t_13); __pyx_t_13 = 0; + + /* "CAStar/AATC_Monitor_Viewer.pyx":303 + * MonCamera.AddDrawObject(sprite,False) + * + * Last_Refresh_Time = time.time() # <<<<<<<<<<<<<< + * refresh = False + * while not refresh: + */ + __pyx_t_3 = __Pyx_GetModuleGlobalName(__pyx_n_s_time); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 303, __pyx_L4_error) + __Pyx_GOTREF(__pyx_t_3); + __pyx_t_2 = __Pyx_PyObject_GetAttrStr(__pyx_t_3, __pyx_n_s_time); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 303, __pyx_L4_error) + __Pyx_GOTREF(__pyx_t_2); + __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; + __pyx_t_3 = NULL; + if (CYTHON_UNPACK_METHODS && unlikely(PyMethod_Check(__pyx_t_2))) { + __pyx_t_3 = PyMethod_GET_SELF(__pyx_t_2); + if (likely(__pyx_t_3)) { + PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_2); + __Pyx_INCREF(__pyx_t_3); + __Pyx_INCREF(function); + __Pyx_DECREF_SET(__pyx_t_2, function); + } + } + if (__pyx_t_3) { + __pyx_t_13 = __Pyx_PyObject_CallOneArg(__pyx_t_2, __pyx_t_3); if (unlikely(!__pyx_t_13)) __PYX_ERR(0, 303, __pyx_L4_error) + __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; + } else { + __pyx_t_13 = __Pyx_PyObject_CallNoArg(__pyx_t_2); if (unlikely(!__pyx_t_13)) __PYX_ERR(0, 303, __pyx_L4_error) + } + __Pyx_GOTREF(__pyx_t_13); + __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; + if (PyDict_SetItem(__pyx_d, __pyx_n_s_Last_Refresh_Time, __pyx_t_13) < 0) __PYX_ERR(0, 303, __pyx_L4_error) + __Pyx_DECREF(__pyx_t_13); __pyx_t_13 = 0; + + /* "CAStar/AATC_Monitor_Viewer.pyx":304 + * + * Last_Refresh_Time = time.time() + * refresh = False # <<<<<<<<<<<<<< + * while not refresh: + * MonCamera.CameraWipe() + */ + if (PyDict_SetItem(__pyx_d, __pyx_n_s_refresh, Py_False) < 0) __PYX_ERR(0, 304, __pyx_L4_error) + + /* "CAStar/AATC_Monitor_Viewer.pyx":305 + * Last_Refresh_Time = time.time() + * refresh = False + * while not refresh: # <<<<<<<<<<<<<< + * MonCamera.CameraWipe() + * if time.time() >= (Last_Refresh_Time + Refresh_Delay): + */ + while (1) { + __pyx_t_13 = __Pyx_GetModuleGlobalName(__pyx_n_s_refresh); if (unlikely(!__pyx_t_13)) __PYX_ERR(0, 305, __pyx_L4_error) + __Pyx_GOTREF(__pyx_t_13); + __pyx_t_5 = __Pyx_PyObject_IsTrue(__pyx_t_13); if (unlikely(__pyx_t_5 < 0)) __PYX_ERR(0, 305, __pyx_L4_error) + __Pyx_DECREF(__pyx_t_13); __pyx_t_13 = 0; + __pyx_t_16 = ((!__pyx_t_5) != 0); + if (!__pyx_t_16) break; + + /* "CAStar/AATC_Monitor_Viewer.pyx":306 + * refresh = False + * while not refresh: + * MonCamera.CameraWipe() # <<<<<<<<<<<<<< + * if time.time() >= (Last_Refresh_Time + Refresh_Delay): + * refresh = True + */ + __pyx_t_2 = __Pyx_GetModuleGlobalName(__pyx_n_s_MonCamera); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 306, __pyx_L4_error) + __Pyx_GOTREF(__pyx_t_2); + __pyx_t_3 = __Pyx_PyObject_GetAttrStr(__pyx_t_2, __pyx_n_s_CameraWipe); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 306, __pyx_L4_error) + __Pyx_GOTREF(__pyx_t_3); + __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; + __pyx_t_2 = NULL; + if (CYTHON_UNPACK_METHODS && unlikely(PyMethod_Check(__pyx_t_3))) { + __pyx_t_2 = PyMethod_GET_SELF(__pyx_t_3); + if (likely(__pyx_t_2)) { + PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_3); + __Pyx_INCREF(__pyx_t_2); + __Pyx_INCREF(function); + __Pyx_DECREF_SET(__pyx_t_3, function); + } + } + if (__pyx_t_2) { + __pyx_t_13 = __Pyx_PyObject_CallOneArg(__pyx_t_3, __pyx_t_2); if (unlikely(!__pyx_t_13)) __PYX_ERR(0, 306, __pyx_L4_error) + __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; + } else { + __pyx_t_13 = __Pyx_PyObject_CallNoArg(__pyx_t_3); if (unlikely(!__pyx_t_13)) __PYX_ERR(0, 306, __pyx_L4_error) + } + __Pyx_GOTREF(__pyx_t_13); + __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; + __Pyx_DECREF(__pyx_t_13); __pyx_t_13 = 0; + + /* "CAStar/AATC_Monitor_Viewer.pyx":307 + * while not refresh: + * MonCamera.CameraWipe() + * if time.time() >= (Last_Refresh_Time + Refresh_Delay): # <<<<<<<<<<<<<< + * refresh = True + * for event in pygame.event.get(): + */ + __pyx_t_3 = __Pyx_GetModuleGlobalName(__pyx_n_s_time); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 307, __pyx_L4_error) + __Pyx_GOTREF(__pyx_t_3); + __pyx_t_2 = __Pyx_PyObject_GetAttrStr(__pyx_t_3, __pyx_n_s_time); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 307, __pyx_L4_error) + __Pyx_GOTREF(__pyx_t_2); + __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; + __pyx_t_3 = NULL; + if (CYTHON_UNPACK_METHODS && unlikely(PyMethod_Check(__pyx_t_2))) { + __pyx_t_3 = PyMethod_GET_SELF(__pyx_t_2); + if (likely(__pyx_t_3)) { + PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_2); + __Pyx_INCREF(__pyx_t_3); + __Pyx_INCREF(function); + __Pyx_DECREF_SET(__pyx_t_2, function); + } + } + if (__pyx_t_3) { + __pyx_t_13 = __Pyx_PyObject_CallOneArg(__pyx_t_2, __pyx_t_3); if (unlikely(!__pyx_t_13)) __PYX_ERR(0, 307, __pyx_L4_error) + __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; + } else { + __pyx_t_13 = __Pyx_PyObject_CallNoArg(__pyx_t_2); if (unlikely(!__pyx_t_13)) __PYX_ERR(0, 307, __pyx_L4_error) + } + __Pyx_GOTREF(__pyx_t_13); + __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; + __pyx_t_2 = __Pyx_GetModuleGlobalName(__pyx_n_s_Last_Refresh_Time); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 307, __pyx_L4_error) + __Pyx_GOTREF(__pyx_t_2); + __pyx_t_3 = __Pyx_GetModuleGlobalName(__pyx_n_s_Refresh_Delay); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 307, __pyx_L4_error) + __Pyx_GOTREF(__pyx_t_3); + __pyx_t_4 = PyNumber_Add(__pyx_t_2, __pyx_t_3); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 307, __pyx_L4_error) + __Pyx_GOTREF(__pyx_t_4); + __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; + __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; + __pyx_t_3 = PyObject_RichCompare(__pyx_t_13, __pyx_t_4, Py_GE); __Pyx_XGOTREF(__pyx_t_3); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 307, __pyx_L4_error) + __Pyx_DECREF(__pyx_t_13); __pyx_t_13 = 0; + __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0; + __pyx_t_16 = __Pyx_PyObject_IsTrue(__pyx_t_3); if (unlikely(__pyx_t_16 < 0)) __PYX_ERR(0, 307, __pyx_L4_error) + __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; + if (__pyx_t_16) { + + /* "CAStar/AATC_Monitor_Viewer.pyx":308 + * MonCamera.CameraWipe() + * if time.time() >= (Last_Refresh_Time + Refresh_Delay): + * refresh = True # <<<<<<<<<<<<<< + * for event in pygame.event.get(): + * if event.type == pygame.QUIT: + */ + if (PyDict_SetItem(__pyx_d, __pyx_n_s_refresh, Py_True) < 0) __PYX_ERR(0, 308, __pyx_L4_error) + + /* "CAStar/AATC_Monitor_Viewer.pyx":307 + * while not refresh: + * MonCamera.CameraWipe() + * if time.time() >= (Last_Refresh_Time + Refresh_Delay): # <<<<<<<<<<<<<< + * refresh = True + * for event in pygame.event.get(): + */ + } + + /* "CAStar/AATC_Monitor_Viewer.pyx":309 + * if time.time() >= (Last_Refresh_Time + Refresh_Delay): + * refresh = True + * for event in pygame.event.get(): # <<<<<<<<<<<<<< + * if event.type == pygame.QUIT: + * print("Monitor exit was called") + */ + __pyx_t_4 = __Pyx_GetModuleGlobalName(__pyx_n_s_pygame); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 309, __pyx_L4_error) + __Pyx_GOTREF(__pyx_t_4); + __pyx_t_13 = __Pyx_PyObject_GetAttrStr(__pyx_t_4, __pyx_n_s_event); if (unlikely(!__pyx_t_13)) __PYX_ERR(0, 309, __pyx_L4_error) + __Pyx_GOTREF(__pyx_t_13); + __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0; + __pyx_t_4 = __Pyx_PyObject_GetAttrStr(__pyx_t_13, __pyx_n_s_get); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 309, __pyx_L4_error) + __Pyx_GOTREF(__pyx_t_4); + __Pyx_DECREF(__pyx_t_13); __pyx_t_13 = 0; + __pyx_t_13 = NULL; + if (CYTHON_UNPACK_METHODS && likely(PyMethod_Check(__pyx_t_4))) { + __pyx_t_13 = PyMethod_GET_SELF(__pyx_t_4); + if (likely(__pyx_t_13)) { + PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_4); + __Pyx_INCREF(__pyx_t_13); + __Pyx_INCREF(function); + __Pyx_DECREF_SET(__pyx_t_4, function); + } + } + if (__pyx_t_13) { + __pyx_t_3 = __Pyx_PyObject_CallOneArg(__pyx_t_4, __pyx_t_13); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 309, __pyx_L4_error) + __Pyx_DECREF(__pyx_t_13); __pyx_t_13 = 0; + } else { + __pyx_t_3 = __Pyx_PyObject_CallNoArg(__pyx_t_4); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 309, __pyx_L4_error) + } + __Pyx_GOTREF(__pyx_t_3); + __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0; + if (likely(PyList_CheckExact(__pyx_t_3)) || PyTuple_CheckExact(__pyx_t_3)) { + __pyx_t_4 = __pyx_t_3; __Pyx_INCREF(__pyx_t_4); __pyx_t_14 = 0; + __pyx_t_15 = NULL; + } else { + __pyx_t_14 = -1; __pyx_t_4 = PyObject_GetIter(__pyx_t_3); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 309, __pyx_L4_error) + __Pyx_GOTREF(__pyx_t_4); + __pyx_t_15 = Py_TYPE(__pyx_t_4)->tp_iternext; if (unlikely(!__pyx_t_15)) __PYX_ERR(0, 309, __pyx_L4_error) + } + __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; + for (;;) { + if (likely(!__pyx_t_15)) { + if (likely(PyList_CheckExact(__pyx_t_4))) { + if (__pyx_t_14 >= PyList_GET_SIZE(__pyx_t_4)) break; + #if CYTHON_ASSUME_SAFE_MACROS && !CYTHON_AVOID_BORROWED_REFS + __pyx_t_3 = PyList_GET_ITEM(__pyx_t_4, __pyx_t_14); __Pyx_INCREF(__pyx_t_3); __pyx_t_14++; if (unlikely(0 < 0)) __PYX_ERR(0, 309, __pyx_L4_error) + #else + __pyx_t_3 = PySequence_ITEM(__pyx_t_4, __pyx_t_14); __pyx_t_14++; if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 309, __pyx_L4_error) + __Pyx_GOTREF(__pyx_t_3); + #endif + } else { + if (__pyx_t_14 >= PyTuple_GET_SIZE(__pyx_t_4)) break; + #if CYTHON_ASSUME_SAFE_MACROS && !CYTHON_AVOID_BORROWED_REFS + __pyx_t_3 = PyTuple_GET_ITEM(__pyx_t_4, __pyx_t_14); __Pyx_INCREF(__pyx_t_3); __pyx_t_14++; if (unlikely(0 < 0)) __PYX_ERR(0, 309, __pyx_L4_error) + #else + __pyx_t_3 = PySequence_ITEM(__pyx_t_4, __pyx_t_14); __pyx_t_14++; if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 309, __pyx_L4_error) + __Pyx_GOTREF(__pyx_t_3); + #endif + } + } else { + __pyx_t_3 = __pyx_t_15(__pyx_t_4); + if (unlikely(!__pyx_t_3)) { + PyObject* exc_type = PyErr_Occurred(); + if (exc_type) { + if (likely(exc_type == PyExc_StopIteration || PyErr_GivenExceptionMatches(exc_type, PyExc_StopIteration))) PyErr_Clear(); + else __PYX_ERR(0, 309, __pyx_L4_error) + } + break; + } + __Pyx_GOTREF(__pyx_t_3); + } + if (PyDict_SetItem(__pyx_d, __pyx_n_s_event, __pyx_t_3) < 0) __PYX_ERR(0, 309, __pyx_L4_error) + __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; + + /* "CAStar/AATC_Monitor_Viewer.pyx":310 + * refresh = True + * for event in pygame.event.get(): + * if event.type == pygame.QUIT: # <<<<<<<<<<<<<< + * print("Monitor exit was called") + * pygame.quit() + */ + __pyx_t_3 = __Pyx_GetModuleGlobalName(__pyx_n_s_event); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 310, __pyx_L4_error) + __Pyx_GOTREF(__pyx_t_3); + __pyx_t_13 = __Pyx_PyObject_GetAttrStr(__pyx_t_3, __pyx_n_s_type); if (unlikely(!__pyx_t_13)) __PYX_ERR(0, 310, __pyx_L4_error) + __Pyx_GOTREF(__pyx_t_13); + __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; + __pyx_t_3 = __Pyx_GetModuleGlobalName(__pyx_n_s_pygame); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 310, __pyx_L4_error) + __Pyx_GOTREF(__pyx_t_3); + __pyx_t_2 = __Pyx_PyObject_GetAttrStr(__pyx_t_3, __pyx_n_s_QUIT); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 310, __pyx_L4_error) + __Pyx_GOTREF(__pyx_t_2); + __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; + __pyx_t_3 = PyObject_RichCompare(__pyx_t_13, __pyx_t_2, Py_EQ); __Pyx_XGOTREF(__pyx_t_3); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 310, __pyx_L4_error) + __Pyx_DECREF(__pyx_t_13); __pyx_t_13 = 0; + __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; + __pyx_t_16 = __Pyx_PyObject_IsTrue(__pyx_t_3); if (unlikely(__pyx_t_16 < 0)) __PYX_ERR(0, 310, __pyx_L4_error) + __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; + if (__pyx_t_16) { + + /* "CAStar/AATC_Monitor_Viewer.pyx":311 + * for event in pygame.event.get(): + * if event.type == pygame.QUIT: + * print("Monitor exit was called") # <<<<<<<<<<<<<< + * pygame.quit() + * sys.exit() + */ + if (__Pyx_PrintOne(0, __pyx_kp_s_Monitor_exit_was_called) < 0) __PYX_ERR(0, 311, __pyx_L4_error) + + /* "CAStar/AATC_Monitor_Viewer.pyx":312 + * if event.type == pygame.QUIT: + * print("Monitor exit was called") + * pygame.quit() # <<<<<<<<<<<<<< + * sys.exit() + * + */ + __pyx_t_2 = __Pyx_GetModuleGlobalName(__pyx_n_s_pygame); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 312, __pyx_L4_error) + __Pyx_GOTREF(__pyx_t_2); + __pyx_t_13 = __Pyx_PyObject_GetAttrStr(__pyx_t_2, __pyx_n_s_quit); if (unlikely(!__pyx_t_13)) __PYX_ERR(0, 312, __pyx_L4_error) + __Pyx_GOTREF(__pyx_t_13); + __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; + __pyx_t_2 = NULL; + if (CYTHON_UNPACK_METHODS && unlikely(PyMethod_Check(__pyx_t_13))) { + __pyx_t_2 = PyMethod_GET_SELF(__pyx_t_13); + if (likely(__pyx_t_2)) { + PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_13); + __Pyx_INCREF(__pyx_t_2); + __Pyx_INCREF(function); + __Pyx_DECREF_SET(__pyx_t_13, function); + } + } + if (__pyx_t_2) { + __pyx_t_3 = __Pyx_PyObject_CallOneArg(__pyx_t_13, __pyx_t_2); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 312, __pyx_L4_error) + __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; + } else { + __pyx_t_3 = __Pyx_PyObject_CallNoArg(__pyx_t_13); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 312, __pyx_L4_error) + } + __Pyx_GOTREF(__pyx_t_3); + __Pyx_DECREF(__pyx_t_13); __pyx_t_13 = 0; + __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; + + /* "CAStar/AATC_Monitor_Viewer.pyx":313 + * print("Monitor exit was called") + * pygame.quit() + * sys.exit() # <<<<<<<<<<<<<< + * + * elif event.type == pygame.MOUSEBUTTONDOWN: + */ + __pyx_t_13 = __Pyx_GetModuleGlobalName(__pyx_n_s_sys); if (unlikely(!__pyx_t_13)) __PYX_ERR(0, 313, __pyx_L4_error) + __Pyx_GOTREF(__pyx_t_13); + __pyx_t_2 = __Pyx_PyObject_GetAttrStr(__pyx_t_13, __pyx_n_s_exit); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 313, __pyx_L4_error) + __Pyx_GOTREF(__pyx_t_2); + __Pyx_DECREF(__pyx_t_13); __pyx_t_13 = 0; + __pyx_t_13 = NULL; + if (CYTHON_UNPACK_METHODS && unlikely(PyMethod_Check(__pyx_t_2))) { + __pyx_t_13 = PyMethod_GET_SELF(__pyx_t_2); + if (likely(__pyx_t_13)) { + PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_2); + __Pyx_INCREF(__pyx_t_13); + __Pyx_INCREF(function); + __Pyx_DECREF_SET(__pyx_t_2, function); + } + } + if (__pyx_t_13) { + __pyx_t_3 = __Pyx_PyObject_CallOneArg(__pyx_t_2, __pyx_t_13); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 313, __pyx_L4_error) + __Pyx_DECREF(__pyx_t_13); __pyx_t_13 = 0; + } else { + __pyx_t_3 = __Pyx_PyObject_CallNoArg(__pyx_t_2); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 313, __pyx_L4_error) + } + __Pyx_GOTREF(__pyx_t_3); + __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; + __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; + + /* "CAStar/AATC_Monitor_Viewer.pyx":310 + * refresh = True + * for event in pygame.event.get(): + * if event.type == pygame.QUIT: # <<<<<<<<<<<<<< + * print("Monitor exit was called") + * pygame.quit() + */ + goto __pyx_L21; + } + + /* "CAStar/AATC_Monitor_Viewer.pyx":315 + * sys.exit() + * + * elif event.type == pygame.MOUSEBUTTONDOWN: # <<<<<<<<<<<<<< + * print("Camera details") #Mainly for debugging + * print(MonCamera.GetZoom()) + */ + __pyx_t_3 = __Pyx_GetModuleGlobalName(__pyx_n_s_event); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 315, __pyx_L4_error) + __Pyx_GOTREF(__pyx_t_3); + __pyx_t_2 = __Pyx_PyObject_GetAttrStr(__pyx_t_3, __pyx_n_s_type); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 315, __pyx_L4_error) + __Pyx_GOTREF(__pyx_t_2); + __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; + __pyx_t_3 = __Pyx_GetModuleGlobalName(__pyx_n_s_pygame); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 315, __pyx_L4_error) + __Pyx_GOTREF(__pyx_t_3); + __pyx_t_13 = __Pyx_PyObject_GetAttrStr(__pyx_t_3, __pyx_n_s_MOUSEBUTTONDOWN); if (unlikely(!__pyx_t_13)) __PYX_ERR(0, 315, __pyx_L4_error) + __Pyx_GOTREF(__pyx_t_13); + __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; + __pyx_t_3 = PyObject_RichCompare(__pyx_t_2, __pyx_t_13, Py_EQ); __Pyx_XGOTREF(__pyx_t_3); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 315, __pyx_L4_error) + __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; + __Pyx_DECREF(__pyx_t_13); __pyx_t_13 = 0; + __pyx_t_16 = __Pyx_PyObject_IsTrue(__pyx_t_3); if (unlikely(__pyx_t_16 < 0)) __PYX_ERR(0, 315, __pyx_L4_error) + __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; + if (__pyx_t_16) { + + /* "CAStar/AATC_Monitor_Viewer.pyx":316 + * + * elif event.type == pygame.MOUSEBUTTONDOWN: + * print("Camera details") #Mainly for debugging # <<<<<<<<<<<<<< + * print(MonCamera.GetZoom()) + * print(MonCamera.CameraCoord.Get_X()) + */ + if (__Pyx_PrintOne(0, __pyx_kp_s_Camera_details) < 0) __PYX_ERR(0, 316, __pyx_L4_error) + + /* "CAStar/AATC_Monitor_Viewer.pyx":317 + * elif event.type == pygame.MOUSEBUTTONDOWN: + * print("Camera details") #Mainly for debugging + * print(MonCamera.GetZoom()) # <<<<<<<<<<<<<< + * print(MonCamera.CameraCoord.Get_X()) + * print(MonCamera.CameraCoord.Get_Y()) + */ + __pyx_t_13 = __Pyx_GetModuleGlobalName(__pyx_n_s_MonCamera); if (unlikely(!__pyx_t_13)) __PYX_ERR(0, 317, __pyx_L4_error) + __Pyx_GOTREF(__pyx_t_13); + __pyx_t_2 = __Pyx_PyObject_GetAttrStr(__pyx_t_13, __pyx_n_s_GetZoom); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 317, __pyx_L4_error) + __Pyx_GOTREF(__pyx_t_2); + __Pyx_DECREF(__pyx_t_13); __pyx_t_13 = 0; + __pyx_t_13 = NULL; + if (CYTHON_UNPACK_METHODS && unlikely(PyMethod_Check(__pyx_t_2))) { + __pyx_t_13 = PyMethod_GET_SELF(__pyx_t_2); + if (likely(__pyx_t_13)) { + PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_2); + __Pyx_INCREF(__pyx_t_13); + __Pyx_INCREF(function); + __Pyx_DECREF_SET(__pyx_t_2, function); + } + } + if (__pyx_t_13) { + __pyx_t_3 = __Pyx_PyObject_CallOneArg(__pyx_t_2, __pyx_t_13); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 317, __pyx_L4_error) + __Pyx_DECREF(__pyx_t_13); __pyx_t_13 = 0; + } else { + __pyx_t_3 = __Pyx_PyObject_CallNoArg(__pyx_t_2); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 317, __pyx_L4_error) + } + __Pyx_GOTREF(__pyx_t_3); + __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; + if (__Pyx_PrintOne(0, __pyx_t_3) < 0) __PYX_ERR(0, 317, __pyx_L4_error) + __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; + + /* "CAStar/AATC_Monitor_Viewer.pyx":318 + * print("Camera details") #Mainly for debugging + * print(MonCamera.GetZoom()) + * print(MonCamera.CameraCoord.Get_X()) # <<<<<<<<<<<<<< + * print(MonCamera.CameraCoord.Get_Y()) + * print(MonCamera.CameraCoord.Get_XSize()) + */ + __pyx_t_2 = __Pyx_GetModuleGlobalName(__pyx_n_s_MonCamera); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 318, __pyx_L4_error) + __Pyx_GOTREF(__pyx_t_2); + __pyx_t_13 = __Pyx_PyObject_GetAttrStr(__pyx_t_2, __pyx_n_s_CameraCoord); if (unlikely(!__pyx_t_13)) __PYX_ERR(0, 318, __pyx_L4_error) + __Pyx_GOTREF(__pyx_t_13); + __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; + __pyx_t_2 = __Pyx_PyObject_GetAttrStr(__pyx_t_13, __pyx_n_s_Get_X); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 318, __pyx_L4_error) + __Pyx_GOTREF(__pyx_t_2); + __Pyx_DECREF(__pyx_t_13); __pyx_t_13 = 0; + __pyx_t_13 = NULL; + if (CYTHON_UNPACK_METHODS && likely(PyMethod_Check(__pyx_t_2))) { + __pyx_t_13 = PyMethod_GET_SELF(__pyx_t_2); + if (likely(__pyx_t_13)) { + PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_2); + __Pyx_INCREF(__pyx_t_13); + __Pyx_INCREF(function); + __Pyx_DECREF_SET(__pyx_t_2, function); + } + } + if (__pyx_t_13) { + __pyx_t_3 = __Pyx_PyObject_CallOneArg(__pyx_t_2, __pyx_t_13); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 318, __pyx_L4_error) + __Pyx_DECREF(__pyx_t_13); __pyx_t_13 = 0; + } else { + __pyx_t_3 = __Pyx_PyObject_CallNoArg(__pyx_t_2); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 318, __pyx_L4_error) + } + __Pyx_GOTREF(__pyx_t_3); + __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; + if (__Pyx_PrintOne(0, __pyx_t_3) < 0) __PYX_ERR(0, 318, __pyx_L4_error) + __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; + + /* "CAStar/AATC_Monitor_Viewer.pyx":319 + * print(MonCamera.GetZoom()) + * print(MonCamera.CameraCoord.Get_X()) + * print(MonCamera.CameraCoord.Get_Y()) # <<<<<<<<<<<<<< + * print(MonCamera.CameraCoord.Get_XSize()) + * print(MonCamera.CameraCoord.Get_YSize()) + */ + __pyx_t_2 = __Pyx_GetModuleGlobalName(__pyx_n_s_MonCamera); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 319, __pyx_L4_error) + __Pyx_GOTREF(__pyx_t_2); + __pyx_t_13 = __Pyx_PyObject_GetAttrStr(__pyx_t_2, __pyx_n_s_CameraCoord); if (unlikely(!__pyx_t_13)) __PYX_ERR(0, 319, __pyx_L4_error) + __Pyx_GOTREF(__pyx_t_13); + __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; + __pyx_t_2 = __Pyx_PyObject_GetAttrStr(__pyx_t_13, __pyx_n_s_Get_Y); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 319, __pyx_L4_error) + __Pyx_GOTREF(__pyx_t_2); + __Pyx_DECREF(__pyx_t_13); __pyx_t_13 = 0; + __pyx_t_13 = NULL; + if (CYTHON_UNPACK_METHODS && likely(PyMethod_Check(__pyx_t_2))) { + __pyx_t_13 = PyMethod_GET_SELF(__pyx_t_2); + if (likely(__pyx_t_13)) { + PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_2); + __Pyx_INCREF(__pyx_t_13); + __Pyx_INCREF(function); + __Pyx_DECREF_SET(__pyx_t_2, function); + } + } + if (__pyx_t_13) { + __pyx_t_3 = __Pyx_PyObject_CallOneArg(__pyx_t_2, __pyx_t_13); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 319, __pyx_L4_error) + __Pyx_DECREF(__pyx_t_13); __pyx_t_13 = 0; + } else { + __pyx_t_3 = __Pyx_PyObject_CallNoArg(__pyx_t_2); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 319, __pyx_L4_error) + } + __Pyx_GOTREF(__pyx_t_3); + __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; + if (__Pyx_PrintOne(0, __pyx_t_3) < 0) __PYX_ERR(0, 319, __pyx_L4_error) + __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; + + /* "CAStar/AATC_Monitor_Viewer.pyx":320 + * print(MonCamera.CameraCoord.Get_X()) + * print(MonCamera.CameraCoord.Get_Y()) + * print(MonCamera.CameraCoord.Get_XSize()) # <<<<<<<<<<<<<< + * print(MonCamera.CameraCoord.Get_YSize()) + * print(len(MonCamera.DrawObjects)) + */ + __pyx_t_2 = __Pyx_GetModuleGlobalName(__pyx_n_s_MonCamera); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 320, __pyx_L4_error) + __Pyx_GOTREF(__pyx_t_2); + __pyx_t_13 = __Pyx_PyObject_GetAttrStr(__pyx_t_2, __pyx_n_s_CameraCoord); if (unlikely(!__pyx_t_13)) __PYX_ERR(0, 320, __pyx_L4_error) + __Pyx_GOTREF(__pyx_t_13); + __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; + __pyx_t_2 = __Pyx_PyObject_GetAttrStr(__pyx_t_13, __pyx_n_s_Get_XSize); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 320, __pyx_L4_error) + __Pyx_GOTREF(__pyx_t_2); + __Pyx_DECREF(__pyx_t_13); __pyx_t_13 = 0; + __pyx_t_13 = NULL; + if (CYTHON_UNPACK_METHODS && likely(PyMethod_Check(__pyx_t_2))) { + __pyx_t_13 = PyMethod_GET_SELF(__pyx_t_2); + if (likely(__pyx_t_13)) { + PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_2); + __Pyx_INCREF(__pyx_t_13); + __Pyx_INCREF(function); + __Pyx_DECREF_SET(__pyx_t_2, function); + } + } + if (__pyx_t_13) { + __pyx_t_3 = __Pyx_PyObject_CallOneArg(__pyx_t_2, __pyx_t_13); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 320, __pyx_L4_error) + __Pyx_DECREF(__pyx_t_13); __pyx_t_13 = 0; + } else { + __pyx_t_3 = __Pyx_PyObject_CallNoArg(__pyx_t_2); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 320, __pyx_L4_error) + } + __Pyx_GOTREF(__pyx_t_3); + __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; + if (__Pyx_PrintOne(0, __pyx_t_3) < 0) __PYX_ERR(0, 320, __pyx_L4_error) + __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; + + /* "CAStar/AATC_Monitor_Viewer.pyx":321 + * print(MonCamera.CameraCoord.Get_Y()) + * print(MonCamera.CameraCoord.Get_XSize()) + * print(MonCamera.CameraCoord.Get_YSize()) # <<<<<<<<<<<<<< + * print(len(MonCamera.DrawObjects)) + * print("FPS:"+str(clock.get_fps())) + */ + __pyx_t_2 = __Pyx_GetModuleGlobalName(__pyx_n_s_MonCamera); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 321, __pyx_L4_error) + __Pyx_GOTREF(__pyx_t_2); + __pyx_t_13 = __Pyx_PyObject_GetAttrStr(__pyx_t_2, __pyx_n_s_CameraCoord); if (unlikely(!__pyx_t_13)) __PYX_ERR(0, 321, __pyx_L4_error) + __Pyx_GOTREF(__pyx_t_13); + __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; + __pyx_t_2 = __Pyx_PyObject_GetAttrStr(__pyx_t_13, __pyx_n_s_Get_YSize); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 321, __pyx_L4_error) + __Pyx_GOTREF(__pyx_t_2); + __Pyx_DECREF(__pyx_t_13); __pyx_t_13 = 0; + __pyx_t_13 = NULL; + if (CYTHON_UNPACK_METHODS && likely(PyMethod_Check(__pyx_t_2))) { + __pyx_t_13 = PyMethod_GET_SELF(__pyx_t_2); + if (likely(__pyx_t_13)) { + PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_2); + __Pyx_INCREF(__pyx_t_13); + __Pyx_INCREF(function); + __Pyx_DECREF_SET(__pyx_t_2, function); + } + } + if (__pyx_t_13) { + __pyx_t_3 = __Pyx_PyObject_CallOneArg(__pyx_t_2, __pyx_t_13); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 321, __pyx_L4_error) + __Pyx_DECREF(__pyx_t_13); __pyx_t_13 = 0; + } else { + __pyx_t_3 = __Pyx_PyObject_CallNoArg(__pyx_t_2); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 321, __pyx_L4_error) + } + __Pyx_GOTREF(__pyx_t_3); + __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; + if (__Pyx_PrintOne(0, __pyx_t_3) < 0) __PYX_ERR(0, 321, __pyx_L4_error) + __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; + + /* "CAStar/AATC_Monitor_Viewer.pyx":322 + * print(MonCamera.CameraCoord.Get_XSize()) + * print(MonCamera.CameraCoord.Get_YSize()) + * print(len(MonCamera.DrawObjects)) # <<<<<<<<<<<<<< + * print("FPS:"+str(clock.get_fps())) + * elif event.type == pygame.KEYDOWN: + */ + __pyx_t_3 = __Pyx_GetModuleGlobalName(__pyx_n_s_MonCamera); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 322, __pyx_L4_error) + __Pyx_GOTREF(__pyx_t_3); + __pyx_t_2 = __Pyx_PyObject_GetAttrStr(__pyx_t_3, __pyx_n_s_DrawObjects); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 322, __pyx_L4_error) + __Pyx_GOTREF(__pyx_t_2); + __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; + __pyx_t_17 = PyObject_Length(__pyx_t_2); if (unlikely(__pyx_t_17 == -1)) __PYX_ERR(0, 322, __pyx_L4_error) + __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; + __pyx_t_2 = PyInt_FromSsize_t(__pyx_t_17); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 322, __pyx_L4_error) + __Pyx_GOTREF(__pyx_t_2); + if (__Pyx_PrintOne(0, __pyx_t_2) < 0) __PYX_ERR(0, 322, __pyx_L4_error) + __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; + + /* "CAStar/AATC_Monitor_Viewer.pyx":323 + * print(MonCamera.CameraCoord.Get_YSize()) + * print(len(MonCamera.DrawObjects)) + * print("FPS:"+str(clock.get_fps())) # <<<<<<<<<<<<<< + * elif event.type == pygame.KEYDOWN: + * pass + */ + __pyx_t_3 = __Pyx_GetModuleGlobalName(__pyx_n_s_clock); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 323, __pyx_L4_error) + __Pyx_GOTREF(__pyx_t_3); + __pyx_t_13 = __Pyx_PyObject_GetAttrStr(__pyx_t_3, __pyx_n_s_get_fps); if (unlikely(!__pyx_t_13)) __PYX_ERR(0, 323, __pyx_L4_error) + __Pyx_GOTREF(__pyx_t_13); + __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; + __pyx_t_3 = NULL; + if (CYTHON_UNPACK_METHODS && unlikely(PyMethod_Check(__pyx_t_13))) { + __pyx_t_3 = PyMethod_GET_SELF(__pyx_t_13); + if (likely(__pyx_t_3)) { + PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_13); + __Pyx_INCREF(__pyx_t_3); + __Pyx_INCREF(function); + __Pyx_DECREF_SET(__pyx_t_13, function); + } + } + if (__pyx_t_3) { + __pyx_t_2 = __Pyx_PyObject_CallOneArg(__pyx_t_13, __pyx_t_3); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 323, __pyx_L4_error) + __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; + } else { + __pyx_t_2 = __Pyx_PyObject_CallNoArg(__pyx_t_13); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 323, __pyx_L4_error) + } + __Pyx_GOTREF(__pyx_t_2); + __Pyx_DECREF(__pyx_t_13); __pyx_t_13 = 0; + __pyx_t_13 = PyTuple_New(1); if (unlikely(!__pyx_t_13)) __PYX_ERR(0, 323, __pyx_L4_error) + __Pyx_GOTREF(__pyx_t_13); + __Pyx_GIVEREF(__pyx_t_2); + PyTuple_SET_ITEM(__pyx_t_13, 0, __pyx_t_2); + __pyx_t_2 = 0; + __pyx_t_2 = __Pyx_PyObject_Call(((PyObject *)(&PyString_Type)), __pyx_t_13, NULL); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 323, __pyx_L4_error) + __Pyx_GOTREF(__pyx_t_2); + __Pyx_DECREF(__pyx_t_13); __pyx_t_13 = 0; + __pyx_t_13 = PyNumber_Add(__pyx_kp_s_FPS, __pyx_t_2); if (unlikely(!__pyx_t_13)) __PYX_ERR(0, 323, __pyx_L4_error) + __Pyx_GOTREF(__pyx_t_13); + __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; + if (__Pyx_PrintOne(0, __pyx_t_13) < 0) __PYX_ERR(0, 323, __pyx_L4_error) + __Pyx_DECREF(__pyx_t_13); __pyx_t_13 = 0; + + /* "CAStar/AATC_Monitor_Viewer.pyx":315 + * sys.exit() + * + * elif event.type == pygame.MOUSEBUTTONDOWN: # <<<<<<<<<<<<<< + * print("Camera details") #Mainly for debugging + * print(MonCamera.GetZoom()) + */ + goto __pyx_L21; + } + + /* "CAStar/AATC_Monitor_Viewer.pyx":324 + * print(len(MonCamera.DrawObjects)) + * print("FPS:"+str(clock.get_fps())) + * elif event.type == pygame.KEYDOWN: # <<<<<<<<<<<<<< + * pass + * + */ + __pyx_t_13 = __Pyx_GetModuleGlobalName(__pyx_n_s_event); if (unlikely(!__pyx_t_13)) __PYX_ERR(0, 324, __pyx_L4_error) + __Pyx_GOTREF(__pyx_t_13); + __pyx_t_2 = __Pyx_PyObject_GetAttrStr(__pyx_t_13, __pyx_n_s_type); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 324, __pyx_L4_error) + __Pyx_GOTREF(__pyx_t_2); + __Pyx_DECREF(__pyx_t_13); __pyx_t_13 = 0; + __pyx_t_13 = __Pyx_GetModuleGlobalName(__pyx_n_s_pygame); if (unlikely(!__pyx_t_13)) __PYX_ERR(0, 324, __pyx_L4_error) + __Pyx_GOTREF(__pyx_t_13); + __pyx_t_3 = __Pyx_PyObject_GetAttrStr(__pyx_t_13, __pyx_n_s_KEYDOWN); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 324, __pyx_L4_error) + __Pyx_GOTREF(__pyx_t_3); + __Pyx_DECREF(__pyx_t_13); __pyx_t_13 = 0; + __pyx_t_13 = PyObject_RichCompare(__pyx_t_2, __pyx_t_3, Py_EQ); __Pyx_XGOTREF(__pyx_t_13); if (unlikely(!__pyx_t_13)) __PYX_ERR(0, 324, __pyx_L4_error) + __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; + __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; + __pyx_t_16 = __Pyx_PyObject_IsTrue(__pyx_t_13); if (unlikely(__pyx_t_16 < 0)) __PYX_ERR(0, 324, __pyx_L4_error) + __Pyx_DECREF(__pyx_t_13); __pyx_t_13 = 0; + if (__pyx_t_16) { + } + __pyx_L21:; + + /* "CAStar/AATC_Monitor_Viewer.pyx":309 + * if time.time() >= (Last_Refresh_Time + Refresh_Delay): + * refresh = True + * for event in pygame.event.get(): # <<<<<<<<<<<<<< + * if event.type == pygame.QUIT: + * print("Monitor exit was called") + */ + } + __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0; + + /* "CAStar/AATC_Monitor_Viewer.pyx":328 + * + * + * CameraCoord = MonCamera.Get_Coord() # <<<<<<<<<<<<<< + * if pressed()[pygame.K_w]: #Shift camera + * MonCamera.IncrementCameraCoordY(-0.01*CameraCoord.Get_XSize()) #/ as Greater zoom means need more fidelety + */ + __pyx_t_13 = __Pyx_GetModuleGlobalName(__pyx_n_s_MonCamera); if (unlikely(!__pyx_t_13)) __PYX_ERR(0, 328, __pyx_L4_error) + __Pyx_GOTREF(__pyx_t_13); + __pyx_t_3 = __Pyx_PyObject_GetAttrStr(__pyx_t_13, __pyx_n_s_Get_Coord); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 328, __pyx_L4_error) + __Pyx_GOTREF(__pyx_t_3); + __Pyx_DECREF(__pyx_t_13); __pyx_t_13 = 0; + __pyx_t_13 = NULL; + if (CYTHON_UNPACK_METHODS && unlikely(PyMethod_Check(__pyx_t_3))) { + __pyx_t_13 = PyMethod_GET_SELF(__pyx_t_3); + if (likely(__pyx_t_13)) { + PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_3); + __Pyx_INCREF(__pyx_t_13); + __Pyx_INCREF(function); + __Pyx_DECREF_SET(__pyx_t_3, function); + } + } + if (__pyx_t_13) { + __pyx_t_4 = __Pyx_PyObject_CallOneArg(__pyx_t_3, __pyx_t_13); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 328, __pyx_L4_error) + __Pyx_DECREF(__pyx_t_13); __pyx_t_13 = 0; + } else { + __pyx_t_4 = __Pyx_PyObject_CallNoArg(__pyx_t_3); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 328, __pyx_L4_error) + } + __Pyx_GOTREF(__pyx_t_4); + __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; + if (PyDict_SetItem(__pyx_d, __pyx_n_s_CameraCoord, __pyx_t_4) < 0) __PYX_ERR(0, 328, __pyx_L4_error) + __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0; + + /* "CAStar/AATC_Monitor_Viewer.pyx":329 + * + * CameraCoord = MonCamera.Get_Coord() + * if pressed()[pygame.K_w]: #Shift camera # <<<<<<<<<<<<<< + * MonCamera.IncrementCameraCoordY(-0.01*CameraCoord.Get_XSize()) #/ as Greater zoom means need more fidelety + * if pressed()[pygame.K_s]: + */ + __pyx_t_3 = __Pyx_GetModuleGlobalName(__pyx_n_s_pressed); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 329, __pyx_L4_error) + __Pyx_GOTREF(__pyx_t_3); + __pyx_t_13 = NULL; + if (CYTHON_UNPACK_METHODS && unlikely(PyMethod_Check(__pyx_t_3))) { + __pyx_t_13 = PyMethod_GET_SELF(__pyx_t_3); + if (likely(__pyx_t_13)) { + PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_3); + __Pyx_INCREF(__pyx_t_13); + __Pyx_INCREF(function); + __Pyx_DECREF_SET(__pyx_t_3, function); + } + } + if (__pyx_t_13) { + __pyx_t_4 = __Pyx_PyObject_CallOneArg(__pyx_t_3, __pyx_t_13); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 329, __pyx_L4_error) + __Pyx_DECREF(__pyx_t_13); __pyx_t_13 = 0; + } else { + __pyx_t_4 = __Pyx_PyObject_CallNoArg(__pyx_t_3); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 329, __pyx_L4_error) + } + __Pyx_GOTREF(__pyx_t_4); + __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; + __pyx_t_3 = __Pyx_GetModuleGlobalName(__pyx_n_s_pygame); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 329, __pyx_L4_error) + __Pyx_GOTREF(__pyx_t_3); + __pyx_t_13 = __Pyx_PyObject_GetAttrStr(__pyx_t_3, __pyx_n_s_K_w); if (unlikely(!__pyx_t_13)) __PYX_ERR(0, 329, __pyx_L4_error) + __Pyx_GOTREF(__pyx_t_13); + __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; + __pyx_t_3 = PyObject_GetItem(__pyx_t_4, __pyx_t_13); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 329, __pyx_L4_error) + __Pyx_GOTREF(__pyx_t_3); + __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0; + __Pyx_DECREF(__pyx_t_13); __pyx_t_13 = 0; + __pyx_t_16 = __Pyx_PyObject_IsTrue(__pyx_t_3); if (unlikely(__pyx_t_16 < 0)) __PYX_ERR(0, 329, __pyx_L4_error) + __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; + if (__pyx_t_16) { + + /* "CAStar/AATC_Monitor_Viewer.pyx":330 + * CameraCoord = MonCamera.Get_Coord() + * if pressed()[pygame.K_w]: #Shift camera + * MonCamera.IncrementCameraCoordY(-0.01*CameraCoord.Get_XSize()) #/ as Greater zoom means need more fidelety # <<<<<<<<<<<<<< + * if pressed()[pygame.K_s]: + * MonCamera.IncrementCameraCoordY(0.01*CameraCoord.Get_XSize()) + */ + __pyx_t_13 = __Pyx_GetModuleGlobalName(__pyx_n_s_MonCamera); if (unlikely(!__pyx_t_13)) __PYX_ERR(0, 330, __pyx_L4_error) + __Pyx_GOTREF(__pyx_t_13); + __pyx_t_4 = __Pyx_PyObject_GetAttrStr(__pyx_t_13, __pyx_n_s_IncrementCameraCoordY); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 330, __pyx_L4_error) + __Pyx_GOTREF(__pyx_t_4); + __Pyx_DECREF(__pyx_t_13); __pyx_t_13 = 0; + __pyx_t_2 = __Pyx_GetModuleGlobalName(__pyx_n_s_CameraCoord); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 330, __pyx_L4_error) + __Pyx_GOTREF(__pyx_t_2); + __pyx_t_9 = __Pyx_PyObject_GetAttrStr(__pyx_t_2, __pyx_n_s_Get_XSize); if (unlikely(!__pyx_t_9)) __PYX_ERR(0, 330, __pyx_L4_error) + __Pyx_GOTREF(__pyx_t_9); + __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; + __pyx_t_2 = NULL; + if (CYTHON_UNPACK_METHODS && unlikely(PyMethod_Check(__pyx_t_9))) { + __pyx_t_2 = PyMethod_GET_SELF(__pyx_t_9); + if (likely(__pyx_t_2)) { + PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_9); + __Pyx_INCREF(__pyx_t_2); + __Pyx_INCREF(function); + __Pyx_DECREF_SET(__pyx_t_9, function); + } + } + if (__pyx_t_2) { + __pyx_t_13 = __Pyx_PyObject_CallOneArg(__pyx_t_9, __pyx_t_2); if (unlikely(!__pyx_t_13)) __PYX_ERR(0, 330, __pyx_L4_error) + __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; + } else { + __pyx_t_13 = __Pyx_PyObject_CallNoArg(__pyx_t_9); if (unlikely(!__pyx_t_13)) __PYX_ERR(0, 330, __pyx_L4_error) + } + __Pyx_GOTREF(__pyx_t_13); + __Pyx_DECREF(__pyx_t_9); __pyx_t_9 = 0; + __pyx_t_9 = PyNumber_Multiply(__pyx_float_neg_0_01, __pyx_t_13); if (unlikely(!__pyx_t_9)) __PYX_ERR(0, 330, __pyx_L4_error) + __Pyx_GOTREF(__pyx_t_9); + __Pyx_DECREF(__pyx_t_13); __pyx_t_13 = 0; + __pyx_t_13 = NULL; + if (CYTHON_UNPACK_METHODS && unlikely(PyMethod_Check(__pyx_t_4))) { + __pyx_t_13 = PyMethod_GET_SELF(__pyx_t_4); + if (likely(__pyx_t_13)) { + PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_4); + __Pyx_INCREF(__pyx_t_13); + __Pyx_INCREF(function); + __Pyx_DECREF_SET(__pyx_t_4, function); + } + } + if (!__pyx_t_13) { + __pyx_t_3 = __Pyx_PyObject_CallOneArg(__pyx_t_4, __pyx_t_9); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 330, __pyx_L4_error) + __Pyx_DECREF(__pyx_t_9); __pyx_t_9 = 0; + __Pyx_GOTREF(__pyx_t_3); + } else { + #if CYTHON_FAST_PYCALL + if (PyFunction_Check(__pyx_t_4)) { + PyObject *__pyx_temp[2] = {__pyx_t_13, __pyx_t_9}; + __pyx_t_3 = __Pyx_PyFunction_FastCall(__pyx_t_4, __pyx_temp+1-1, 1+1); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 330, __pyx_L4_error) + __Pyx_XDECREF(__pyx_t_13); __pyx_t_13 = 0; + __Pyx_GOTREF(__pyx_t_3); + __Pyx_DECREF(__pyx_t_9); __pyx_t_9 = 0; + } else + #endif + #if CYTHON_FAST_PYCCALL + if (__Pyx_PyFastCFunction_Check(__pyx_t_4)) { + PyObject *__pyx_temp[2] = {__pyx_t_13, __pyx_t_9}; + __pyx_t_3 = __Pyx_PyCFunction_FastCall(__pyx_t_4, __pyx_temp+1-1, 1+1); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 330, __pyx_L4_error) + __Pyx_XDECREF(__pyx_t_13); __pyx_t_13 = 0; + __Pyx_GOTREF(__pyx_t_3); + __Pyx_DECREF(__pyx_t_9); __pyx_t_9 = 0; + } else + #endif + { + __pyx_t_2 = PyTuple_New(1+1); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 330, __pyx_L4_error) + __Pyx_GOTREF(__pyx_t_2); + __Pyx_GIVEREF(__pyx_t_13); PyTuple_SET_ITEM(__pyx_t_2, 0, __pyx_t_13); __pyx_t_13 = NULL; + __Pyx_GIVEREF(__pyx_t_9); + PyTuple_SET_ITEM(__pyx_t_2, 0+1, __pyx_t_9); + __pyx_t_9 = 0; + __pyx_t_3 = __Pyx_PyObject_Call(__pyx_t_4, __pyx_t_2, NULL); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 330, __pyx_L4_error) + __Pyx_GOTREF(__pyx_t_3); + __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; + } + } + __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0; + __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; + + /* "CAStar/AATC_Monitor_Viewer.pyx":329 + * + * CameraCoord = MonCamera.Get_Coord() + * if pressed()[pygame.K_w]: #Shift camera # <<<<<<<<<<<<<< + * MonCamera.IncrementCameraCoordY(-0.01*CameraCoord.Get_XSize()) #/ as Greater zoom means need more fidelety + * if pressed()[pygame.K_s]: + */ + } + + /* "CAStar/AATC_Monitor_Viewer.pyx":331 + * if pressed()[pygame.K_w]: #Shift camera + * MonCamera.IncrementCameraCoordY(-0.01*CameraCoord.Get_XSize()) #/ as Greater zoom means need more fidelety + * if pressed()[pygame.K_s]: # <<<<<<<<<<<<<< + * MonCamera.IncrementCameraCoordY(0.01*CameraCoord.Get_XSize()) + * if pressed()[pygame.K_a]: + */ + __pyx_t_4 = __Pyx_GetModuleGlobalName(__pyx_n_s_pressed); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 331, __pyx_L4_error) + __Pyx_GOTREF(__pyx_t_4); + __pyx_t_2 = NULL; + if (CYTHON_UNPACK_METHODS && unlikely(PyMethod_Check(__pyx_t_4))) { + __pyx_t_2 = PyMethod_GET_SELF(__pyx_t_4); + if (likely(__pyx_t_2)) { + PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_4); + __Pyx_INCREF(__pyx_t_2); + __Pyx_INCREF(function); + __Pyx_DECREF_SET(__pyx_t_4, function); + } + } + if (__pyx_t_2) { + __pyx_t_3 = __Pyx_PyObject_CallOneArg(__pyx_t_4, __pyx_t_2); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 331, __pyx_L4_error) + __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; + } else { + __pyx_t_3 = __Pyx_PyObject_CallNoArg(__pyx_t_4); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 331, __pyx_L4_error) + } + __Pyx_GOTREF(__pyx_t_3); + __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0; + __pyx_t_4 = __Pyx_GetModuleGlobalName(__pyx_n_s_pygame); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 331, __pyx_L4_error) + __Pyx_GOTREF(__pyx_t_4); + __pyx_t_2 = __Pyx_PyObject_GetAttrStr(__pyx_t_4, __pyx_n_s_K_s); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 331, __pyx_L4_error) + __Pyx_GOTREF(__pyx_t_2); + __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0; + __pyx_t_4 = PyObject_GetItem(__pyx_t_3, __pyx_t_2); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 331, __pyx_L4_error) + __Pyx_GOTREF(__pyx_t_4); + __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; + __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; + __pyx_t_16 = __Pyx_PyObject_IsTrue(__pyx_t_4); if (unlikely(__pyx_t_16 < 0)) __PYX_ERR(0, 331, __pyx_L4_error) + __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0; + if (__pyx_t_16) { + + /* "CAStar/AATC_Monitor_Viewer.pyx":332 + * MonCamera.IncrementCameraCoordY(-0.01*CameraCoord.Get_XSize()) #/ as Greater zoom means need more fidelety + * if pressed()[pygame.K_s]: + * MonCamera.IncrementCameraCoordY(0.01*CameraCoord.Get_XSize()) # <<<<<<<<<<<<<< + * if pressed()[pygame.K_a]: + * MonCamera.IncrementCameraCoordX(-0.01*CameraCoord.Get_XSize()) + */ + __pyx_t_2 = __Pyx_GetModuleGlobalName(__pyx_n_s_MonCamera); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 332, __pyx_L4_error) + __Pyx_GOTREF(__pyx_t_2); + __pyx_t_3 = __Pyx_PyObject_GetAttrStr(__pyx_t_2, __pyx_n_s_IncrementCameraCoordY); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 332, __pyx_L4_error) + __Pyx_GOTREF(__pyx_t_3); + __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; + __pyx_t_9 = __Pyx_GetModuleGlobalName(__pyx_n_s_CameraCoord); if (unlikely(!__pyx_t_9)) __PYX_ERR(0, 332, __pyx_L4_error) + __Pyx_GOTREF(__pyx_t_9); + __pyx_t_13 = __Pyx_PyObject_GetAttrStr(__pyx_t_9, __pyx_n_s_Get_XSize); if (unlikely(!__pyx_t_13)) __PYX_ERR(0, 332, __pyx_L4_error) + __Pyx_GOTREF(__pyx_t_13); + __Pyx_DECREF(__pyx_t_9); __pyx_t_9 = 0; + __pyx_t_9 = NULL; + if (CYTHON_UNPACK_METHODS && unlikely(PyMethod_Check(__pyx_t_13))) { + __pyx_t_9 = PyMethod_GET_SELF(__pyx_t_13); + if (likely(__pyx_t_9)) { + PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_13); + __Pyx_INCREF(__pyx_t_9); + __Pyx_INCREF(function); + __Pyx_DECREF_SET(__pyx_t_13, function); + } + } + if (__pyx_t_9) { + __pyx_t_2 = __Pyx_PyObject_CallOneArg(__pyx_t_13, __pyx_t_9); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 332, __pyx_L4_error) + __Pyx_DECREF(__pyx_t_9); __pyx_t_9 = 0; + } else { + __pyx_t_2 = __Pyx_PyObject_CallNoArg(__pyx_t_13); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 332, __pyx_L4_error) + } + __Pyx_GOTREF(__pyx_t_2); + __Pyx_DECREF(__pyx_t_13); __pyx_t_13 = 0; + __pyx_t_13 = PyNumber_Multiply(__pyx_float_0_01, __pyx_t_2); if (unlikely(!__pyx_t_13)) __PYX_ERR(0, 332, __pyx_L4_error) + __Pyx_GOTREF(__pyx_t_13); + __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; + __pyx_t_2 = NULL; + if (CYTHON_UNPACK_METHODS && unlikely(PyMethod_Check(__pyx_t_3))) { + __pyx_t_2 = PyMethod_GET_SELF(__pyx_t_3); + if (likely(__pyx_t_2)) { + PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_3); + __Pyx_INCREF(__pyx_t_2); + __Pyx_INCREF(function); + __Pyx_DECREF_SET(__pyx_t_3, function); + } + } + if (!__pyx_t_2) { + __pyx_t_4 = __Pyx_PyObject_CallOneArg(__pyx_t_3, __pyx_t_13); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 332, __pyx_L4_error) + __Pyx_DECREF(__pyx_t_13); __pyx_t_13 = 0; + __Pyx_GOTREF(__pyx_t_4); + } else { + #if CYTHON_FAST_PYCALL + if (PyFunction_Check(__pyx_t_3)) { + PyObject *__pyx_temp[2] = {__pyx_t_2, __pyx_t_13}; + __pyx_t_4 = __Pyx_PyFunction_FastCall(__pyx_t_3, __pyx_temp+1-1, 1+1); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 332, __pyx_L4_error) + __Pyx_XDECREF(__pyx_t_2); __pyx_t_2 = 0; + __Pyx_GOTREF(__pyx_t_4); + __Pyx_DECREF(__pyx_t_13); __pyx_t_13 = 0; + } else + #endif + #if CYTHON_FAST_PYCCALL + if (__Pyx_PyFastCFunction_Check(__pyx_t_3)) { + PyObject *__pyx_temp[2] = {__pyx_t_2, __pyx_t_13}; + __pyx_t_4 = __Pyx_PyCFunction_FastCall(__pyx_t_3, __pyx_temp+1-1, 1+1); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 332, __pyx_L4_error) + __Pyx_XDECREF(__pyx_t_2); __pyx_t_2 = 0; + __Pyx_GOTREF(__pyx_t_4); + __Pyx_DECREF(__pyx_t_13); __pyx_t_13 = 0; + } else + #endif + { + __pyx_t_9 = PyTuple_New(1+1); if (unlikely(!__pyx_t_9)) __PYX_ERR(0, 332, __pyx_L4_error) + __Pyx_GOTREF(__pyx_t_9); + __Pyx_GIVEREF(__pyx_t_2); PyTuple_SET_ITEM(__pyx_t_9, 0, __pyx_t_2); __pyx_t_2 = NULL; + __Pyx_GIVEREF(__pyx_t_13); + PyTuple_SET_ITEM(__pyx_t_9, 0+1, __pyx_t_13); + __pyx_t_13 = 0; + __pyx_t_4 = __Pyx_PyObject_Call(__pyx_t_3, __pyx_t_9, NULL); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 332, __pyx_L4_error) + __Pyx_GOTREF(__pyx_t_4); + __Pyx_DECREF(__pyx_t_9); __pyx_t_9 = 0; + } + } + __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; + __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0; + + /* "CAStar/AATC_Monitor_Viewer.pyx":331 + * if pressed()[pygame.K_w]: #Shift camera + * MonCamera.IncrementCameraCoordY(-0.01*CameraCoord.Get_XSize()) #/ as Greater zoom means need more fidelety + * if pressed()[pygame.K_s]: # <<<<<<<<<<<<<< + * MonCamera.IncrementCameraCoordY(0.01*CameraCoord.Get_XSize()) + * if pressed()[pygame.K_a]: + */ + } + + /* "CAStar/AATC_Monitor_Viewer.pyx":333 + * if pressed()[pygame.K_s]: + * MonCamera.IncrementCameraCoordY(0.01*CameraCoord.Get_XSize()) + * if pressed()[pygame.K_a]: # <<<<<<<<<<<<<< + * MonCamera.IncrementCameraCoordX(-0.01*CameraCoord.Get_XSize()) + * if pressed()[pygame.K_d]: + */ + __pyx_t_3 = __Pyx_GetModuleGlobalName(__pyx_n_s_pressed); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 333, __pyx_L4_error) + __Pyx_GOTREF(__pyx_t_3); + __pyx_t_9 = NULL; + if (CYTHON_UNPACK_METHODS && unlikely(PyMethod_Check(__pyx_t_3))) { + __pyx_t_9 = PyMethod_GET_SELF(__pyx_t_3); + if (likely(__pyx_t_9)) { + PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_3); + __Pyx_INCREF(__pyx_t_9); + __Pyx_INCREF(function); + __Pyx_DECREF_SET(__pyx_t_3, function); + } + } + if (__pyx_t_9) { + __pyx_t_4 = __Pyx_PyObject_CallOneArg(__pyx_t_3, __pyx_t_9); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 333, __pyx_L4_error) + __Pyx_DECREF(__pyx_t_9); __pyx_t_9 = 0; + } else { + __pyx_t_4 = __Pyx_PyObject_CallNoArg(__pyx_t_3); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 333, __pyx_L4_error) + } + __Pyx_GOTREF(__pyx_t_4); + __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; + __pyx_t_3 = __Pyx_GetModuleGlobalName(__pyx_n_s_pygame); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 333, __pyx_L4_error) + __Pyx_GOTREF(__pyx_t_3); + __pyx_t_9 = __Pyx_PyObject_GetAttrStr(__pyx_t_3, __pyx_n_s_K_a); if (unlikely(!__pyx_t_9)) __PYX_ERR(0, 333, __pyx_L4_error) + __Pyx_GOTREF(__pyx_t_9); + __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; + __pyx_t_3 = PyObject_GetItem(__pyx_t_4, __pyx_t_9); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 333, __pyx_L4_error) + __Pyx_GOTREF(__pyx_t_3); + __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0; + __Pyx_DECREF(__pyx_t_9); __pyx_t_9 = 0; + __pyx_t_16 = __Pyx_PyObject_IsTrue(__pyx_t_3); if (unlikely(__pyx_t_16 < 0)) __PYX_ERR(0, 333, __pyx_L4_error) + __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; + if (__pyx_t_16) { + + /* "CAStar/AATC_Monitor_Viewer.pyx":334 + * MonCamera.IncrementCameraCoordY(0.01*CameraCoord.Get_XSize()) + * if pressed()[pygame.K_a]: + * MonCamera.IncrementCameraCoordX(-0.01*CameraCoord.Get_XSize()) # <<<<<<<<<<<<<< + * if pressed()[pygame.K_d]: + * MonCamera.IncrementCameraCoordX(0.01*CameraCoord.Get_XSize()) + */ + __pyx_t_9 = __Pyx_GetModuleGlobalName(__pyx_n_s_MonCamera); if (unlikely(!__pyx_t_9)) __PYX_ERR(0, 334, __pyx_L4_error) + __Pyx_GOTREF(__pyx_t_9); + __pyx_t_4 = __Pyx_PyObject_GetAttrStr(__pyx_t_9, __pyx_n_s_IncrementCameraCoordX); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 334, __pyx_L4_error) + __Pyx_GOTREF(__pyx_t_4); + __Pyx_DECREF(__pyx_t_9); __pyx_t_9 = 0; + __pyx_t_13 = __Pyx_GetModuleGlobalName(__pyx_n_s_CameraCoord); if (unlikely(!__pyx_t_13)) __PYX_ERR(0, 334, __pyx_L4_error) + __Pyx_GOTREF(__pyx_t_13); + __pyx_t_2 = __Pyx_PyObject_GetAttrStr(__pyx_t_13, __pyx_n_s_Get_XSize); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 334, __pyx_L4_error) + __Pyx_GOTREF(__pyx_t_2); + __Pyx_DECREF(__pyx_t_13); __pyx_t_13 = 0; + __pyx_t_13 = NULL; + if (CYTHON_UNPACK_METHODS && unlikely(PyMethod_Check(__pyx_t_2))) { + __pyx_t_13 = PyMethod_GET_SELF(__pyx_t_2); + if (likely(__pyx_t_13)) { + PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_2); + __Pyx_INCREF(__pyx_t_13); + __Pyx_INCREF(function); + __Pyx_DECREF_SET(__pyx_t_2, function); + } + } + if (__pyx_t_13) { + __pyx_t_9 = __Pyx_PyObject_CallOneArg(__pyx_t_2, __pyx_t_13); if (unlikely(!__pyx_t_9)) __PYX_ERR(0, 334, __pyx_L4_error) + __Pyx_DECREF(__pyx_t_13); __pyx_t_13 = 0; + } else { + __pyx_t_9 = __Pyx_PyObject_CallNoArg(__pyx_t_2); if (unlikely(!__pyx_t_9)) __PYX_ERR(0, 334, __pyx_L4_error) + } + __Pyx_GOTREF(__pyx_t_9); + __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; + __pyx_t_2 = PyNumber_Multiply(__pyx_float_neg_0_01, __pyx_t_9); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 334, __pyx_L4_error) + __Pyx_GOTREF(__pyx_t_2); + __Pyx_DECREF(__pyx_t_9); __pyx_t_9 = 0; + __pyx_t_9 = NULL; + if (CYTHON_UNPACK_METHODS && unlikely(PyMethod_Check(__pyx_t_4))) { + __pyx_t_9 = PyMethod_GET_SELF(__pyx_t_4); + if (likely(__pyx_t_9)) { + PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_4); + __Pyx_INCREF(__pyx_t_9); + __Pyx_INCREF(function); + __Pyx_DECREF_SET(__pyx_t_4, function); + } + } + if (!__pyx_t_9) { + __pyx_t_3 = __Pyx_PyObject_CallOneArg(__pyx_t_4, __pyx_t_2); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 334, __pyx_L4_error) + __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; + __Pyx_GOTREF(__pyx_t_3); + } else { + #if CYTHON_FAST_PYCALL + if (PyFunction_Check(__pyx_t_4)) { + PyObject *__pyx_temp[2] = {__pyx_t_9, __pyx_t_2}; + __pyx_t_3 = __Pyx_PyFunction_FastCall(__pyx_t_4, __pyx_temp+1-1, 1+1); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 334, __pyx_L4_error) + __Pyx_XDECREF(__pyx_t_9); __pyx_t_9 = 0; + __Pyx_GOTREF(__pyx_t_3); + __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; + } else + #endif + #if CYTHON_FAST_PYCCALL + if (__Pyx_PyFastCFunction_Check(__pyx_t_4)) { + PyObject *__pyx_temp[2] = {__pyx_t_9, __pyx_t_2}; + __pyx_t_3 = __Pyx_PyCFunction_FastCall(__pyx_t_4, __pyx_temp+1-1, 1+1); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 334, __pyx_L4_error) + __Pyx_XDECREF(__pyx_t_9); __pyx_t_9 = 0; + __Pyx_GOTREF(__pyx_t_3); + __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; + } else + #endif + { + __pyx_t_13 = PyTuple_New(1+1); if (unlikely(!__pyx_t_13)) __PYX_ERR(0, 334, __pyx_L4_error) + __Pyx_GOTREF(__pyx_t_13); + __Pyx_GIVEREF(__pyx_t_9); PyTuple_SET_ITEM(__pyx_t_13, 0, __pyx_t_9); __pyx_t_9 = NULL; + __Pyx_GIVEREF(__pyx_t_2); + PyTuple_SET_ITEM(__pyx_t_13, 0+1, __pyx_t_2); + __pyx_t_2 = 0; + __pyx_t_3 = __Pyx_PyObject_Call(__pyx_t_4, __pyx_t_13, NULL); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 334, __pyx_L4_error) + __Pyx_GOTREF(__pyx_t_3); + __Pyx_DECREF(__pyx_t_13); __pyx_t_13 = 0; + } + } + __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0; + __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; + + /* "CAStar/AATC_Monitor_Viewer.pyx":333 + * if pressed()[pygame.K_s]: + * MonCamera.IncrementCameraCoordY(0.01*CameraCoord.Get_XSize()) + * if pressed()[pygame.K_a]: # <<<<<<<<<<<<<< + * MonCamera.IncrementCameraCoordX(-0.01*CameraCoord.Get_XSize()) + * if pressed()[pygame.K_d]: + */ + } + + /* "CAStar/AATC_Monitor_Viewer.pyx":335 + * if pressed()[pygame.K_a]: + * MonCamera.IncrementCameraCoordX(-0.01*CameraCoord.Get_XSize()) + * if pressed()[pygame.K_d]: # <<<<<<<<<<<<<< + * MonCamera.IncrementCameraCoordX(0.01*CameraCoord.Get_XSize()) + * + */ + __pyx_t_4 = __Pyx_GetModuleGlobalName(__pyx_n_s_pressed); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 335, __pyx_L4_error) + __Pyx_GOTREF(__pyx_t_4); + __pyx_t_13 = NULL; + if (CYTHON_UNPACK_METHODS && unlikely(PyMethod_Check(__pyx_t_4))) { + __pyx_t_13 = PyMethod_GET_SELF(__pyx_t_4); + if (likely(__pyx_t_13)) { + PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_4); + __Pyx_INCREF(__pyx_t_13); + __Pyx_INCREF(function); + __Pyx_DECREF_SET(__pyx_t_4, function); + } + } + if (__pyx_t_13) { + __pyx_t_3 = __Pyx_PyObject_CallOneArg(__pyx_t_4, __pyx_t_13); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 335, __pyx_L4_error) + __Pyx_DECREF(__pyx_t_13); __pyx_t_13 = 0; + } else { + __pyx_t_3 = __Pyx_PyObject_CallNoArg(__pyx_t_4); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 335, __pyx_L4_error) + } + __Pyx_GOTREF(__pyx_t_3); + __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0; + __pyx_t_4 = __Pyx_GetModuleGlobalName(__pyx_n_s_pygame); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 335, __pyx_L4_error) + __Pyx_GOTREF(__pyx_t_4); + __pyx_t_13 = __Pyx_PyObject_GetAttrStr(__pyx_t_4, __pyx_n_s_K_d); if (unlikely(!__pyx_t_13)) __PYX_ERR(0, 335, __pyx_L4_error) + __Pyx_GOTREF(__pyx_t_13); + __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0; + __pyx_t_4 = PyObject_GetItem(__pyx_t_3, __pyx_t_13); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 335, __pyx_L4_error) + __Pyx_GOTREF(__pyx_t_4); + __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; + __Pyx_DECREF(__pyx_t_13); __pyx_t_13 = 0; + __pyx_t_16 = __Pyx_PyObject_IsTrue(__pyx_t_4); if (unlikely(__pyx_t_16 < 0)) __PYX_ERR(0, 335, __pyx_L4_error) + __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0; + if (__pyx_t_16) { + + /* "CAStar/AATC_Monitor_Viewer.pyx":336 + * MonCamera.IncrementCameraCoordX(-0.01*CameraCoord.Get_XSize()) + * if pressed()[pygame.K_d]: + * MonCamera.IncrementCameraCoordX(0.01*CameraCoord.Get_XSize()) # <<<<<<<<<<<<<< + * + * if pressed()[pygame.K_q]:#Zoom out + */ + __pyx_t_13 = __Pyx_GetModuleGlobalName(__pyx_n_s_MonCamera); if (unlikely(!__pyx_t_13)) __PYX_ERR(0, 336, __pyx_L4_error) + __Pyx_GOTREF(__pyx_t_13); + __pyx_t_3 = __Pyx_PyObject_GetAttrStr(__pyx_t_13, __pyx_n_s_IncrementCameraCoordX); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 336, __pyx_L4_error) + __Pyx_GOTREF(__pyx_t_3); + __Pyx_DECREF(__pyx_t_13); __pyx_t_13 = 0; + __pyx_t_2 = __Pyx_GetModuleGlobalName(__pyx_n_s_CameraCoord); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 336, __pyx_L4_error) + __Pyx_GOTREF(__pyx_t_2); + __pyx_t_9 = __Pyx_PyObject_GetAttrStr(__pyx_t_2, __pyx_n_s_Get_XSize); if (unlikely(!__pyx_t_9)) __PYX_ERR(0, 336, __pyx_L4_error) + __Pyx_GOTREF(__pyx_t_9); + __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; + __pyx_t_2 = NULL; + if (CYTHON_UNPACK_METHODS && unlikely(PyMethod_Check(__pyx_t_9))) { + __pyx_t_2 = PyMethod_GET_SELF(__pyx_t_9); + if (likely(__pyx_t_2)) { + PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_9); + __Pyx_INCREF(__pyx_t_2); + __Pyx_INCREF(function); + __Pyx_DECREF_SET(__pyx_t_9, function); + } + } + if (__pyx_t_2) { + __pyx_t_13 = __Pyx_PyObject_CallOneArg(__pyx_t_9, __pyx_t_2); if (unlikely(!__pyx_t_13)) __PYX_ERR(0, 336, __pyx_L4_error) + __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; + } else { + __pyx_t_13 = __Pyx_PyObject_CallNoArg(__pyx_t_9); if (unlikely(!__pyx_t_13)) __PYX_ERR(0, 336, __pyx_L4_error) + } + __Pyx_GOTREF(__pyx_t_13); + __Pyx_DECREF(__pyx_t_9); __pyx_t_9 = 0; + __pyx_t_9 = PyNumber_Multiply(__pyx_float_0_01, __pyx_t_13); if (unlikely(!__pyx_t_9)) __PYX_ERR(0, 336, __pyx_L4_error) + __Pyx_GOTREF(__pyx_t_9); + __Pyx_DECREF(__pyx_t_13); __pyx_t_13 = 0; + __pyx_t_13 = NULL; + if (CYTHON_UNPACK_METHODS && unlikely(PyMethod_Check(__pyx_t_3))) { + __pyx_t_13 = PyMethod_GET_SELF(__pyx_t_3); + if (likely(__pyx_t_13)) { + PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_3); + __Pyx_INCREF(__pyx_t_13); + __Pyx_INCREF(function); + __Pyx_DECREF_SET(__pyx_t_3, function); + } + } + if (!__pyx_t_13) { + __pyx_t_4 = __Pyx_PyObject_CallOneArg(__pyx_t_3, __pyx_t_9); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 336, __pyx_L4_error) + __Pyx_DECREF(__pyx_t_9); __pyx_t_9 = 0; + __Pyx_GOTREF(__pyx_t_4); + } else { + #if CYTHON_FAST_PYCALL + if (PyFunction_Check(__pyx_t_3)) { + PyObject *__pyx_temp[2] = {__pyx_t_13, __pyx_t_9}; + __pyx_t_4 = __Pyx_PyFunction_FastCall(__pyx_t_3, __pyx_temp+1-1, 1+1); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 336, __pyx_L4_error) + __Pyx_XDECREF(__pyx_t_13); __pyx_t_13 = 0; + __Pyx_GOTREF(__pyx_t_4); + __Pyx_DECREF(__pyx_t_9); __pyx_t_9 = 0; + } else + #endif + #if CYTHON_FAST_PYCCALL + if (__Pyx_PyFastCFunction_Check(__pyx_t_3)) { + PyObject *__pyx_temp[2] = {__pyx_t_13, __pyx_t_9}; + __pyx_t_4 = __Pyx_PyCFunction_FastCall(__pyx_t_3, __pyx_temp+1-1, 1+1); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 336, __pyx_L4_error) + __Pyx_XDECREF(__pyx_t_13); __pyx_t_13 = 0; + __Pyx_GOTREF(__pyx_t_4); + __Pyx_DECREF(__pyx_t_9); __pyx_t_9 = 0; + } else + #endif + { + __pyx_t_2 = PyTuple_New(1+1); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 336, __pyx_L4_error) + __Pyx_GOTREF(__pyx_t_2); + __Pyx_GIVEREF(__pyx_t_13); PyTuple_SET_ITEM(__pyx_t_2, 0, __pyx_t_13); __pyx_t_13 = NULL; + __Pyx_GIVEREF(__pyx_t_9); + PyTuple_SET_ITEM(__pyx_t_2, 0+1, __pyx_t_9); + __pyx_t_9 = 0; + __pyx_t_4 = __Pyx_PyObject_Call(__pyx_t_3, __pyx_t_2, NULL); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 336, __pyx_L4_error) + __Pyx_GOTREF(__pyx_t_4); + __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; + } + } + __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; + __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0; + + /* "CAStar/AATC_Monitor_Viewer.pyx":335 + * if pressed()[pygame.K_a]: + * MonCamera.IncrementCameraCoordX(-0.01*CameraCoord.Get_XSize()) + * if pressed()[pygame.K_d]: # <<<<<<<<<<<<<< + * MonCamera.IncrementCameraCoordX(0.01*CameraCoord.Get_XSize()) + * + */ + } + + /* "CAStar/AATC_Monitor_Viewer.pyx":338 + * MonCamera.IncrementCameraCoordX(0.01*CameraCoord.Get_XSize()) + * + * if pressed()[pygame.K_q]:#Zoom out # <<<<<<<<<<<<<< + * MonCamera.SetZoom(0.99*MonCamera.GetZoom()) + * if pressed()[pygame.K_e]:#Zoom in + */ + __pyx_t_3 = __Pyx_GetModuleGlobalName(__pyx_n_s_pressed); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 338, __pyx_L4_error) + __Pyx_GOTREF(__pyx_t_3); + __pyx_t_2 = NULL; + if (CYTHON_UNPACK_METHODS && unlikely(PyMethod_Check(__pyx_t_3))) { + __pyx_t_2 = PyMethod_GET_SELF(__pyx_t_3); + if (likely(__pyx_t_2)) { + PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_3); + __Pyx_INCREF(__pyx_t_2); + __Pyx_INCREF(function); + __Pyx_DECREF_SET(__pyx_t_3, function); + } + } + if (__pyx_t_2) { + __pyx_t_4 = __Pyx_PyObject_CallOneArg(__pyx_t_3, __pyx_t_2); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 338, __pyx_L4_error) + __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; + } else { + __pyx_t_4 = __Pyx_PyObject_CallNoArg(__pyx_t_3); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 338, __pyx_L4_error) + } + __Pyx_GOTREF(__pyx_t_4); + __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; + __pyx_t_3 = __Pyx_GetModuleGlobalName(__pyx_n_s_pygame); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 338, __pyx_L4_error) + __Pyx_GOTREF(__pyx_t_3); + __pyx_t_2 = __Pyx_PyObject_GetAttrStr(__pyx_t_3, __pyx_n_s_K_q); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 338, __pyx_L4_error) + __Pyx_GOTREF(__pyx_t_2); + __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; + __pyx_t_3 = PyObject_GetItem(__pyx_t_4, __pyx_t_2); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 338, __pyx_L4_error) + __Pyx_GOTREF(__pyx_t_3); + __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0; + __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; + __pyx_t_16 = __Pyx_PyObject_IsTrue(__pyx_t_3); if (unlikely(__pyx_t_16 < 0)) __PYX_ERR(0, 338, __pyx_L4_error) + __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; + if (__pyx_t_16) { + + /* "CAStar/AATC_Monitor_Viewer.pyx":339 + * + * if pressed()[pygame.K_q]:#Zoom out + * MonCamera.SetZoom(0.99*MonCamera.GetZoom()) # <<<<<<<<<<<<<< + * if pressed()[pygame.K_e]:#Zoom in + * MonCamera.SetZoom(1.01*MonCamera.GetZoom()) + */ + __pyx_t_2 = __Pyx_GetModuleGlobalName(__pyx_n_s_MonCamera); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 339, __pyx_L4_error) + __Pyx_GOTREF(__pyx_t_2); + __pyx_t_4 = __Pyx_PyObject_GetAttrStr(__pyx_t_2, __pyx_n_s_SetZoom); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 339, __pyx_L4_error) + __Pyx_GOTREF(__pyx_t_4); + __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; + __pyx_t_9 = __Pyx_GetModuleGlobalName(__pyx_n_s_MonCamera); if (unlikely(!__pyx_t_9)) __PYX_ERR(0, 339, __pyx_L4_error) + __Pyx_GOTREF(__pyx_t_9); + __pyx_t_13 = __Pyx_PyObject_GetAttrStr(__pyx_t_9, __pyx_n_s_GetZoom); if (unlikely(!__pyx_t_13)) __PYX_ERR(0, 339, __pyx_L4_error) + __Pyx_GOTREF(__pyx_t_13); + __Pyx_DECREF(__pyx_t_9); __pyx_t_9 = 0; + __pyx_t_9 = NULL; + if (CYTHON_UNPACK_METHODS && unlikely(PyMethod_Check(__pyx_t_13))) { + __pyx_t_9 = PyMethod_GET_SELF(__pyx_t_13); + if (likely(__pyx_t_9)) { + PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_13); + __Pyx_INCREF(__pyx_t_9); + __Pyx_INCREF(function); + __Pyx_DECREF_SET(__pyx_t_13, function); + } + } + if (__pyx_t_9) { + __pyx_t_2 = __Pyx_PyObject_CallOneArg(__pyx_t_13, __pyx_t_9); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 339, __pyx_L4_error) + __Pyx_DECREF(__pyx_t_9); __pyx_t_9 = 0; + } else { + __pyx_t_2 = __Pyx_PyObject_CallNoArg(__pyx_t_13); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 339, __pyx_L4_error) + } + __Pyx_GOTREF(__pyx_t_2); + __Pyx_DECREF(__pyx_t_13); __pyx_t_13 = 0; + __pyx_t_13 = PyNumber_Multiply(__pyx_float_0_99, __pyx_t_2); if (unlikely(!__pyx_t_13)) __PYX_ERR(0, 339, __pyx_L4_error) + __Pyx_GOTREF(__pyx_t_13); + __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; + __pyx_t_2 = NULL; + if (CYTHON_UNPACK_METHODS && unlikely(PyMethod_Check(__pyx_t_4))) { + __pyx_t_2 = PyMethod_GET_SELF(__pyx_t_4); + if (likely(__pyx_t_2)) { + PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_4); + __Pyx_INCREF(__pyx_t_2); + __Pyx_INCREF(function); + __Pyx_DECREF_SET(__pyx_t_4, function); + } + } + if (!__pyx_t_2) { + __pyx_t_3 = __Pyx_PyObject_CallOneArg(__pyx_t_4, __pyx_t_13); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 339, __pyx_L4_error) + __Pyx_DECREF(__pyx_t_13); __pyx_t_13 = 0; + __Pyx_GOTREF(__pyx_t_3); + } else { + #if CYTHON_FAST_PYCALL + if (PyFunction_Check(__pyx_t_4)) { + PyObject *__pyx_temp[2] = {__pyx_t_2, __pyx_t_13}; + __pyx_t_3 = __Pyx_PyFunction_FastCall(__pyx_t_4, __pyx_temp+1-1, 1+1); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 339, __pyx_L4_error) + __Pyx_XDECREF(__pyx_t_2); __pyx_t_2 = 0; + __Pyx_GOTREF(__pyx_t_3); + __Pyx_DECREF(__pyx_t_13); __pyx_t_13 = 0; + } else + #endif + #if CYTHON_FAST_PYCCALL + if (__Pyx_PyFastCFunction_Check(__pyx_t_4)) { + PyObject *__pyx_temp[2] = {__pyx_t_2, __pyx_t_13}; + __pyx_t_3 = __Pyx_PyCFunction_FastCall(__pyx_t_4, __pyx_temp+1-1, 1+1); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 339, __pyx_L4_error) + __Pyx_XDECREF(__pyx_t_2); __pyx_t_2 = 0; + __Pyx_GOTREF(__pyx_t_3); + __Pyx_DECREF(__pyx_t_13); __pyx_t_13 = 0; + } else + #endif + { + __pyx_t_9 = PyTuple_New(1+1); if (unlikely(!__pyx_t_9)) __PYX_ERR(0, 339, __pyx_L4_error) + __Pyx_GOTREF(__pyx_t_9); + __Pyx_GIVEREF(__pyx_t_2); PyTuple_SET_ITEM(__pyx_t_9, 0, __pyx_t_2); __pyx_t_2 = NULL; + __Pyx_GIVEREF(__pyx_t_13); + PyTuple_SET_ITEM(__pyx_t_9, 0+1, __pyx_t_13); + __pyx_t_13 = 0; + __pyx_t_3 = __Pyx_PyObject_Call(__pyx_t_4, __pyx_t_9, NULL); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 339, __pyx_L4_error) + __Pyx_GOTREF(__pyx_t_3); + __Pyx_DECREF(__pyx_t_9); __pyx_t_9 = 0; + } + } + __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0; + __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; + + /* "CAStar/AATC_Monitor_Viewer.pyx":338 + * MonCamera.IncrementCameraCoordX(0.01*CameraCoord.Get_XSize()) + * + * if pressed()[pygame.K_q]:#Zoom out # <<<<<<<<<<<<<< + * MonCamera.SetZoom(0.99*MonCamera.GetZoom()) + * if pressed()[pygame.K_e]:#Zoom in + */ + } + + /* "CAStar/AATC_Monitor_Viewer.pyx":340 + * if pressed()[pygame.K_q]:#Zoom out + * MonCamera.SetZoom(0.99*MonCamera.GetZoom()) + * if pressed()[pygame.K_e]:#Zoom in # <<<<<<<<<<<<<< + * MonCamera.SetZoom(1.01*MonCamera.GetZoom()) + * + */ + __pyx_t_4 = __Pyx_GetModuleGlobalName(__pyx_n_s_pressed); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 340, __pyx_L4_error) + __Pyx_GOTREF(__pyx_t_4); + __pyx_t_9 = NULL; + if (CYTHON_UNPACK_METHODS && unlikely(PyMethod_Check(__pyx_t_4))) { + __pyx_t_9 = PyMethod_GET_SELF(__pyx_t_4); + if (likely(__pyx_t_9)) { + PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_4); + __Pyx_INCREF(__pyx_t_9); + __Pyx_INCREF(function); + __Pyx_DECREF_SET(__pyx_t_4, function); + } + } + if (__pyx_t_9) { + __pyx_t_3 = __Pyx_PyObject_CallOneArg(__pyx_t_4, __pyx_t_9); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 340, __pyx_L4_error) + __Pyx_DECREF(__pyx_t_9); __pyx_t_9 = 0; + } else { + __pyx_t_3 = __Pyx_PyObject_CallNoArg(__pyx_t_4); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 340, __pyx_L4_error) + } + __Pyx_GOTREF(__pyx_t_3); + __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0; + __pyx_t_4 = __Pyx_GetModuleGlobalName(__pyx_n_s_pygame); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 340, __pyx_L4_error) + __Pyx_GOTREF(__pyx_t_4); + __pyx_t_9 = __Pyx_PyObject_GetAttrStr(__pyx_t_4, __pyx_n_s_K_e); if (unlikely(!__pyx_t_9)) __PYX_ERR(0, 340, __pyx_L4_error) + __Pyx_GOTREF(__pyx_t_9); + __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0; + __pyx_t_4 = PyObject_GetItem(__pyx_t_3, __pyx_t_9); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 340, __pyx_L4_error) + __Pyx_GOTREF(__pyx_t_4); + __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; + __Pyx_DECREF(__pyx_t_9); __pyx_t_9 = 0; + __pyx_t_16 = __Pyx_PyObject_IsTrue(__pyx_t_4); if (unlikely(__pyx_t_16 < 0)) __PYX_ERR(0, 340, __pyx_L4_error) + __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0; + if (__pyx_t_16) { + + /* "CAStar/AATC_Monitor_Viewer.pyx":341 + * MonCamera.SetZoom(0.99*MonCamera.GetZoom()) + * if pressed()[pygame.K_e]:#Zoom in + * MonCamera.SetZoom(1.01*MonCamera.GetZoom()) # <<<<<<<<<<<<<< + * + * if pressed()[pygame.K_SPACE]:#Zoom in + */ + __pyx_t_9 = __Pyx_GetModuleGlobalName(__pyx_n_s_MonCamera); if (unlikely(!__pyx_t_9)) __PYX_ERR(0, 341, __pyx_L4_error) + __Pyx_GOTREF(__pyx_t_9); + __pyx_t_3 = __Pyx_PyObject_GetAttrStr(__pyx_t_9, __pyx_n_s_SetZoom); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 341, __pyx_L4_error) + __Pyx_GOTREF(__pyx_t_3); + __Pyx_DECREF(__pyx_t_9); __pyx_t_9 = 0; + __pyx_t_13 = __Pyx_GetModuleGlobalName(__pyx_n_s_MonCamera); if (unlikely(!__pyx_t_13)) __PYX_ERR(0, 341, __pyx_L4_error) + __Pyx_GOTREF(__pyx_t_13); + __pyx_t_2 = __Pyx_PyObject_GetAttrStr(__pyx_t_13, __pyx_n_s_GetZoom); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 341, __pyx_L4_error) + __Pyx_GOTREF(__pyx_t_2); + __Pyx_DECREF(__pyx_t_13); __pyx_t_13 = 0; + __pyx_t_13 = NULL; + if (CYTHON_UNPACK_METHODS && unlikely(PyMethod_Check(__pyx_t_2))) { + __pyx_t_13 = PyMethod_GET_SELF(__pyx_t_2); + if (likely(__pyx_t_13)) { + PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_2); + __Pyx_INCREF(__pyx_t_13); + __Pyx_INCREF(function); + __Pyx_DECREF_SET(__pyx_t_2, function); + } + } + if (__pyx_t_13) { + __pyx_t_9 = __Pyx_PyObject_CallOneArg(__pyx_t_2, __pyx_t_13); if (unlikely(!__pyx_t_9)) __PYX_ERR(0, 341, __pyx_L4_error) + __Pyx_DECREF(__pyx_t_13); __pyx_t_13 = 0; + } else { + __pyx_t_9 = __Pyx_PyObject_CallNoArg(__pyx_t_2); if (unlikely(!__pyx_t_9)) __PYX_ERR(0, 341, __pyx_L4_error) + } + __Pyx_GOTREF(__pyx_t_9); + __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; + __pyx_t_2 = PyNumber_Multiply(__pyx_float_1_01, __pyx_t_9); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 341, __pyx_L4_error) + __Pyx_GOTREF(__pyx_t_2); + __Pyx_DECREF(__pyx_t_9); __pyx_t_9 = 0; + __pyx_t_9 = NULL; + if (CYTHON_UNPACK_METHODS && unlikely(PyMethod_Check(__pyx_t_3))) { + __pyx_t_9 = PyMethod_GET_SELF(__pyx_t_3); + if (likely(__pyx_t_9)) { + PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_3); + __Pyx_INCREF(__pyx_t_9); + __Pyx_INCREF(function); + __Pyx_DECREF_SET(__pyx_t_3, function); + } + } + if (!__pyx_t_9) { + __pyx_t_4 = __Pyx_PyObject_CallOneArg(__pyx_t_3, __pyx_t_2); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 341, __pyx_L4_error) + __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; + __Pyx_GOTREF(__pyx_t_4); + } else { + #if CYTHON_FAST_PYCALL + if (PyFunction_Check(__pyx_t_3)) { + PyObject *__pyx_temp[2] = {__pyx_t_9, __pyx_t_2}; + __pyx_t_4 = __Pyx_PyFunction_FastCall(__pyx_t_3, __pyx_temp+1-1, 1+1); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 341, __pyx_L4_error) + __Pyx_XDECREF(__pyx_t_9); __pyx_t_9 = 0; + __Pyx_GOTREF(__pyx_t_4); + __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; + } else + #endif + #if CYTHON_FAST_PYCCALL + if (__Pyx_PyFastCFunction_Check(__pyx_t_3)) { + PyObject *__pyx_temp[2] = {__pyx_t_9, __pyx_t_2}; + __pyx_t_4 = __Pyx_PyCFunction_FastCall(__pyx_t_3, __pyx_temp+1-1, 1+1); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 341, __pyx_L4_error) + __Pyx_XDECREF(__pyx_t_9); __pyx_t_9 = 0; + __Pyx_GOTREF(__pyx_t_4); + __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; + } else + #endif + { + __pyx_t_13 = PyTuple_New(1+1); if (unlikely(!__pyx_t_13)) __PYX_ERR(0, 341, __pyx_L4_error) + __Pyx_GOTREF(__pyx_t_13); + __Pyx_GIVEREF(__pyx_t_9); PyTuple_SET_ITEM(__pyx_t_13, 0, __pyx_t_9); __pyx_t_9 = NULL; + __Pyx_GIVEREF(__pyx_t_2); + PyTuple_SET_ITEM(__pyx_t_13, 0+1, __pyx_t_2); + __pyx_t_2 = 0; + __pyx_t_4 = __Pyx_PyObject_Call(__pyx_t_3, __pyx_t_13, NULL); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 341, __pyx_L4_error) + __Pyx_GOTREF(__pyx_t_4); + __Pyx_DECREF(__pyx_t_13); __pyx_t_13 = 0; + } + } + __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; + __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0; + + /* "CAStar/AATC_Monitor_Viewer.pyx":340 + * if pressed()[pygame.K_q]:#Zoom out + * MonCamera.SetZoom(0.99*MonCamera.GetZoom()) + * if pressed()[pygame.K_e]:#Zoom in # <<<<<<<<<<<<<< + * MonCamera.SetZoom(1.01*MonCamera.GetZoom()) + * + */ + } + + /* "CAStar/AATC_Monitor_Viewer.pyx":343 + * MonCamera.SetZoom(1.01*MonCamera.GetZoom()) + * + * if pressed()[pygame.K_SPACE]:#Zoom in # <<<<<<<<<<<<<< + * refresh = True + * + */ + __pyx_t_3 = __Pyx_GetModuleGlobalName(__pyx_n_s_pressed); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 343, __pyx_L4_error) + __Pyx_GOTREF(__pyx_t_3); + __pyx_t_13 = NULL; + if (CYTHON_UNPACK_METHODS && unlikely(PyMethod_Check(__pyx_t_3))) { + __pyx_t_13 = PyMethod_GET_SELF(__pyx_t_3); + if (likely(__pyx_t_13)) { + PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_3); + __Pyx_INCREF(__pyx_t_13); + __Pyx_INCREF(function); + __Pyx_DECREF_SET(__pyx_t_3, function); + } + } + if (__pyx_t_13) { + __pyx_t_4 = __Pyx_PyObject_CallOneArg(__pyx_t_3, __pyx_t_13); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 343, __pyx_L4_error) + __Pyx_DECREF(__pyx_t_13); __pyx_t_13 = 0; + } else { + __pyx_t_4 = __Pyx_PyObject_CallNoArg(__pyx_t_3); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 343, __pyx_L4_error) + } + __Pyx_GOTREF(__pyx_t_4); + __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; + __pyx_t_3 = __Pyx_GetModuleGlobalName(__pyx_n_s_pygame); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 343, __pyx_L4_error) + __Pyx_GOTREF(__pyx_t_3); + __pyx_t_13 = __Pyx_PyObject_GetAttrStr(__pyx_t_3, __pyx_n_s_K_SPACE); if (unlikely(!__pyx_t_13)) __PYX_ERR(0, 343, __pyx_L4_error) + __Pyx_GOTREF(__pyx_t_13); + __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; + __pyx_t_3 = PyObject_GetItem(__pyx_t_4, __pyx_t_13); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 343, __pyx_L4_error) + __Pyx_GOTREF(__pyx_t_3); + __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0; + __Pyx_DECREF(__pyx_t_13); __pyx_t_13 = 0; + __pyx_t_16 = __Pyx_PyObject_IsTrue(__pyx_t_3); if (unlikely(__pyx_t_16 < 0)) __PYX_ERR(0, 343, __pyx_L4_error) + __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; + if (__pyx_t_16) { + + /* "CAStar/AATC_Monitor_Viewer.pyx":344 + * + * if pressed()[pygame.K_SPACE]:#Zoom in + * refresh = True # <<<<<<<<<<<<<< + * + * + */ + if (PyDict_SetItem(__pyx_d, __pyx_n_s_refresh, Py_True) < 0) __PYX_ERR(0, 344, __pyx_L4_error) + + /* "CAStar/AATC_Monitor_Viewer.pyx":343 + * MonCamera.SetZoom(1.01*MonCamera.GetZoom()) + * + * if pressed()[pygame.K_SPACE]:#Zoom in # <<<<<<<<<<<<<< + * refresh = True + * + */ + } + + /* "CAStar/AATC_Monitor_Viewer.pyx":347 + * + * + * MonCamera.UpdateCameraSize() # <<<<<<<<<<<<<< + * MonCamera.Draw() + * pygame.display.flip() + */ + __pyx_t_13 = __Pyx_GetModuleGlobalName(__pyx_n_s_MonCamera); if (unlikely(!__pyx_t_13)) __PYX_ERR(0, 347, __pyx_L4_error) + __Pyx_GOTREF(__pyx_t_13); + __pyx_t_4 = __Pyx_PyObject_GetAttrStr(__pyx_t_13, __pyx_n_s_UpdateCameraSize); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 347, __pyx_L4_error) + __Pyx_GOTREF(__pyx_t_4); + __Pyx_DECREF(__pyx_t_13); __pyx_t_13 = 0; + __pyx_t_13 = NULL; + if (CYTHON_UNPACK_METHODS && unlikely(PyMethod_Check(__pyx_t_4))) { + __pyx_t_13 = PyMethod_GET_SELF(__pyx_t_4); + if (likely(__pyx_t_13)) { + PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_4); + __Pyx_INCREF(__pyx_t_13); + __Pyx_INCREF(function); + __Pyx_DECREF_SET(__pyx_t_4, function); + } + } + if (__pyx_t_13) { + __pyx_t_3 = __Pyx_PyObject_CallOneArg(__pyx_t_4, __pyx_t_13); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 347, __pyx_L4_error) + __Pyx_DECREF(__pyx_t_13); __pyx_t_13 = 0; + } else { + __pyx_t_3 = __Pyx_PyObject_CallNoArg(__pyx_t_4); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 347, __pyx_L4_error) + } + __Pyx_GOTREF(__pyx_t_3); + __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0; + __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; + + /* "CAStar/AATC_Monitor_Viewer.pyx":348 + * + * MonCamera.UpdateCameraSize() + * MonCamera.Draw() # <<<<<<<<<<<<<< + * pygame.display.flip() + * clock.tick(60) + */ + __pyx_t_4 = __Pyx_GetModuleGlobalName(__pyx_n_s_MonCamera); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 348, __pyx_L4_error) + __Pyx_GOTREF(__pyx_t_4); + __pyx_t_13 = __Pyx_PyObject_GetAttrStr(__pyx_t_4, __pyx_n_s_Draw); if (unlikely(!__pyx_t_13)) __PYX_ERR(0, 348, __pyx_L4_error) + __Pyx_GOTREF(__pyx_t_13); + __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0; + __pyx_t_4 = NULL; + if (CYTHON_UNPACK_METHODS && unlikely(PyMethod_Check(__pyx_t_13))) { + __pyx_t_4 = PyMethod_GET_SELF(__pyx_t_13); + if (likely(__pyx_t_4)) { + PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_13); + __Pyx_INCREF(__pyx_t_4); + __Pyx_INCREF(function); + __Pyx_DECREF_SET(__pyx_t_13, function); + } + } + if (__pyx_t_4) { + __pyx_t_3 = __Pyx_PyObject_CallOneArg(__pyx_t_13, __pyx_t_4); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 348, __pyx_L4_error) + __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0; + } else { + __pyx_t_3 = __Pyx_PyObject_CallNoArg(__pyx_t_13); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 348, __pyx_L4_error) + } + __Pyx_GOTREF(__pyx_t_3); + __Pyx_DECREF(__pyx_t_13); __pyx_t_13 = 0; + __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; + + /* "CAStar/AATC_Monitor_Viewer.pyx":349 + * MonCamera.UpdateCameraSize() + * MonCamera.Draw() + * pygame.display.flip() # <<<<<<<<<<<<<< + * clock.tick(60) + * + */ + __pyx_t_13 = __Pyx_GetModuleGlobalName(__pyx_n_s_pygame); if (unlikely(!__pyx_t_13)) __PYX_ERR(0, 349, __pyx_L4_error) + __Pyx_GOTREF(__pyx_t_13); + __pyx_t_4 = __Pyx_PyObject_GetAttrStr(__pyx_t_13, __pyx_n_s_display); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 349, __pyx_L4_error) + __Pyx_GOTREF(__pyx_t_4); + __Pyx_DECREF(__pyx_t_13); __pyx_t_13 = 0; + __pyx_t_13 = __Pyx_PyObject_GetAttrStr(__pyx_t_4, __pyx_n_s_flip); if (unlikely(!__pyx_t_13)) __PYX_ERR(0, 349, __pyx_L4_error) + __Pyx_GOTREF(__pyx_t_13); + __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0; + __pyx_t_4 = NULL; + if (CYTHON_UNPACK_METHODS && likely(PyMethod_Check(__pyx_t_13))) { + __pyx_t_4 = PyMethod_GET_SELF(__pyx_t_13); + if (likely(__pyx_t_4)) { + PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_13); + __Pyx_INCREF(__pyx_t_4); + __Pyx_INCREF(function); + __Pyx_DECREF_SET(__pyx_t_13, function); + } + } + if (__pyx_t_4) { + __pyx_t_3 = __Pyx_PyObject_CallOneArg(__pyx_t_13, __pyx_t_4); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 349, __pyx_L4_error) + __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0; + } else { + __pyx_t_3 = __Pyx_PyObject_CallNoArg(__pyx_t_13); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 349, __pyx_L4_error) + } + __Pyx_GOTREF(__pyx_t_3); + __Pyx_DECREF(__pyx_t_13); __pyx_t_13 = 0; + __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; + + /* "CAStar/AATC_Monitor_Viewer.pyx":350 + * MonCamera.Draw() + * pygame.display.flip() + * clock.tick(60) # <<<<<<<<<<<<<< + * + * + */ + __pyx_t_3 = __Pyx_GetModuleGlobalName(__pyx_n_s_clock); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 350, __pyx_L4_error) + __Pyx_GOTREF(__pyx_t_3); + __pyx_t_13 = __Pyx_PyObject_GetAttrStr(__pyx_t_3, __pyx_n_s_tick); if (unlikely(!__pyx_t_13)) __PYX_ERR(0, 350, __pyx_L4_error) + __Pyx_GOTREF(__pyx_t_13); + __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; + __pyx_t_3 = __Pyx_PyObject_Call(__pyx_t_13, __pyx_tuple__82, NULL); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 350, __pyx_L4_error) + __Pyx_GOTREF(__pyx_t_3); + __Pyx_DECREF(__pyx_t_13); __pyx_t_13 = 0; + __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; + } + } + + /* "CAStar/AATC_Monitor_Viewer.pyx":289 + * Exit = "N" + * while Exit != "Y": + * try: # <<<<<<<<<<<<<< + * M = AATC_Monitor.CreateMonitorInterface(IP = "127.0.0.1",Port = 8001) + * M.Login("Zini","") + */ + } + __Pyx_XDECREF(__pyx_t_6); __pyx_t_6 = 0; + __Pyx_XDECREF(__pyx_t_7); __pyx_t_7 = 0; + __Pyx_XDECREF(__pyx_t_8); __pyx_t_8 = 0; + goto __pyx_L11_try_end; + __pyx_L4_error:; + __Pyx_PyThreadState_assign + __Pyx_XDECREF(__pyx_t_11); __pyx_t_11 = 0; + __Pyx_XDECREF(__pyx_t_1); __pyx_t_1 = 0; + __Pyx_XDECREF(__pyx_t_10); __pyx_t_10 = 0; + __Pyx_XDECREF(__pyx_t_9); __pyx_t_9 = 0; + __Pyx_XDECREF(__pyx_t_2); __pyx_t_2 = 0; + __Pyx_XDECREF(__pyx_t_4); __pyx_t_4 = 0; + __Pyx_XDECREF(__pyx_t_13); __pyx_t_13 = 0; + __Pyx_XDECREF(__pyx_t_3); __pyx_t_3 = 0; + + /* "CAStar/AATC_Monitor_Viewer.pyx":354 + * + * + * except Exception as e: # <<<<<<<<<<<<<< + * print(e) + * print("An error occured, restarting main loop") + */ + __pyx_t_12 = __Pyx_PyErr_ExceptionMatches(((PyObject *)(&((PyTypeObject*)PyExc_Exception)[0]))); + if (__pyx_t_12) { + __Pyx_AddTraceback("CAStar.AATC_Monitor_Viewer", __pyx_clineno, __pyx_lineno, __pyx_filename); + if (__Pyx_GetException(&__pyx_t_3, &__pyx_t_13, &__pyx_t_4) < 0) __PYX_ERR(0, 354, __pyx_L6_except_error) + __Pyx_GOTREF(__pyx_t_3); + __Pyx_GOTREF(__pyx_t_13); + __Pyx_GOTREF(__pyx_t_4); + if (PyDict_SetItem(__pyx_d, __pyx_n_s_e, __pyx_t_13) < 0) __PYX_ERR(0, 354, __pyx_L6_except_error) + + /* "CAStar/AATC_Monitor_Viewer.pyx":355 + * + * except Exception as e: + * print(e) # <<<<<<<<<<<<<< + * print("An error occured, restarting main loop") + * Exit = input("Exit? Y/N").upper() + */ + __pyx_t_2 = __Pyx_GetModuleGlobalName(__pyx_n_s_e); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 355, __pyx_L6_except_error) + __Pyx_GOTREF(__pyx_t_2); + if (__Pyx_PrintOne(0, __pyx_t_2) < 0) __PYX_ERR(0, 355, __pyx_L6_except_error) + __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; + + /* "CAStar/AATC_Monitor_Viewer.pyx":356 + * except Exception as e: + * print(e) + * print("An error occured, restarting main loop") # <<<<<<<<<<<<<< + * Exit = input("Exit? Y/N").upper() + * + */ + if (__Pyx_PrintOne(0, __pyx_kp_s_An_error_occured_restarting_main) < 0) __PYX_ERR(0, 356, __pyx_L6_except_error) + + /* "CAStar/AATC_Monitor_Viewer.pyx":357 + * print(e) + * print("An error occured, restarting main loop") + * Exit = input("Exit? Y/N").upper() # <<<<<<<<<<<<<< + * + * + */ + __pyx_t_9 = __Pyx_PyObject_Call(__pyx_builtin_input, __pyx_tuple__83, NULL); if (unlikely(!__pyx_t_9)) __PYX_ERR(0, 357, __pyx_L6_except_error) + __Pyx_GOTREF(__pyx_t_9); + __pyx_t_10 = __Pyx_PyObject_GetAttrStr(__pyx_t_9, __pyx_n_s_upper); if (unlikely(!__pyx_t_10)) __PYX_ERR(0, 357, __pyx_L6_except_error) + __Pyx_GOTREF(__pyx_t_10); + __Pyx_DECREF(__pyx_t_9); __pyx_t_9 = 0; + __pyx_t_9 = NULL; + if (CYTHON_UNPACK_METHODS && likely(PyMethod_Check(__pyx_t_10))) { + __pyx_t_9 = PyMethod_GET_SELF(__pyx_t_10); + if (likely(__pyx_t_9)) { + PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_10); + __Pyx_INCREF(__pyx_t_9); + __Pyx_INCREF(function); + __Pyx_DECREF_SET(__pyx_t_10, function); + } + } + if (__pyx_t_9) { + __pyx_t_2 = __Pyx_PyObject_CallOneArg(__pyx_t_10, __pyx_t_9); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 357, __pyx_L6_except_error) + __Pyx_DECREF(__pyx_t_9); __pyx_t_9 = 0; + } else { + __pyx_t_2 = __Pyx_PyObject_CallNoArg(__pyx_t_10); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 357, __pyx_L6_except_error) + } + __Pyx_GOTREF(__pyx_t_2); + __Pyx_DECREF(__pyx_t_10); __pyx_t_10 = 0; + if (PyDict_SetItem(__pyx_d, __pyx_n_s_Exit, __pyx_t_2) < 0) __PYX_ERR(0, 357, __pyx_L6_except_error) + __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; + __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; + __Pyx_DECREF(__pyx_t_13); __pyx_t_13 = 0; + __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0; + goto __pyx_L5_exception_handled; + } + goto __pyx_L6_except_error; + __pyx_L6_except_error:; + + /* "CAStar/AATC_Monitor_Viewer.pyx":289 + * Exit = "N" + * while Exit != "Y": + * try: # <<<<<<<<<<<<<< + * M = AATC_Monitor.CreateMonitorInterface(IP = "127.0.0.1",Port = 8001) + * M.Login("Zini","") + */ + __Pyx_PyThreadState_assign + __Pyx_XGIVEREF(__pyx_t_6); + __Pyx_XGIVEREF(__pyx_t_7); + __Pyx_XGIVEREF(__pyx_t_8); + __Pyx_ExceptionReset(__pyx_t_6, __pyx_t_7, __pyx_t_8); + goto __pyx_L1_error; + __pyx_L5_exception_handled:; + __Pyx_PyThreadState_assign + __Pyx_XGIVEREF(__pyx_t_6); + __Pyx_XGIVEREF(__pyx_t_7); + __Pyx_XGIVEREF(__pyx_t_8); + __Pyx_ExceptionReset(__pyx_t_6, __pyx_t_7, __pyx_t_8); + __pyx_L11_try_end:; + } + } + + /* "CAStar/AATC_Monitor_Viewer.pyx":1 + * #!python # <<<<<<<<<<<<<< + * #cython: boundscheck=False, wraparound=False, infer_types=True,cdivision = True + * + */ + __pyx_t_4 = PyDict_New(); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 1, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_4); + if (PyDict_SetItem(__pyx_d, __pyx_n_s_test, __pyx_t_4) < 0) __PYX_ERR(0, 1, __pyx_L1_error) + __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0; + + /*--- Wrapped vars code ---*/ + + goto __pyx_L0; + __pyx_L1_error:; + __Pyx_XDECREF(__pyx_t_1); + __Pyx_XDECREF(__pyx_t_2); + __Pyx_XDECREF(__pyx_t_3); + __Pyx_XDECREF(__pyx_t_4); + __Pyx_XDECREF(__pyx_t_9); + __Pyx_XDECREF(__pyx_t_10); + __Pyx_XDECREF(__pyx_t_11); + __Pyx_XDECREF(__pyx_t_13); + if (__pyx_m) { + if (__pyx_d) { + __Pyx_AddTraceback("init CAStar.AATC_Monitor_Viewer", 0, __pyx_lineno, __pyx_filename); + } + Py_DECREF(__pyx_m); __pyx_m = 0; + } else if (!PyErr_Occurred()) { + PyErr_SetString(PyExc_ImportError, "init CAStar.AATC_Monitor_Viewer"); + } + __pyx_L0:; + __Pyx_RefNannyFinishContext(); + #if PY_MAJOR_VERSION < 3 + return; + #else + return __pyx_m; + #endif +} + +/* --- Runtime support code --- */ +/* Refnanny */ +#if CYTHON_REFNANNY +static __Pyx_RefNannyAPIStruct *__Pyx_RefNannyImportAPI(const char *modname) { + PyObject *m = NULL, *p = NULL; + void *r = NULL; + m = PyImport_ImportModule((char *)modname); + if (!m) goto end; + p = PyObject_GetAttrString(m, (char *)"RefNannyAPI"); + if (!p) goto end; + r = PyLong_AsVoidPtr(p); +end: + Py_XDECREF(p); + Py_XDECREF(m); + return (__Pyx_RefNannyAPIStruct *)r; +} +#endif + +/* GetBuiltinName */ +static PyObject *__Pyx_GetBuiltinName(PyObject *name) { + PyObject* result = __Pyx_PyObject_GetAttrStr(__pyx_b, name); + if (unlikely(!result)) { + PyErr_Format(PyExc_NameError, +#if PY_MAJOR_VERSION >= 3 + "name '%U' is not defined", name); +#else + "name '%.200s' is not defined", PyString_AS_STRING(name)); +#endif + } + return result; +} + +/* RaiseArgTupleInvalid */ +static void __Pyx_RaiseArgtupleInvalid( + const char* func_name, + int exact, + Py_ssize_t num_min, + Py_ssize_t num_max, + Py_ssize_t num_found) +{ + Py_ssize_t num_expected; + const char *more_or_less; + if (num_found < num_min) { + num_expected = num_min; + more_or_less = "at least"; + } else { + num_expected = num_max; + more_or_less = "at most"; + } + if (exact) { + more_or_less = "exactly"; + } + PyErr_Format(PyExc_TypeError, + "%.200s() takes %.8s %" CYTHON_FORMAT_SSIZE_T "d positional argument%.1s (%" CYTHON_FORMAT_SSIZE_T "d given)", + func_name, more_or_less, num_expected, + (num_expected == 1) ? "" : "s", num_found); +} + +/* RaiseDoubleKeywords */ +static void __Pyx_RaiseDoubleKeywordsError( + const char* func_name, + PyObject* kw_name) +{ + PyErr_Format(PyExc_TypeError, + #if PY_MAJOR_VERSION >= 3 + "%s() got multiple values for keyword argument '%U'", func_name, kw_name); + #else + "%s() got multiple values for keyword argument '%s'", func_name, + PyString_AsString(kw_name)); + #endif +} + +/* ParseKeywords */ +static int __Pyx_ParseOptionalKeywords( + PyObject *kwds, + PyObject **argnames[], + PyObject *kwds2, + PyObject *values[], + Py_ssize_t num_pos_args, + const char* function_name) +{ + PyObject *key = 0, *value = 0; + Py_ssize_t pos = 0; + PyObject*** name; + PyObject*** first_kw_arg = argnames + num_pos_args; + while (PyDict_Next(kwds, &pos, &key, &value)) { + name = first_kw_arg; + while (*name && (**name != key)) name++; + if (*name) { + values[name-argnames] = value; + continue; + } + name = first_kw_arg; + #if PY_MAJOR_VERSION < 3 + if (likely(PyString_CheckExact(key)) || likely(PyString_Check(key))) { + while (*name) { + if ((CYTHON_COMPILING_IN_PYPY || PyString_GET_SIZE(**name) == PyString_GET_SIZE(key)) + && _PyString_Eq(**name, key)) { + values[name-argnames] = value; + break; + } + name++; + } + if (*name) continue; + else { + PyObject*** argname = argnames; + while (argname != first_kw_arg) { + if ((**argname == key) || ( + (CYTHON_COMPILING_IN_PYPY || PyString_GET_SIZE(**argname) == PyString_GET_SIZE(key)) + && _PyString_Eq(**argname, key))) { + goto arg_passed_twice; + } + argname++; + } + } + } else + #endif + if (likely(PyUnicode_Check(key))) { + while (*name) { + int cmp = (**name == key) ? 0 : + #if !CYTHON_COMPILING_IN_PYPY && PY_MAJOR_VERSION >= 3 + (PyUnicode_GET_SIZE(**name) != PyUnicode_GET_SIZE(key)) ? 1 : + #endif + PyUnicode_Compare(**name, key); + if (cmp < 0 && unlikely(PyErr_Occurred())) goto bad; + if (cmp == 0) { + values[name-argnames] = value; + break; + } + name++; + } + if (*name) continue; + else { + PyObject*** argname = argnames; + while (argname != first_kw_arg) { + int cmp = (**argname == key) ? 0 : + #if !CYTHON_COMPILING_IN_PYPY && PY_MAJOR_VERSION >= 3 + (PyUnicode_GET_SIZE(**argname) != PyUnicode_GET_SIZE(key)) ? 1 : + #endif + PyUnicode_Compare(**argname, key); + if (cmp < 0 && unlikely(PyErr_Occurred())) goto bad; + if (cmp == 0) goto arg_passed_twice; + argname++; + } + } + } else + goto invalid_keyword_type; + if (kwds2) { + if (unlikely(PyDict_SetItem(kwds2, key, value))) goto bad; + } else { + goto invalid_keyword; + } + } + return 0; +arg_passed_twice: + __Pyx_RaiseDoubleKeywordsError(function_name, key); + goto bad; +invalid_keyword_type: + PyErr_Format(PyExc_TypeError, + "%.200s() keywords must be strings", function_name); + goto bad; +invalid_keyword: + PyErr_Format(PyExc_TypeError, + #if PY_MAJOR_VERSION < 3 + "%.200s() got an unexpected keyword argument '%.200s'", + function_name, PyString_AsString(key)); + #else + "%s() got an unexpected keyword argument '%U'", + function_name, key); + #endif +bad: + return -1; +} + +/* GetModuleGlobalName */ +static CYTHON_INLINE PyObject *__Pyx_GetModuleGlobalName(PyObject *name) { + PyObject *result; +#if !CYTHON_AVOID_BORROWED_REFS + result = PyDict_GetItem(__pyx_d, name); + if (likely(result)) { + Py_INCREF(result); + } else { +#else + result = PyObject_GetItem(__pyx_d, name); + if (!result) { + PyErr_Clear(); +#endif + result = __Pyx_GetBuiltinName(name); + } + return result; +} + +/* PyCFunctionFastCall */ + #if CYTHON_FAST_PYCCALL +static CYTHON_INLINE PyObject * __Pyx_PyCFunction_FastCall(PyObject *func_obj, PyObject **args, Py_ssize_t nargs) { + PyCFunctionObject *func = (PyCFunctionObject*)func_obj; + PyCFunction meth = PyCFunction_GET_FUNCTION(func); + PyObject *self = PyCFunction_GET_SELF(func); + int flags = PyCFunction_GET_FLAGS(func); + assert(PyCFunction_Check(func)); + assert(METH_FASTCALL == (flags & ~(METH_CLASS | METH_STATIC | METH_COEXIST | METH_KEYWORDS))); + assert(nargs >= 0); + assert(nargs == 0 || args != NULL); + /* _PyCFunction_FastCallDict() must not be called with an exception set, + because it may clear it (directly or indirectly) and so the + caller loses its exception */ + assert(!PyErr_Occurred()); + if ((PY_VERSION_HEX < 0x030700A0) || unlikely(flags & METH_KEYWORDS)) { + return (*((__Pyx_PyCFunctionFastWithKeywords)meth)) (self, args, nargs, NULL); + } else { + return (*((__Pyx_PyCFunctionFast)meth)) (self, args, nargs); + } +} +#endif + +/* PyFunctionFastCall */ + #if CYTHON_FAST_PYCALL +#include "frameobject.h" +static PyObject* __Pyx_PyFunction_FastCallNoKw(PyCodeObject *co, PyObject **args, Py_ssize_t na, + PyObject *globals) { + PyFrameObject *f; + PyThreadState *tstate = PyThreadState_GET(); + PyObject **fastlocals; + Py_ssize_t i; + PyObject *result; + assert(globals != NULL); + /* XXX Perhaps we should create a specialized + PyFrame_New() that doesn't take locals, but does + take builtins without sanity checking them. + */ + assert(tstate != NULL); + f = PyFrame_New(tstate, co, globals, NULL); + if (f == NULL) { + return NULL; + } + fastlocals = f->f_localsplus; + for (i = 0; i < na; i++) { + Py_INCREF(*args); + fastlocals[i] = *args++; + } + result = PyEval_EvalFrameEx(f,0); + ++tstate->recursion_depth; + Py_DECREF(f); + --tstate->recursion_depth; + return result; +} +#if 1 || PY_VERSION_HEX < 0x030600B1 +static PyObject *__Pyx_PyFunction_FastCallDict(PyObject *func, PyObject **args, int nargs, PyObject *kwargs) { + PyCodeObject *co = (PyCodeObject *)PyFunction_GET_CODE(func); + PyObject *globals = PyFunction_GET_GLOBALS(func); + PyObject *argdefs = PyFunction_GET_DEFAULTS(func); + PyObject *closure; +#if PY_MAJOR_VERSION >= 3 + PyObject *kwdefs; +#endif + PyObject *kwtuple, **k; + PyObject **d; + Py_ssize_t nd; + Py_ssize_t nk; + PyObject *result; + assert(kwargs == NULL || PyDict_Check(kwargs)); + nk = kwargs ? PyDict_Size(kwargs) : 0; + if (Py_EnterRecursiveCall((char*)" while calling a Python object")) { + return NULL; + } + if ( +#if PY_MAJOR_VERSION >= 3 + co->co_kwonlyargcount == 0 && +#endif + likely(kwargs == NULL || nk == 0) && + co->co_flags == (CO_OPTIMIZED | CO_NEWLOCALS | CO_NOFREE)) { + if (argdefs == NULL && co->co_argcount == nargs) { + result = __Pyx_PyFunction_FastCallNoKw(co, args, nargs, globals); + goto done; + } + else if (nargs == 0 && argdefs != NULL + && co->co_argcount == Py_SIZE(argdefs)) { + /* function called with no arguments, but all parameters have + a default value: use default values as arguments .*/ + args = &PyTuple_GET_ITEM(argdefs, 0); + result =__Pyx_PyFunction_FastCallNoKw(co, args, Py_SIZE(argdefs), globals); + goto done; + } + } + if (kwargs != NULL) { + Py_ssize_t pos, i; + kwtuple = PyTuple_New(2 * nk); + if (kwtuple == NULL) { + result = NULL; + goto done; + } + k = &PyTuple_GET_ITEM(kwtuple, 0); + pos = i = 0; + while (PyDict_Next(kwargs, &pos, &k[i], &k[i+1])) { + Py_INCREF(k[i]); + Py_INCREF(k[i+1]); + i += 2; + } + nk = i / 2; + } + else { + kwtuple = NULL; + k = NULL; + } + closure = PyFunction_GET_CLOSURE(func); +#if PY_MAJOR_VERSION >= 3 + kwdefs = PyFunction_GET_KW_DEFAULTS(func); +#endif + if (argdefs != NULL) { + d = &PyTuple_GET_ITEM(argdefs, 0); + nd = Py_SIZE(argdefs); + } + else { + d = NULL; + nd = 0; + } +#if PY_MAJOR_VERSION >= 3 + result = PyEval_EvalCodeEx((PyObject*)co, globals, (PyObject *)NULL, + args, nargs, + k, (int)nk, + d, (int)nd, kwdefs, closure); +#else + result = PyEval_EvalCodeEx(co, globals, (PyObject *)NULL, + args, nargs, + k, (int)nk, + d, (int)nd, closure); +#endif + Py_XDECREF(kwtuple); +done: + Py_LeaveRecursiveCall(); + return result; +} +#endif +#endif + +/* PyObjectCall */ + #if CYTHON_COMPILING_IN_CPYTHON +static CYTHON_INLINE PyObject* __Pyx_PyObject_Call(PyObject *func, PyObject *arg, PyObject *kw) { + PyObject *result; + ternaryfunc call = func->ob_type->tp_call; + if (unlikely(!call)) + return PyObject_Call(func, arg, kw); + if (unlikely(Py_EnterRecursiveCall((char*)" while calling a Python object"))) + return NULL; + result = (*call)(func, arg, kw); + Py_LeaveRecursiveCall(); + if (unlikely(!result) && unlikely(!PyErr_Occurred())) { + PyErr_SetString( + PyExc_SystemError, + "NULL result without error in PyObject_Call"); + } + return result; +} +#endif + +/* PyObjectCallMethO */ + #if CYTHON_COMPILING_IN_CPYTHON +static CYTHON_INLINE PyObject* __Pyx_PyObject_CallMethO(PyObject *func, PyObject *arg) { + PyObject *self, *result; + PyCFunction cfunc; + cfunc = PyCFunction_GET_FUNCTION(func); + self = PyCFunction_GET_SELF(func); + if (unlikely(Py_EnterRecursiveCall((char*)" while calling a Python object"))) + return NULL; + result = cfunc(self, arg); + Py_LeaveRecursiveCall(); + if (unlikely(!result) && unlikely(!PyErr_Occurred())) { + PyErr_SetString( + PyExc_SystemError, + "NULL result without error in PyObject_Call"); + } + return result; +} +#endif + +/* PyObjectCallOneArg */ + #if CYTHON_COMPILING_IN_CPYTHON +static PyObject* __Pyx__PyObject_CallOneArg(PyObject *func, PyObject *arg) { + PyObject *result; + PyObject *args = PyTuple_New(1); + if (unlikely(!args)) return NULL; + Py_INCREF(arg); + PyTuple_SET_ITEM(args, 0, arg); + result = __Pyx_PyObject_Call(func, args, NULL); + Py_DECREF(args); + return result; +} +static CYTHON_INLINE PyObject* __Pyx_PyObject_CallOneArg(PyObject *func, PyObject *arg) { +#if CYTHON_FAST_PYCALL + if (PyFunction_Check(func)) { + return __Pyx_PyFunction_FastCall(func, &arg, 1); + } +#endif + if (likely(PyCFunction_Check(func))) { + if (likely(PyCFunction_GET_FLAGS(func) & METH_O)) { + return __Pyx_PyObject_CallMethO(func, arg); +#if CYTHON_FAST_PYCCALL + } else if (PyCFunction_GET_FLAGS(func) & METH_FASTCALL) { + return __Pyx_PyCFunction_FastCall(func, &arg, 1); +#endif + } + } + return __Pyx__PyObject_CallOneArg(func, arg); +} +#else +static CYTHON_INLINE PyObject* __Pyx_PyObject_CallOneArg(PyObject *func, PyObject *arg) { + PyObject *result; + PyObject *args = PyTuple_Pack(1, arg); + if (unlikely(!args)) return NULL; + result = __Pyx_PyObject_Call(func, args, NULL); + Py_DECREF(args); + return result; +} +#endif + +/* PyObjectCallNoArg */ + #if CYTHON_COMPILING_IN_CPYTHON +static CYTHON_INLINE PyObject* __Pyx_PyObject_CallNoArg(PyObject *func) { +#if CYTHON_FAST_PYCALL + if (PyFunction_Check(func)) { + return __Pyx_PyFunction_FastCall(func, NULL, 0); + } +#endif +#ifdef __Pyx_CyFunction_USED + if (likely(PyCFunction_Check(func) || PyObject_TypeCheck(func, __pyx_CyFunctionType))) { +#else + if (likely(PyCFunction_Check(func))) { +#endif + if (likely(PyCFunction_GET_FLAGS(func) & METH_NOARGS)) { + return __Pyx_PyObject_CallMethO(func, NULL); + } + } + return __Pyx_PyObject_Call(func, __pyx_empty_tuple, NULL); +} +#endif + +/* GetItemInt */ + static CYTHON_INLINE PyObject *__Pyx_GetItemInt_Generic(PyObject *o, PyObject* j) { + PyObject *r; + if (!j) return NULL; + r = PyObject_GetItem(o, j); + Py_DECREF(j); + return r; +} +static CYTHON_INLINE PyObject *__Pyx_GetItemInt_List_Fast(PyObject *o, Py_ssize_t i, + CYTHON_NCP_UNUSED int wraparound, + CYTHON_NCP_UNUSED int boundscheck) { +#if CYTHON_ASSUME_SAFE_MACROS && !CYTHON_AVOID_BORROWED_REFS + Py_ssize_t wrapped_i = i; + if (wraparound & unlikely(i < 0)) { + wrapped_i += PyList_GET_SIZE(o); + } + if ((!boundscheck) || likely((0 <= wrapped_i) & (wrapped_i < PyList_GET_SIZE(o)))) { + PyObject *r = PyList_GET_ITEM(o, wrapped_i); + Py_INCREF(r); + return r; + } + return __Pyx_GetItemInt_Generic(o, PyInt_FromSsize_t(i)); +#else + return PySequence_GetItem(o, i); +#endif +} +static CYTHON_INLINE PyObject *__Pyx_GetItemInt_Tuple_Fast(PyObject *o, Py_ssize_t i, + CYTHON_NCP_UNUSED int wraparound, + CYTHON_NCP_UNUSED int boundscheck) { +#if CYTHON_ASSUME_SAFE_MACROS && !CYTHON_AVOID_BORROWED_REFS + Py_ssize_t wrapped_i = i; + if (wraparound & unlikely(i < 0)) { + wrapped_i += PyTuple_GET_SIZE(o); + } + if ((!boundscheck) || likely((0 <= wrapped_i) & (wrapped_i < PyTuple_GET_SIZE(o)))) { + PyObject *r = PyTuple_GET_ITEM(o, wrapped_i); + Py_INCREF(r); + return r; + } + return __Pyx_GetItemInt_Generic(o, PyInt_FromSsize_t(i)); +#else + return PySequence_GetItem(o, i); +#endif +} +static CYTHON_INLINE PyObject *__Pyx_GetItemInt_Fast(PyObject *o, Py_ssize_t i, int is_list, + CYTHON_NCP_UNUSED int wraparound, + CYTHON_NCP_UNUSED int boundscheck) { +#if CYTHON_ASSUME_SAFE_MACROS && !CYTHON_AVOID_BORROWED_REFS && CYTHON_USE_TYPE_SLOTS + if (is_list || PyList_CheckExact(o)) { + Py_ssize_t n = ((!wraparound) | likely(i >= 0)) ? i : i + PyList_GET_SIZE(o); + if ((!boundscheck) || (likely((n >= 0) & (n < PyList_GET_SIZE(o))))) { + PyObject *r = PyList_GET_ITEM(o, n); + Py_INCREF(r); + return r; + } + } + else if (PyTuple_CheckExact(o)) { + Py_ssize_t n = ((!wraparound) | likely(i >= 0)) ? i : i + PyTuple_GET_SIZE(o); + if ((!boundscheck) || likely((n >= 0) & (n < PyTuple_GET_SIZE(o)))) { + PyObject *r = PyTuple_GET_ITEM(o, n); + Py_INCREF(r); + return r; + } + } else { + PySequenceMethods *m = Py_TYPE(o)->tp_as_sequence; + if (likely(m && m->sq_item)) { + if (wraparound && unlikely(i < 0) && likely(m->sq_length)) { + Py_ssize_t l = m->sq_length(o); + if (likely(l >= 0)) { + i += l; + } else { + if (!PyErr_ExceptionMatches(PyExc_OverflowError)) + return NULL; + PyErr_Clear(); + } + } + return m->sq_item(o, i); + } + } +#else + if (is_list || PySequence_Check(o)) { + return PySequence_GetItem(o, i); + } +#endif + return __Pyx_GetItemInt_Generic(o, PyInt_FromSsize_t(i)); +} + +/* PyObjectCallMethod1 */ + static PyObject* __Pyx_PyObject_CallMethod1(PyObject* obj, PyObject* method_name, PyObject* arg) { + PyObject *method, *result = NULL; + method = __Pyx_PyObject_GetAttrStr(obj, method_name); + if (unlikely(!method)) goto done; +#if CYTHON_UNPACK_METHODS + if (likely(PyMethod_Check(method))) { + PyObject *self = PyMethod_GET_SELF(method); + if (likely(self)) { + PyObject *args; + PyObject *function = PyMethod_GET_FUNCTION(method); + #if CYTHON_FAST_PYCALL + if (PyFunction_Check(function)) { + PyObject *args[2] = {self, arg}; + result = __Pyx_PyFunction_FastCall(function, args, 2); + goto done; + } + #endif + #if CYTHON_FAST_PYCCALL + if (__Pyx_PyFastCFunction_Check(function)) { + PyObject *args[2] = {self, arg}; + result = __Pyx_PyCFunction_FastCall(function, args, 2); + goto done; + } + #endif + args = PyTuple_New(2); + if (unlikely(!args)) goto done; + Py_INCREF(self); + PyTuple_SET_ITEM(args, 0, self); + Py_INCREF(arg); + PyTuple_SET_ITEM(args, 1, arg); + Py_INCREF(function); + Py_DECREF(method); method = NULL; + result = __Pyx_PyObject_Call(function, args, NULL); + Py_DECREF(args); + Py_DECREF(function); + return result; + } + } +#endif + result = __Pyx_PyObject_CallOneArg(method, arg); +done: + Py_XDECREF(method); + return result; +} + +/* append */ + static CYTHON_INLINE int __Pyx_PyObject_Append(PyObject* L, PyObject* x) { + if (likely(PyList_CheckExact(L))) { + if (unlikely(__Pyx_PyList_Append(L, x) < 0)) return -1; + } else { + PyObject* retval = __Pyx_PyObject_CallMethod1(L, __pyx_n_s_append, x); + if (unlikely(!retval)) + return -1; + Py_DECREF(retval); + } + return 0; +} + +/* RaiseTooManyValuesToUnpack */ + static CYTHON_INLINE void __Pyx_RaiseTooManyValuesError(Py_ssize_t expected) { + PyErr_Format(PyExc_ValueError, + "too many values to unpack (expected %" CYTHON_FORMAT_SSIZE_T "d)", expected); +} + +/* RaiseNeedMoreValuesToUnpack */ + static CYTHON_INLINE void __Pyx_RaiseNeedMoreValuesError(Py_ssize_t index) { + PyErr_Format(PyExc_ValueError, + "need more than %" CYTHON_FORMAT_SSIZE_T "d value%.1s to unpack", + index, (index == 1) ? "" : "s"); +} + +/* IterFinish */ + static CYTHON_INLINE int __Pyx_IterFinish(void) { +#if CYTHON_FAST_THREAD_STATE + PyThreadState *tstate = PyThreadState_GET(); + PyObject* exc_type = tstate->curexc_type; + if (unlikely(exc_type)) { + if (likely(exc_type == PyExc_StopIteration) || PyErr_GivenExceptionMatches(exc_type, PyExc_StopIteration)) { + PyObject *exc_value, *exc_tb; + exc_value = tstate->curexc_value; + exc_tb = tstate->curexc_traceback; + tstate->curexc_type = 0; + tstate->curexc_value = 0; + tstate->curexc_traceback = 0; + Py_DECREF(exc_type); + Py_XDECREF(exc_value); + Py_XDECREF(exc_tb); + return 0; + } else { + return -1; + } + } + return 0; +#else + if (unlikely(PyErr_Occurred())) { + if (likely(PyErr_ExceptionMatches(PyExc_StopIteration))) { + PyErr_Clear(); + return 0; + } else { + return -1; + } + } + return 0; +#endif +} + +/* UnpackItemEndCheck */ + static int __Pyx_IternextUnpackEndCheck(PyObject *retval, Py_ssize_t expected) { + if (unlikely(retval)) { + Py_DECREF(retval); + __Pyx_RaiseTooManyValuesError(expected); + return -1; + } else { + return __Pyx_IterFinish(); + } + return 0; +} + +/* Import */ + static PyObject *__Pyx_Import(PyObject *name, PyObject *from_list, int level) { + PyObject *empty_list = 0; + PyObject *module = 0; + PyObject *global_dict = 0; + PyObject *empty_dict = 0; + PyObject *list; + #if PY_VERSION_HEX < 0x03030000 + PyObject *py_import; + py_import = __Pyx_PyObject_GetAttrStr(__pyx_b, __pyx_n_s_import); + if (!py_import) + goto bad; + #endif + if (from_list) + list = from_list; + else { + empty_list = PyList_New(0); + if (!empty_list) + goto bad; + list = empty_list; + } + global_dict = PyModule_GetDict(__pyx_m); + if (!global_dict) + goto bad; + empty_dict = PyDict_New(); + if (!empty_dict) + goto bad; + { + #if PY_MAJOR_VERSION >= 3 + if (level == -1) { + if (strchr(__Pyx_MODULE_NAME, '.')) { + #if PY_VERSION_HEX < 0x03030000 + PyObject *py_level = PyInt_FromLong(1); + if (!py_level) + goto bad; + module = PyObject_CallFunctionObjArgs(py_import, + name, global_dict, empty_dict, list, py_level, NULL); + Py_DECREF(py_level); + #else + module = PyImport_ImportModuleLevelObject( + name, global_dict, empty_dict, list, 1); + #endif + if (!module) { + if (!PyErr_ExceptionMatches(PyExc_ImportError)) + goto bad; + PyErr_Clear(); + } + } + level = 0; + } + #endif + if (!module) { + #if PY_VERSION_HEX < 0x03030000 + PyObject *py_level = PyInt_FromLong(level); + if (!py_level) + goto bad; + module = PyObject_CallFunctionObjArgs(py_import, + name, global_dict, empty_dict, list, py_level, NULL); + Py_DECREF(py_level); + #else + module = PyImport_ImportModuleLevelObject( + name, global_dict, empty_dict, list, level); + #endif + } + } +bad: + #if PY_VERSION_HEX < 0x03030000 + Py_XDECREF(py_import); + #endif + Py_XDECREF(empty_list); + Py_XDECREF(empty_dict); + return module; +} + +/* FetchCommonType */ + static PyTypeObject* __Pyx_FetchCommonType(PyTypeObject* type) { + PyObject* fake_module; + PyTypeObject* cached_type = NULL; + fake_module = PyImport_AddModule((char*) "_cython_" CYTHON_ABI); + if (!fake_module) return NULL; + Py_INCREF(fake_module); + cached_type = (PyTypeObject*) PyObject_GetAttrString(fake_module, type->tp_name); + if (cached_type) { + if (!PyType_Check((PyObject*)cached_type)) { + PyErr_Format(PyExc_TypeError, + "Shared Cython type %.200s is not a type object", + type->tp_name); + goto bad; + } + if (cached_type->tp_basicsize != type->tp_basicsize) { + PyErr_Format(PyExc_TypeError, + "Shared Cython type %.200s has the wrong size, try recompiling", + type->tp_name); + goto bad; + } + } else { + if (!PyErr_ExceptionMatches(PyExc_AttributeError)) goto bad; + PyErr_Clear(); + if (PyType_Ready(type) < 0) goto bad; + if (PyObject_SetAttrString(fake_module, type->tp_name, (PyObject*) type) < 0) + goto bad; + Py_INCREF(type); + cached_type = type; + } +done: + Py_DECREF(fake_module); + return cached_type; +bad: + Py_XDECREF(cached_type); + cached_type = NULL; + goto done; +} + +/* CythonFunction */ + static PyObject * +__Pyx_CyFunction_get_doc(__pyx_CyFunctionObject *op, CYTHON_UNUSED void *closure) +{ + if (unlikely(op->func_doc == NULL)) { + if (op->func.m_ml->ml_doc) { +#if PY_MAJOR_VERSION >= 3 + op->func_doc = PyUnicode_FromString(op->func.m_ml->ml_doc); +#else + op->func_doc = PyString_FromString(op->func.m_ml->ml_doc); +#endif + if (unlikely(op->func_doc == NULL)) + return NULL; + } else { + Py_INCREF(Py_None); + return Py_None; + } + } + Py_INCREF(op->func_doc); + return op->func_doc; +} +static int +__Pyx_CyFunction_set_doc(__pyx_CyFunctionObject *op, PyObject *value) +{ + PyObject *tmp = op->func_doc; + if (value == NULL) { + value = Py_None; + } + Py_INCREF(value); + op->func_doc = value; + Py_XDECREF(tmp); + return 0; +} +static PyObject * +__Pyx_CyFunction_get_name(__pyx_CyFunctionObject *op) +{ + if (unlikely(op->func_name == NULL)) { +#if PY_MAJOR_VERSION >= 3 + op->func_name = PyUnicode_InternFromString(op->func.m_ml->ml_name); +#else + op->func_name = PyString_InternFromString(op->func.m_ml->ml_name); +#endif + if (unlikely(op->func_name == NULL)) + return NULL; + } + Py_INCREF(op->func_name); + return op->func_name; +} +static int +__Pyx_CyFunction_set_name(__pyx_CyFunctionObject *op, PyObject *value) +{ + PyObject *tmp; +#if PY_MAJOR_VERSION >= 3 + if (unlikely(value == NULL || !PyUnicode_Check(value))) { +#else + if (unlikely(value == NULL || !PyString_Check(value))) { +#endif + PyErr_SetString(PyExc_TypeError, + "__name__ must be set to a string object"); + return -1; + } + tmp = op->func_name; + Py_INCREF(value); + op->func_name = value; + Py_XDECREF(tmp); + return 0; +} +static PyObject * +__Pyx_CyFunction_get_qualname(__pyx_CyFunctionObject *op) +{ + Py_INCREF(op->func_qualname); + return op->func_qualname; +} +static int +__Pyx_CyFunction_set_qualname(__pyx_CyFunctionObject *op, PyObject *value) +{ + PyObject *tmp; +#if PY_MAJOR_VERSION >= 3 + if (unlikely(value == NULL || !PyUnicode_Check(value))) { +#else + if (unlikely(value == NULL || !PyString_Check(value))) { +#endif + PyErr_SetString(PyExc_TypeError, + "__qualname__ must be set to a string object"); + return -1; + } + tmp = op->func_qualname; + Py_INCREF(value); + op->func_qualname = value; + Py_XDECREF(tmp); + return 0; +} +static PyObject * +__Pyx_CyFunction_get_self(__pyx_CyFunctionObject *m, CYTHON_UNUSED void *closure) +{ + PyObject *self; + self = m->func_closure; + if (self == NULL) + self = Py_None; + Py_INCREF(self); + return self; +} +static PyObject * +__Pyx_CyFunction_get_dict(__pyx_CyFunctionObject *op) +{ + if (unlikely(op->func_dict == NULL)) { + op->func_dict = PyDict_New(); + if (unlikely(op->func_dict == NULL)) + return NULL; + } + Py_INCREF(op->func_dict); + return op->func_dict; +} +static int +__Pyx_CyFunction_set_dict(__pyx_CyFunctionObject *op, PyObject *value) +{ + PyObject *tmp; + if (unlikely(value == NULL)) { + PyErr_SetString(PyExc_TypeError, + "function's dictionary may not be deleted"); + return -1; + } + if (unlikely(!PyDict_Check(value))) { + PyErr_SetString(PyExc_TypeError, + "setting function's dictionary to a non-dict"); + return -1; + } + tmp = op->func_dict; + Py_INCREF(value); + op->func_dict = value; + Py_XDECREF(tmp); + return 0; +} +static PyObject * +__Pyx_CyFunction_get_globals(__pyx_CyFunctionObject *op) +{ + Py_INCREF(op->func_globals); + return op->func_globals; +} +static PyObject * +__Pyx_CyFunction_get_closure(CYTHON_UNUSED __pyx_CyFunctionObject *op) +{ + Py_INCREF(Py_None); + return Py_None; +} +static PyObject * +__Pyx_CyFunction_get_code(__pyx_CyFunctionObject *op) +{ + PyObject* result = (op->func_code) ? op->func_code : Py_None; + Py_INCREF(result); + return result; +} +static int +__Pyx_CyFunction_init_defaults(__pyx_CyFunctionObject *op) { + int result = 0; + PyObject *res = op->defaults_getter((PyObject *) op); + if (unlikely(!res)) + return -1; + #if CYTHON_ASSUME_SAFE_MACROS && !CYTHON_AVOID_BORROWED_REFS + op->defaults_tuple = PyTuple_GET_ITEM(res, 0); + Py_INCREF(op->defaults_tuple); + op->defaults_kwdict = PyTuple_GET_ITEM(res, 1); + Py_INCREF(op->defaults_kwdict); + #else + op->defaults_tuple = PySequence_ITEM(res, 0); + if (unlikely(!op->defaults_tuple)) result = -1; + else { + op->defaults_kwdict = PySequence_ITEM(res, 1); + if (unlikely(!op->defaults_kwdict)) result = -1; + } + #endif + Py_DECREF(res); + return result; +} +static int +__Pyx_CyFunction_set_defaults(__pyx_CyFunctionObject *op, PyObject* value) { + PyObject* tmp; + if (!value) { + value = Py_None; + } else if (value != Py_None && !PyTuple_Check(value)) { + PyErr_SetString(PyExc_TypeError, + "__defaults__ must be set to a tuple object"); + return -1; + } + Py_INCREF(value); + tmp = op->defaults_tuple; + op->defaults_tuple = value; + Py_XDECREF(tmp); + return 0; +} +static PyObject * +__Pyx_CyFunction_get_defaults(__pyx_CyFunctionObject *op) { + PyObject* result = op->defaults_tuple; + if (unlikely(!result)) { + if (op->defaults_getter) { + if (__Pyx_CyFunction_init_defaults(op) < 0) return NULL; + result = op->defaults_tuple; + } else { + result = Py_None; + } + } + Py_INCREF(result); + return result; +} +static int +__Pyx_CyFunction_set_kwdefaults(__pyx_CyFunctionObject *op, PyObject* value) { + PyObject* tmp; + if (!value) { + value = Py_None; + } else if (value != Py_None && !PyDict_Check(value)) { + PyErr_SetString(PyExc_TypeError, + "__kwdefaults__ must be set to a dict object"); + return -1; + } + Py_INCREF(value); + tmp = op->defaults_kwdict; + op->defaults_kwdict = value; + Py_XDECREF(tmp); + return 0; +} +static PyObject * +__Pyx_CyFunction_get_kwdefaults(__pyx_CyFunctionObject *op) { + PyObject* result = op->defaults_kwdict; + if (unlikely(!result)) { + if (op->defaults_getter) { + if (__Pyx_CyFunction_init_defaults(op) < 0) return NULL; + result = op->defaults_kwdict; + } else { + result = Py_None; + } + } + Py_INCREF(result); + return result; +} +static int +__Pyx_CyFunction_set_annotations(__pyx_CyFunctionObject *op, PyObject* value) { + PyObject* tmp; + if (!value || value == Py_None) { + value = NULL; + } else if (!PyDict_Check(value)) { + PyErr_SetString(PyExc_TypeError, + "__annotations__ must be set to a dict object"); + return -1; + } + Py_XINCREF(value); + tmp = op->func_annotations; + op->func_annotations = value; + Py_XDECREF(tmp); + return 0; +} +static PyObject * +__Pyx_CyFunction_get_annotations(__pyx_CyFunctionObject *op) { + PyObject* result = op->func_annotations; + if (unlikely(!result)) { + result = PyDict_New(); + if (unlikely(!result)) return NULL; + op->func_annotations = result; + } + Py_INCREF(result); + return result; +} +static PyGetSetDef __pyx_CyFunction_getsets[] = { + {(char *) "func_doc", (getter)__Pyx_CyFunction_get_doc, (setter)__Pyx_CyFunction_set_doc, 0, 0}, + {(char *) "__doc__", (getter)__Pyx_CyFunction_get_doc, (setter)__Pyx_CyFunction_set_doc, 0, 0}, + {(char *) "func_name", (getter)__Pyx_CyFunction_get_name, (setter)__Pyx_CyFunction_set_name, 0, 0}, + {(char *) "__name__", (getter)__Pyx_CyFunction_get_name, (setter)__Pyx_CyFunction_set_name, 0, 0}, + {(char *) "__qualname__", (getter)__Pyx_CyFunction_get_qualname, (setter)__Pyx_CyFunction_set_qualname, 0, 0}, + {(char *) "__self__", (getter)__Pyx_CyFunction_get_self, 0, 0, 0}, + {(char *) "func_dict", (getter)__Pyx_CyFunction_get_dict, (setter)__Pyx_CyFunction_set_dict, 0, 0}, + {(char *) "__dict__", (getter)__Pyx_CyFunction_get_dict, (setter)__Pyx_CyFunction_set_dict, 0, 0}, + {(char *) "func_globals", (getter)__Pyx_CyFunction_get_globals, 0, 0, 0}, + {(char *) "__globals__", (getter)__Pyx_CyFunction_get_globals, 0, 0, 0}, + {(char *) "func_closure", (getter)__Pyx_CyFunction_get_closure, 0, 0, 0}, + {(char *) "__closure__", (getter)__Pyx_CyFunction_get_closure, 0, 0, 0}, + {(char *) "func_code", (getter)__Pyx_CyFunction_get_code, 0, 0, 0}, + {(char *) "__code__", (getter)__Pyx_CyFunction_get_code, 0, 0, 0}, + {(char *) "func_defaults", (getter)__Pyx_CyFunction_get_defaults, (setter)__Pyx_CyFunction_set_defaults, 0, 0}, + {(char *) "__defaults__", (getter)__Pyx_CyFunction_get_defaults, (setter)__Pyx_CyFunction_set_defaults, 0, 0}, + {(char *) "__kwdefaults__", (getter)__Pyx_CyFunction_get_kwdefaults, (setter)__Pyx_CyFunction_set_kwdefaults, 0, 0}, + {(char *) "__annotations__", (getter)__Pyx_CyFunction_get_annotations, (setter)__Pyx_CyFunction_set_annotations, 0, 0}, + {0, 0, 0, 0, 0} +}; +static PyMemberDef __pyx_CyFunction_members[] = { + {(char *) "__module__", T_OBJECT, offsetof(__pyx_CyFunctionObject, func.m_module), PY_WRITE_RESTRICTED, 0}, + {0, 0, 0, 0, 0} +}; +static PyObject * +__Pyx_CyFunction_reduce(__pyx_CyFunctionObject *m, CYTHON_UNUSED PyObject *args) +{ +#if PY_MAJOR_VERSION >= 3 + return PyUnicode_FromString(m->func.m_ml->ml_name); +#else + return PyString_FromString(m->func.m_ml->ml_name); +#endif +} +static PyMethodDef __pyx_CyFunction_methods[] = { + {"__reduce__", (PyCFunction)__Pyx_CyFunction_reduce, METH_VARARGS, 0}, + {0, 0, 0, 0} +}; +#if PY_VERSION_HEX < 0x030500A0 +#define __Pyx_CyFunction_weakreflist(cyfunc) ((cyfunc)->func_weakreflist) +#else +#define __Pyx_CyFunction_weakreflist(cyfunc) ((cyfunc)->func.m_weakreflist) +#endif +static PyObject *__Pyx_CyFunction_New(PyTypeObject *type, PyMethodDef *ml, int flags, PyObject* qualname, + PyObject *closure, PyObject *module, PyObject* globals, PyObject* code) { + __pyx_CyFunctionObject *op = PyObject_GC_New(__pyx_CyFunctionObject, type); + if (op == NULL) + return NULL; + op->flags = flags; + __Pyx_CyFunction_weakreflist(op) = NULL; + op->func.m_ml = ml; + op->func.m_self = (PyObject *) op; + Py_XINCREF(closure); + op->func_closure = closure; + Py_XINCREF(module); + op->func.m_module = module; + op->func_dict = NULL; + op->func_name = NULL; + Py_INCREF(qualname); + op->func_qualname = qualname; + op->func_doc = NULL; + op->func_classobj = NULL; + op->func_globals = globals; + Py_INCREF(op->func_globals); + Py_XINCREF(code); + op->func_code = code; + op->defaults_pyobjects = 0; + op->defaults = NULL; + op->defaults_tuple = NULL; + op->defaults_kwdict = NULL; + op->defaults_getter = NULL; + op->func_annotations = NULL; + PyObject_GC_Track(op); + return (PyObject *) op; +} +static int +__Pyx_CyFunction_clear(__pyx_CyFunctionObject *m) +{ + Py_CLEAR(m->func_closure); + Py_CLEAR(m->func.m_module); + Py_CLEAR(m->func_dict); + Py_CLEAR(m->func_name); + Py_CLEAR(m->func_qualname); + Py_CLEAR(m->func_doc); + Py_CLEAR(m->func_globals); + Py_CLEAR(m->func_code); + Py_CLEAR(m->func_classobj); + Py_CLEAR(m->defaults_tuple); + Py_CLEAR(m->defaults_kwdict); + Py_CLEAR(m->func_annotations); + if (m->defaults) { + PyObject **pydefaults = __Pyx_CyFunction_Defaults(PyObject *, m); + int i; + for (i = 0; i < m->defaults_pyobjects; i++) + Py_XDECREF(pydefaults[i]); + PyObject_Free(m->defaults); + m->defaults = NULL; + } + return 0; +} +static void __Pyx_CyFunction_dealloc(__pyx_CyFunctionObject *m) +{ + PyObject_GC_UnTrack(m); + if (__Pyx_CyFunction_weakreflist(m) != NULL) + PyObject_ClearWeakRefs((PyObject *) m); + __Pyx_CyFunction_clear(m); + PyObject_GC_Del(m); +} +static int __Pyx_CyFunction_traverse(__pyx_CyFunctionObject *m, visitproc visit, void *arg) +{ + Py_VISIT(m->func_closure); + Py_VISIT(m->func.m_module); + Py_VISIT(m->func_dict); + Py_VISIT(m->func_name); + Py_VISIT(m->func_qualname); + Py_VISIT(m->func_doc); + Py_VISIT(m->func_globals); + Py_VISIT(m->func_code); + Py_VISIT(m->func_classobj); + Py_VISIT(m->defaults_tuple); + Py_VISIT(m->defaults_kwdict); + if (m->defaults) { + PyObject **pydefaults = __Pyx_CyFunction_Defaults(PyObject *, m); + int i; + for (i = 0; i < m->defaults_pyobjects; i++) + Py_VISIT(pydefaults[i]); + } + return 0; +} +static PyObject *__Pyx_CyFunction_descr_get(PyObject *func, PyObject *obj, PyObject *type) +{ + __pyx_CyFunctionObject *m = (__pyx_CyFunctionObject *) func; + if (m->flags & __Pyx_CYFUNCTION_STATICMETHOD) { + Py_INCREF(func); + return func; + } + if (m->flags & __Pyx_CYFUNCTION_CLASSMETHOD) { + if (type == NULL) + type = (PyObject *)(Py_TYPE(obj)); + return __Pyx_PyMethod_New(func, type, (PyObject *)(Py_TYPE(type))); + } + if (obj == Py_None) + obj = NULL; + return __Pyx_PyMethod_New(func, obj, type); +} +static PyObject* +__Pyx_CyFunction_repr(__pyx_CyFunctionObject *op) +{ +#if PY_MAJOR_VERSION >= 3 + return PyUnicode_FromFormat("", + op->func_qualname, (void *)op); +#else + return PyString_FromFormat("", + PyString_AsString(op->func_qualname), (void *)op); +#endif +} +static PyObject * __Pyx_CyFunction_CallMethod(PyObject *func, PyObject *self, PyObject *arg, PyObject *kw) { + PyCFunctionObject* f = (PyCFunctionObject*)func; + PyCFunction meth = f->m_ml->ml_meth; + Py_ssize_t size; + switch (f->m_ml->ml_flags & (METH_VARARGS | METH_KEYWORDS | METH_NOARGS | METH_O)) { + case METH_VARARGS: + if (likely(kw == NULL || PyDict_Size(kw) == 0)) + return (*meth)(self, arg); + break; + case METH_VARARGS | METH_KEYWORDS: + return (*(PyCFunctionWithKeywords)meth)(self, arg, kw); + case METH_NOARGS: + if (likely(kw == NULL || PyDict_Size(kw) == 0)) { + size = PyTuple_GET_SIZE(arg); + if (likely(size == 0)) + return (*meth)(self, NULL); + PyErr_Format(PyExc_TypeError, + "%.200s() takes no arguments (%" CYTHON_FORMAT_SSIZE_T "d given)", + f->m_ml->ml_name, size); + return NULL; + } + break; + case METH_O: + if (likely(kw == NULL || PyDict_Size(kw) == 0)) { + size = PyTuple_GET_SIZE(arg); + if (likely(size == 1)) { + PyObject *result, *arg0 = PySequence_ITEM(arg, 0); + if (unlikely(!arg0)) return NULL; + result = (*meth)(self, arg0); + Py_DECREF(arg0); + return result; + } + PyErr_Format(PyExc_TypeError, + "%.200s() takes exactly one argument (%" CYTHON_FORMAT_SSIZE_T "d given)", + f->m_ml->ml_name, size); + return NULL; + } + break; + default: + PyErr_SetString(PyExc_SystemError, "Bad call flags in " + "__Pyx_CyFunction_Call. METH_OLDARGS is no " + "longer supported!"); + return NULL; + } + PyErr_Format(PyExc_TypeError, "%.200s() takes no keyword arguments", + f->m_ml->ml_name); + return NULL; +} +static CYTHON_INLINE PyObject *__Pyx_CyFunction_Call(PyObject *func, PyObject *arg, PyObject *kw) { + return __Pyx_CyFunction_CallMethod(func, ((PyCFunctionObject*)func)->m_self, arg, kw); +} +static PyObject *__Pyx_CyFunction_CallAsMethod(PyObject *func, PyObject *args, PyObject *kw) { + PyObject *result; + __pyx_CyFunctionObject *cyfunc = (__pyx_CyFunctionObject *) func; + if ((cyfunc->flags & __Pyx_CYFUNCTION_CCLASS) && !(cyfunc->flags & __Pyx_CYFUNCTION_STATICMETHOD)) { + Py_ssize_t argc; + PyObject *new_args; + PyObject *self; + argc = PyTuple_GET_SIZE(args); + new_args = PyTuple_GetSlice(args, 1, argc); + if (unlikely(!new_args)) + return NULL; + self = PyTuple_GetItem(args, 0); + if (unlikely(!self)) { + Py_DECREF(new_args); + return NULL; + } + result = __Pyx_CyFunction_CallMethod(func, self, new_args, kw); + Py_DECREF(new_args); + } else { + result = __Pyx_CyFunction_Call(func, args, kw); + } + return result; +} +static PyTypeObject __pyx_CyFunctionType_type = { + PyVarObject_HEAD_INIT(0, 0) + "cython_function_or_method", + sizeof(__pyx_CyFunctionObject), + 0, + (destructor) __Pyx_CyFunction_dealloc, + 0, + 0, + 0, +#if PY_MAJOR_VERSION < 3 + 0, +#else + 0, +#endif + (reprfunc) __Pyx_CyFunction_repr, + 0, + 0, + 0, + 0, + __Pyx_CyFunction_CallAsMethod, + 0, + 0, + 0, + 0, + Py_TPFLAGS_DEFAULT | Py_TPFLAGS_HAVE_GC, + 0, + (traverseproc) __Pyx_CyFunction_traverse, + (inquiry) __Pyx_CyFunction_clear, + 0, +#if PY_VERSION_HEX < 0x030500A0 + offsetof(__pyx_CyFunctionObject, func_weakreflist), +#else + offsetof(PyCFunctionObject, m_weakreflist), +#endif + 0, + 0, + __pyx_CyFunction_methods, + __pyx_CyFunction_members, + __pyx_CyFunction_getsets, + 0, + 0, + __Pyx_CyFunction_descr_get, + 0, + offsetof(__pyx_CyFunctionObject, func_dict), + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, +#if PY_VERSION_HEX >= 0x030400a1 + 0, +#endif +}; +static int __pyx_CyFunction_init(void) { + __pyx_CyFunctionType = __Pyx_FetchCommonType(&__pyx_CyFunctionType_type); + if (__pyx_CyFunctionType == NULL) { + return -1; + } + return 0; +} +static CYTHON_INLINE void *__Pyx_CyFunction_InitDefaults(PyObject *func, size_t size, int pyobjects) { + __pyx_CyFunctionObject *m = (__pyx_CyFunctionObject *) func; + m->defaults = PyObject_Malloc(size); + if (!m->defaults) + return PyErr_NoMemory(); + memset(m->defaults, 0, size); + m->defaults_pyobjects = pyobjects; + return m->defaults; +} +static CYTHON_INLINE void __Pyx_CyFunction_SetDefaultsTuple(PyObject *func, PyObject *tuple) { + __pyx_CyFunctionObject *m = (__pyx_CyFunctionObject *) func; + m->defaults_tuple = tuple; + Py_INCREF(tuple); +} +static CYTHON_INLINE void __Pyx_CyFunction_SetDefaultsKwDict(PyObject *func, PyObject *dict) { + __pyx_CyFunctionObject *m = (__pyx_CyFunctionObject *) func; + m->defaults_kwdict = dict; + Py_INCREF(dict); +} +static CYTHON_INLINE void __Pyx_CyFunction_SetAnnotationsDict(PyObject *func, PyObject *dict) { + __pyx_CyFunctionObject *m = (__pyx_CyFunctionObject *) func; + m->func_annotations = dict; + Py_INCREF(dict); +} + +/* CalculateMetaclass */ + static PyObject *__Pyx_CalculateMetaclass(PyTypeObject *metaclass, PyObject *bases) { + Py_ssize_t i, nbases = PyTuple_GET_SIZE(bases); + for (i=0; i < nbases; i++) { + PyTypeObject *tmptype; + PyObject *tmp = PyTuple_GET_ITEM(bases, i); + tmptype = Py_TYPE(tmp); +#if PY_MAJOR_VERSION < 3 + if (tmptype == &PyClass_Type) + continue; +#endif + if (!metaclass) { + metaclass = tmptype; + continue; + } + if (PyType_IsSubtype(metaclass, tmptype)) + continue; + if (PyType_IsSubtype(tmptype, metaclass)) { + metaclass = tmptype; + continue; + } + PyErr_SetString(PyExc_TypeError, + "metaclass conflict: " + "the metaclass of a derived class " + "must be a (non-strict) subclass " + "of the metaclasses of all its bases"); + return NULL; + } + if (!metaclass) { +#if PY_MAJOR_VERSION < 3 + metaclass = &PyClass_Type; +#else + metaclass = &PyType_Type; +#endif + } + Py_INCREF((PyObject*) metaclass); + return (PyObject*) metaclass; +} + +/* Py3ClassCreate */ + static PyObject *__Pyx_Py3MetaclassPrepare(PyObject *metaclass, PyObject *bases, PyObject *name, + PyObject *qualname, PyObject *mkw, PyObject *modname, PyObject *doc) { + PyObject *ns; + if (metaclass) { + PyObject *prep = __Pyx_PyObject_GetAttrStr(metaclass, __pyx_n_s_prepare); + if (prep) { + PyObject *pargs = PyTuple_Pack(2, name, bases); + if (unlikely(!pargs)) { + Py_DECREF(prep); + return NULL; + } + ns = PyObject_Call(prep, pargs, mkw); + Py_DECREF(prep); + Py_DECREF(pargs); + } else { + if (unlikely(!PyErr_ExceptionMatches(PyExc_AttributeError))) + return NULL; + PyErr_Clear(); + ns = PyDict_New(); + } + } else { + ns = PyDict_New(); + } + if (unlikely(!ns)) + return NULL; + if (unlikely(PyObject_SetItem(ns, __pyx_n_s_module, modname) < 0)) goto bad; + if (unlikely(PyObject_SetItem(ns, __pyx_n_s_qualname, qualname) < 0)) goto bad; + if (unlikely(doc && PyObject_SetItem(ns, __pyx_n_s_doc, doc) < 0)) goto bad; + return ns; +bad: + Py_DECREF(ns); + return NULL; +} +static PyObject *__Pyx_Py3ClassCreate(PyObject *metaclass, PyObject *name, PyObject *bases, + PyObject *dict, PyObject *mkw, + int calculate_metaclass, int allow_py2_metaclass) { + PyObject *result, *margs; + PyObject *owned_metaclass = NULL; + if (allow_py2_metaclass) { + owned_metaclass = PyObject_GetItem(dict, __pyx_n_s_metaclass); + if (owned_metaclass) { + metaclass = owned_metaclass; + } else if (likely(PyErr_ExceptionMatches(PyExc_KeyError))) { + PyErr_Clear(); + } else { + return NULL; + } + } + if (calculate_metaclass && (!metaclass || PyType_Check(metaclass))) { + metaclass = __Pyx_CalculateMetaclass((PyTypeObject*) metaclass, bases); + Py_XDECREF(owned_metaclass); + if (unlikely(!metaclass)) + return NULL; + owned_metaclass = metaclass; + } + margs = PyTuple_Pack(3, name, bases, dict); + if (unlikely(!margs)) { + result = NULL; + } else { + result = PyObject_Call(metaclass, margs, mkw); + Py_DECREF(margs); + } + Py_XDECREF(owned_metaclass); + return result; +} + +/* BytesEquals */ + static CYTHON_INLINE int __Pyx_PyBytes_Equals(PyObject* s1, PyObject* s2, int equals) { +#if CYTHON_COMPILING_IN_PYPY + return PyObject_RichCompareBool(s1, s2, equals); +#else + if (s1 == s2) { + return (equals == Py_EQ); + } else if (PyBytes_CheckExact(s1) & PyBytes_CheckExact(s2)) { + const char *ps1, *ps2; + Py_ssize_t length = PyBytes_GET_SIZE(s1); + if (length != PyBytes_GET_SIZE(s2)) + return (equals == Py_NE); + ps1 = PyBytes_AS_STRING(s1); + ps2 = PyBytes_AS_STRING(s2); + if (ps1[0] != ps2[0]) { + return (equals == Py_NE); + } else if (length == 1) { + return (equals == Py_EQ); + } else { + int result; +#if CYTHON_USE_UNICODE_INTERNALS + Py_hash_t hash1, hash2; + hash1 = ((PyBytesObject*)s1)->ob_shash; + hash2 = ((PyBytesObject*)s2)->ob_shash; + if (hash1 != hash2 && hash1 != -1 && hash2 != -1) { + return (equals == Py_NE); + } +#endif + result = memcmp(ps1, ps2, (size_t)length); + return (equals == Py_EQ) ? (result == 0) : (result != 0); + } + } else if ((s1 == Py_None) & PyBytes_CheckExact(s2)) { + return (equals == Py_NE); + } else if ((s2 == Py_None) & PyBytes_CheckExact(s1)) { + return (equals == Py_NE); + } else { + int result; + PyObject* py_result = PyObject_RichCompare(s1, s2, equals); + if (!py_result) + return -1; + result = __Pyx_PyObject_IsTrue(py_result); + Py_DECREF(py_result); + return result; + } +#endif +} + +/* UnicodeEquals */ + static CYTHON_INLINE int __Pyx_PyUnicode_Equals(PyObject* s1, PyObject* s2, int equals) { +#if CYTHON_COMPILING_IN_PYPY + return PyObject_RichCompareBool(s1, s2, equals); +#else +#if PY_MAJOR_VERSION < 3 + PyObject* owned_ref = NULL; +#endif + int s1_is_unicode, s2_is_unicode; + if (s1 == s2) { + goto return_eq; + } + s1_is_unicode = PyUnicode_CheckExact(s1); + s2_is_unicode = PyUnicode_CheckExact(s2); +#if PY_MAJOR_VERSION < 3 + if ((s1_is_unicode & (!s2_is_unicode)) && PyString_CheckExact(s2)) { + owned_ref = PyUnicode_FromObject(s2); + if (unlikely(!owned_ref)) + return -1; + s2 = owned_ref; + s2_is_unicode = 1; + } else if ((s2_is_unicode & (!s1_is_unicode)) && PyString_CheckExact(s1)) { + owned_ref = PyUnicode_FromObject(s1); + if (unlikely(!owned_ref)) + return -1; + s1 = owned_ref; + s1_is_unicode = 1; + } else if (((!s2_is_unicode) & (!s1_is_unicode))) { + return __Pyx_PyBytes_Equals(s1, s2, equals); + } +#endif + if (s1_is_unicode & s2_is_unicode) { + Py_ssize_t length; + int kind; + void *data1, *data2; + if (unlikely(__Pyx_PyUnicode_READY(s1) < 0) || unlikely(__Pyx_PyUnicode_READY(s2) < 0)) + return -1; + length = __Pyx_PyUnicode_GET_LENGTH(s1); + if (length != __Pyx_PyUnicode_GET_LENGTH(s2)) { + goto return_ne; + } +#if CYTHON_USE_UNICODE_INTERNALS + { + Py_hash_t hash1, hash2; + #if CYTHON_PEP393_ENABLED + hash1 = ((PyASCIIObject*)s1)->hash; + hash2 = ((PyASCIIObject*)s2)->hash; + #else + hash1 = ((PyUnicodeObject*)s1)->hash; + hash2 = ((PyUnicodeObject*)s2)->hash; + #endif + if (hash1 != hash2 && hash1 != -1 && hash2 != -1) { + goto return_ne; + } + } +#endif + kind = __Pyx_PyUnicode_KIND(s1); + if (kind != __Pyx_PyUnicode_KIND(s2)) { + goto return_ne; + } + data1 = __Pyx_PyUnicode_DATA(s1); + data2 = __Pyx_PyUnicode_DATA(s2); + if (__Pyx_PyUnicode_READ(kind, data1, 0) != __Pyx_PyUnicode_READ(kind, data2, 0)) { + goto return_ne; + } else if (length == 1) { + goto return_eq; + } else { + int result = memcmp(data1, data2, (size_t)(length * kind)); + #if PY_MAJOR_VERSION < 3 + Py_XDECREF(owned_ref); + #endif + return (equals == Py_EQ) ? (result == 0) : (result != 0); + } + } else if ((s1 == Py_None) & s2_is_unicode) { + goto return_ne; + } else if ((s2 == Py_None) & s1_is_unicode) { + goto return_ne; + } else { + int result; + PyObject* py_result = PyObject_RichCompare(s1, s2, equals); + if (!py_result) + return -1; + result = __Pyx_PyObject_IsTrue(py_result); + Py_DECREF(py_result); + return result; + } +return_eq: + #if PY_MAJOR_VERSION < 3 + Py_XDECREF(owned_ref); + #endif + return (equals == Py_EQ); +return_ne: + #if PY_MAJOR_VERSION < 3 + Py_XDECREF(owned_ref); + #endif + return (equals == Py_NE); +#endif +} + +/* SaveResetException */ + #if CYTHON_FAST_THREAD_STATE +static CYTHON_INLINE void __Pyx__ExceptionSave(PyThreadState *tstate, PyObject **type, PyObject **value, PyObject **tb) { + *type = tstate->exc_type; + *value = tstate->exc_value; + *tb = tstate->exc_traceback; + Py_XINCREF(*type); + Py_XINCREF(*value); + Py_XINCREF(*tb); +} +static CYTHON_INLINE void __Pyx__ExceptionReset(PyThreadState *tstate, PyObject *type, PyObject *value, PyObject *tb) { + PyObject *tmp_type, *tmp_value, *tmp_tb; + tmp_type = tstate->exc_type; + tmp_value = tstate->exc_value; + tmp_tb = tstate->exc_traceback; + tstate->exc_type = type; + tstate->exc_value = value; + tstate->exc_traceback = tb; + Py_XDECREF(tmp_type); + Py_XDECREF(tmp_value); + Py_XDECREF(tmp_tb); +} +#endif + +/* PyErrExceptionMatches */ + #if CYTHON_FAST_THREAD_STATE +static CYTHON_INLINE int __Pyx_PyErr_ExceptionMatchesInState(PyThreadState* tstate, PyObject* err) { + PyObject *exc_type = tstate->curexc_type; + if (exc_type == err) return 1; + if (unlikely(!exc_type)) return 0; + return PyErr_GivenExceptionMatches(exc_type, err); +} +#endif + +/* GetException */ + #if CYTHON_FAST_THREAD_STATE +static int __Pyx__GetException(PyThreadState *tstate, PyObject **type, PyObject **value, PyObject **tb) { +#else +static int __Pyx_GetException(PyObject **type, PyObject **value, PyObject **tb) { +#endif + PyObject *local_type, *local_value, *local_tb; +#if CYTHON_FAST_THREAD_STATE + PyObject *tmp_type, *tmp_value, *tmp_tb; + local_type = tstate->curexc_type; + local_value = tstate->curexc_value; + local_tb = tstate->curexc_traceback; + tstate->curexc_type = 0; + tstate->curexc_value = 0; + tstate->curexc_traceback = 0; +#else + PyErr_Fetch(&local_type, &local_value, &local_tb); +#endif + PyErr_NormalizeException(&local_type, &local_value, &local_tb); +#if CYTHON_FAST_THREAD_STATE + if (unlikely(tstate->curexc_type)) +#else + if (unlikely(PyErr_Occurred())) +#endif + goto bad; + #if PY_MAJOR_VERSION >= 3 + if (local_tb) { + if (unlikely(PyException_SetTraceback(local_value, local_tb) < 0)) + goto bad; + } + #endif + Py_XINCREF(local_tb); + Py_XINCREF(local_type); + Py_XINCREF(local_value); + *type = local_type; + *value = local_value; + *tb = local_tb; +#if CYTHON_FAST_THREAD_STATE + tmp_type = tstate->exc_type; + tmp_value = tstate->exc_value; + tmp_tb = tstate->exc_traceback; + tstate->exc_type = local_type; + tstate->exc_value = local_value; + tstate->exc_traceback = local_tb; + Py_XDECREF(tmp_type); + Py_XDECREF(tmp_value); + Py_XDECREF(tmp_tb); +#else + PyErr_SetExcInfo(local_type, local_value, local_tb); +#endif + return 0; +bad: + *type = 0; + *value = 0; + *tb = 0; + Py_XDECREF(local_type); + Py_XDECREF(local_value); + Py_XDECREF(local_tb); + return -1; +} + +/* CLineInTraceback */ + static int __Pyx_CLineForTraceback(int c_line) { +#ifdef CYTHON_CLINE_IN_TRACEBACK + return ((CYTHON_CLINE_IN_TRACEBACK)) ? c_line : 0; +#else + PyObject **cython_runtime_dict; + PyObject *use_cline; + cython_runtime_dict = _PyObject_GetDictPtr(__pyx_cython_runtime); + if (unlikely(!cython_runtime_dict)) { + PyObject *ptype, *pvalue, *ptraceback; + PyObject *use_cline_obj; + PyErr_Fetch(&ptype, &pvalue, &ptraceback); + use_cline_obj = __Pyx_PyObject_GetAttrStr(__pyx_cython_runtime, __pyx_n_s_cline_in_traceback); + if (use_cline_obj) { + use_cline = PyObject_Not(use_cline_obj) ? Py_False : Py_True; + Py_DECREF(use_cline_obj); + } else { + use_cline = NULL; + } + PyErr_Restore(ptype, pvalue, ptraceback); + } else { + use_cline = PyDict_GetItem(*_PyObject_GetDictPtr(__pyx_cython_runtime), __pyx_n_s_cline_in_traceback); + } + if (!use_cline) { + c_line = 0; + PyObject_SetAttr(__pyx_cython_runtime, __pyx_n_s_cline_in_traceback, Py_False); + } + else if (PyObject_Not(use_cline) != 0) { + c_line = 0; + } + return c_line; +#endif +} + +/* CodeObjectCache */ + static int __pyx_bisect_code_objects(__Pyx_CodeObjectCacheEntry* entries, int count, int code_line) { + int start = 0, mid = 0, end = count - 1; + if (end >= 0 && code_line > entries[end].code_line) { + return count; + } + while (start < end) { + mid = start + (end - start) / 2; + if (code_line < entries[mid].code_line) { + end = mid; + } else if (code_line > entries[mid].code_line) { + start = mid + 1; + } else { + return mid; + } + } + if (code_line <= entries[mid].code_line) { + return mid; + } else { + return mid + 1; + } +} +static PyCodeObject *__pyx_find_code_object(int code_line) { + PyCodeObject* code_object; + int pos; + if (unlikely(!code_line) || unlikely(!__pyx_code_cache.entries)) { + return NULL; + } + pos = __pyx_bisect_code_objects(__pyx_code_cache.entries, __pyx_code_cache.count, code_line); + if (unlikely(pos >= __pyx_code_cache.count) || unlikely(__pyx_code_cache.entries[pos].code_line != code_line)) { + return NULL; + } + code_object = __pyx_code_cache.entries[pos].code_object; + Py_INCREF(code_object); + return code_object; +} +static void __pyx_insert_code_object(int code_line, PyCodeObject* code_object) { + int pos, i; + __Pyx_CodeObjectCacheEntry* entries = __pyx_code_cache.entries; + if (unlikely(!code_line)) { + return; + } + if (unlikely(!entries)) { + entries = (__Pyx_CodeObjectCacheEntry*)PyMem_Malloc(64*sizeof(__Pyx_CodeObjectCacheEntry)); + if (likely(entries)) { + __pyx_code_cache.entries = entries; + __pyx_code_cache.max_count = 64; + __pyx_code_cache.count = 1; + entries[0].code_line = code_line; + entries[0].code_object = code_object; + Py_INCREF(code_object); + } + return; + } + pos = __pyx_bisect_code_objects(__pyx_code_cache.entries, __pyx_code_cache.count, code_line); + if ((pos < __pyx_code_cache.count) && unlikely(__pyx_code_cache.entries[pos].code_line == code_line)) { + PyCodeObject* tmp = entries[pos].code_object; + entries[pos].code_object = code_object; + Py_DECREF(tmp); + return; + } + if (__pyx_code_cache.count == __pyx_code_cache.max_count) { + int new_max = __pyx_code_cache.max_count + 64; + entries = (__Pyx_CodeObjectCacheEntry*)PyMem_Realloc( + __pyx_code_cache.entries, (size_t)new_max*sizeof(__Pyx_CodeObjectCacheEntry)); + if (unlikely(!entries)) { + return; + } + __pyx_code_cache.entries = entries; + __pyx_code_cache.max_count = new_max; + } + for (i=__pyx_code_cache.count; i>pos; i--) { + entries[i] = entries[i-1]; + } + entries[pos].code_line = code_line; + entries[pos].code_object = code_object; + __pyx_code_cache.count++; + Py_INCREF(code_object); +} + +/* AddTraceback */ + #include "compile.h" +#include "frameobject.h" +#include "traceback.h" +static PyCodeObject* __Pyx_CreateCodeObjectForTraceback( + const char *funcname, int c_line, + int py_line, const char *filename) { + PyCodeObject *py_code = 0; + PyObject *py_srcfile = 0; + PyObject *py_funcname = 0; + #if PY_MAJOR_VERSION < 3 + py_srcfile = PyString_FromString(filename); + #else + py_srcfile = PyUnicode_FromString(filename); + #endif + if (!py_srcfile) goto bad; + if (c_line) { + #if PY_MAJOR_VERSION < 3 + py_funcname = PyString_FromFormat( "%s (%s:%d)", funcname, __pyx_cfilenm, c_line); + #else + py_funcname = PyUnicode_FromFormat( "%s (%s:%d)", funcname, __pyx_cfilenm, c_line); + #endif + } + else { + #if PY_MAJOR_VERSION < 3 + py_funcname = PyString_FromString(funcname); + #else + py_funcname = PyUnicode_FromString(funcname); + #endif + } + if (!py_funcname) goto bad; + py_code = __Pyx_PyCode_New( + 0, + 0, + 0, + 0, + 0, + __pyx_empty_bytes, /*PyObject *code,*/ + __pyx_empty_tuple, /*PyObject *consts,*/ + __pyx_empty_tuple, /*PyObject *names,*/ + __pyx_empty_tuple, /*PyObject *varnames,*/ + __pyx_empty_tuple, /*PyObject *freevars,*/ + __pyx_empty_tuple, /*PyObject *cellvars,*/ + py_srcfile, /*PyObject *filename,*/ + py_funcname, /*PyObject *name,*/ + py_line, + __pyx_empty_bytes /*PyObject *lnotab*/ + ); + Py_DECREF(py_srcfile); + Py_DECREF(py_funcname); + return py_code; +bad: + Py_XDECREF(py_srcfile); + Py_XDECREF(py_funcname); + return NULL; +} +static void __Pyx_AddTraceback(const char *funcname, int c_line, + int py_line, const char *filename) { + PyCodeObject *py_code = 0; + PyFrameObject *py_frame = 0; + if (c_line) { + c_line = __Pyx_CLineForTraceback(c_line); + } + py_code = __pyx_find_code_object(c_line ? -c_line : py_line); + if (!py_code) { + py_code = __Pyx_CreateCodeObjectForTraceback( + funcname, c_line, py_line, filename); + if (!py_code) goto bad; + __pyx_insert_code_object(c_line ? -c_line : py_line, py_code); + } + py_frame = PyFrame_New( + PyThreadState_GET(), /*PyThreadState *tstate,*/ + py_code, /*PyCodeObject *code,*/ + __pyx_d, /*PyObject *globals,*/ + 0 /*PyObject *locals*/ + ); + if (!py_frame) goto bad; + __Pyx_PyFrame_SetLineNumber(py_frame, py_line); + PyTraceBack_Here(py_frame); +bad: + Py_XDECREF(py_code); + Py_XDECREF(py_frame); +} + +/* CIntFromPyVerify */ + #define __PYX_VERIFY_RETURN_INT(target_type, func_type, func_value)\ + __PYX__VERIFY_RETURN_INT(target_type, func_type, func_value, 0) +#define __PYX_VERIFY_RETURN_INT_EXC(target_type, func_type, func_value)\ + __PYX__VERIFY_RETURN_INT(target_type, func_type, func_value, 1) +#define __PYX__VERIFY_RETURN_INT(target_type, func_type, func_value, exc)\ + {\ + func_type value = func_value;\ + if (sizeof(target_type) < sizeof(func_type)) {\ + if (unlikely(value != (func_type) (target_type) value)) {\ + func_type zero = 0;\ + if (exc && unlikely(value == (func_type)-1 && PyErr_Occurred()))\ + return (target_type) -1;\ + if (is_unsigned && unlikely(value < zero))\ + goto raise_neg_overflow;\ + else\ + goto raise_overflow;\ + }\ + }\ + return (target_type) value;\ + } + +/* Print */ + #if !CYTHON_COMPILING_IN_PYPY && PY_MAJOR_VERSION < 3 +static PyObject *__Pyx_GetStdout(void) { + PyObject *f = PySys_GetObject((char *)"stdout"); + if (!f) { + PyErr_SetString(PyExc_RuntimeError, "lost sys.stdout"); + } + return f; +} +static int __Pyx_Print(PyObject* f, PyObject *arg_tuple, int newline) { + int i; + if (!f) { + if (!(f = __Pyx_GetStdout())) + return -1; + } + Py_INCREF(f); + for (i=0; i < PyTuple_GET_SIZE(arg_tuple); i++) { + PyObject* v; + if (PyFile_SoftSpace(f, 1)) { + if (PyFile_WriteString(" ", f) < 0) + goto error; + } + v = PyTuple_GET_ITEM(arg_tuple, i); + if (PyFile_WriteObject(v, f, Py_PRINT_RAW) < 0) + goto error; + if (PyString_Check(v)) { + char *s = PyString_AsString(v); + Py_ssize_t len = PyString_Size(v); + if (len > 0) { + switch (s[len-1]) { + case ' ': break; + case '\f': case '\r': case '\n': case '\t': case '\v': + PyFile_SoftSpace(f, 0); + break; + default: break; + } + } + } + } + if (newline) { + if (PyFile_WriteString("\n", f) < 0) + goto error; + PyFile_SoftSpace(f, 0); + } + Py_DECREF(f); + return 0; +error: + Py_DECREF(f); + return -1; +} +#else +static int __Pyx_Print(PyObject* stream, PyObject *arg_tuple, int newline) { + PyObject* kwargs = 0; + PyObject* result = 0; + PyObject* end_string; + if (unlikely(!__pyx_print)) { + __pyx_print = PyObject_GetAttr(__pyx_b, __pyx_n_s_print); + if (!__pyx_print) + return -1; + } + if (stream) { + kwargs = PyDict_New(); + if (unlikely(!kwargs)) + return -1; + if (unlikely(PyDict_SetItem(kwargs, __pyx_n_s_file, stream) < 0)) + goto bad; + if (!newline) { + end_string = PyUnicode_FromStringAndSize(" ", 1); + if (unlikely(!end_string)) + goto bad; + if (PyDict_SetItem(kwargs, __pyx_n_s_end, end_string) < 0) { + Py_DECREF(end_string); + goto bad; + } + Py_DECREF(end_string); + } + } else if (!newline) { + if (unlikely(!__pyx_print_kwargs)) { + __pyx_print_kwargs = PyDict_New(); + if (unlikely(!__pyx_print_kwargs)) + return -1; + end_string = PyUnicode_FromStringAndSize(" ", 1); + if (unlikely(!end_string)) + return -1; + if (PyDict_SetItem(__pyx_print_kwargs, __pyx_n_s_end, end_string) < 0) { + Py_DECREF(end_string); + return -1; + } + Py_DECREF(end_string); + } + kwargs = __pyx_print_kwargs; + } + result = PyObject_Call(__pyx_print, arg_tuple, kwargs); + if (unlikely(kwargs) && (kwargs != __pyx_print_kwargs)) + Py_DECREF(kwargs); + if (!result) + return -1; + Py_DECREF(result); + return 0; +bad: + if (kwargs != __pyx_print_kwargs) + Py_XDECREF(kwargs); + return -1; +} +#endif + +/* CIntToPy */ + static CYTHON_INLINE PyObject* __Pyx_PyInt_From_long(long value) { + const long neg_one = (long) -1, const_zero = (long) 0; + const int is_unsigned = neg_one > const_zero; + if (is_unsigned) { + if (sizeof(long) < sizeof(long)) { + return PyInt_FromLong((long) value); + } else if (sizeof(long) <= sizeof(unsigned long)) { + return PyLong_FromUnsignedLong((unsigned long) value); +#ifdef HAVE_LONG_LONG + } else if (sizeof(long) <= sizeof(unsigned PY_LONG_LONG)) { + return PyLong_FromUnsignedLongLong((unsigned PY_LONG_LONG) value); +#endif + } + } else { + if (sizeof(long) <= sizeof(long)) { + return PyInt_FromLong((long) value); +#ifdef HAVE_LONG_LONG + } else if (sizeof(long) <= sizeof(PY_LONG_LONG)) { + return PyLong_FromLongLong((PY_LONG_LONG) value); +#endif + } + } + { + int one = 1; int little = (int)*(unsigned char *)&one; + unsigned char *bytes = (unsigned char *)&value; + return _PyLong_FromByteArray(bytes, sizeof(long), + little, !is_unsigned); + } +} + +/* CIntToPy */ + static CYTHON_INLINE PyObject* __Pyx_PyInt_From_int(int value) { + const int neg_one = (int) -1, const_zero = (int) 0; + const int is_unsigned = neg_one > const_zero; + if (is_unsigned) { + if (sizeof(int) < sizeof(long)) { + return PyInt_FromLong((long) value); + } else if (sizeof(int) <= sizeof(unsigned long)) { + return PyLong_FromUnsignedLong((unsigned long) value); +#ifdef HAVE_LONG_LONG + } else if (sizeof(int) <= sizeof(unsigned PY_LONG_LONG)) { + return PyLong_FromUnsignedLongLong((unsigned PY_LONG_LONG) value); +#endif + } + } else { + if (sizeof(int) <= sizeof(long)) { + return PyInt_FromLong((long) value); +#ifdef HAVE_LONG_LONG + } else if (sizeof(int) <= sizeof(PY_LONG_LONG)) { + return PyLong_FromLongLong((PY_LONG_LONG) value); +#endif + } + } + { + int one = 1; int little = (int)*(unsigned char *)&one; + unsigned char *bytes = (unsigned char *)&value; + return _PyLong_FromByteArray(bytes, sizeof(int), + little, !is_unsigned); + } +} + +/* ToPyCTupleUtility */ + static PyObject* __pyx_convert__to_py___pyx_ctuple_long__and_long__and_long(__pyx_ctuple_long__and_long__and_long value) { + PyObject* item = NULL; + PyObject* result = PyTuple_New(3); + if (!result) goto bad; + item = __Pyx_PyInt_From_long(value.f0); + if (!item) goto bad; + PyTuple_SET_ITEM(result, 0, item); + item = __Pyx_PyInt_From_long(value.f1); + if (!item) goto bad; + PyTuple_SET_ITEM(result, 1, item); + item = __Pyx_PyInt_From_long(value.f2); + if (!item) goto bad; + PyTuple_SET_ITEM(result, 2, item); + return result; +bad: + Py_XDECREF(item); + Py_XDECREF(result); + return NULL; +} + +/* CIntFromPy */ + static CYTHON_INLINE int __Pyx_PyInt_As_int(PyObject *x) { + const int neg_one = (int) -1, const_zero = (int) 0; + const int is_unsigned = neg_one > const_zero; +#if PY_MAJOR_VERSION < 3 + if (likely(PyInt_Check(x))) { + if (sizeof(int) < sizeof(long)) { + __PYX_VERIFY_RETURN_INT(int, long, PyInt_AS_LONG(x)) + } else { + long val = PyInt_AS_LONG(x); + if (is_unsigned && unlikely(val < 0)) { + goto raise_neg_overflow; + } + return (int) val; + } + } else +#endif + if (likely(PyLong_Check(x))) { + if (is_unsigned) { +#if CYTHON_USE_PYLONG_INTERNALS + const digit* digits = ((PyLongObject*)x)->ob_digit; + switch (Py_SIZE(x)) { + case 0: return (int) 0; + case 1: __PYX_VERIFY_RETURN_INT(int, digit, digits[0]) + case 2: + if (8 * sizeof(int) > 1 * PyLong_SHIFT) { + if (8 * sizeof(unsigned long) > 2 * PyLong_SHIFT) { + __PYX_VERIFY_RETURN_INT(int, unsigned long, (((((unsigned long)digits[1]) << PyLong_SHIFT) | (unsigned long)digits[0]))) + } else if (8 * sizeof(int) >= 2 * PyLong_SHIFT) { + return (int) (((((int)digits[1]) << PyLong_SHIFT) | (int)digits[0])); + } + } + break; + case 3: + if (8 * sizeof(int) > 2 * PyLong_SHIFT) { + if (8 * sizeof(unsigned long) > 3 * PyLong_SHIFT) { + __PYX_VERIFY_RETURN_INT(int, unsigned long, (((((((unsigned long)digits[2]) << PyLong_SHIFT) | (unsigned long)digits[1]) << PyLong_SHIFT) | (unsigned long)digits[0]))) + } else if (8 * sizeof(int) >= 3 * PyLong_SHIFT) { + return (int) (((((((int)digits[2]) << PyLong_SHIFT) | (int)digits[1]) << PyLong_SHIFT) | (int)digits[0])); + } + } + break; + case 4: + if (8 * sizeof(int) > 3 * PyLong_SHIFT) { + if (8 * sizeof(unsigned long) > 4 * PyLong_SHIFT) { + __PYX_VERIFY_RETURN_INT(int, unsigned long, (((((((((unsigned long)digits[3]) << PyLong_SHIFT) | (unsigned long)digits[2]) << PyLong_SHIFT) | (unsigned long)digits[1]) << PyLong_SHIFT) | (unsigned long)digits[0]))) + } else if (8 * sizeof(int) >= 4 * PyLong_SHIFT) { + return (int) (((((((((int)digits[3]) << PyLong_SHIFT) | (int)digits[2]) << PyLong_SHIFT) | (int)digits[1]) << PyLong_SHIFT) | (int)digits[0])); + } + } + break; + } +#endif +#if CYTHON_COMPILING_IN_CPYTHON + if (unlikely(Py_SIZE(x) < 0)) { + goto raise_neg_overflow; + } +#else + { + int result = PyObject_RichCompareBool(x, Py_False, Py_LT); + if (unlikely(result < 0)) + return (int) -1; + if (unlikely(result == 1)) + goto raise_neg_overflow; + } +#endif + if (sizeof(int) <= sizeof(unsigned long)) { + __PYX_VERIFY_RETURN_INT_EXC(int, unsigned long, PyLong_AsUnsignedLong(x)) +#ifdef HAVE_LONG_LONG + } else if (sizeof(int) <= sizeof(unsigned PY_LONG_LONG)) { + __PYX_VERIFY_RETURN_INT_EXC(int, unsigned PY_LONG_LONG, PyLong_AsUnsignedLongLong(x)) +#endif + } + } else { +#if CYTHON_USE_PYLONG_INTERNALS + const digit* digits = ((PyLongObject*)x)->ob_digit; + switch (Py_SIZE(x)) { + case 0: return (int) 0; + case -1: __PYX_VERIFY_RETURN_INT(int, sdigit, (sdigit) (-(sdigit)digits[0])) + case 1: __PYX_VERIFY_RETURN_INT(int, digit, +digits[0]) + case -2: + if (8 * sizeof(int) - 1 > 1 * PyLong_SHIFT) { + if (8 * sizeof(unsigned long) > 2 * PyLong_SHIFT) { + __PYX_VERIFY_RETURN_INT(int, long, -(long) (((((unsigned long)digits[1]) << PyLong_SHIFT) | (unsigned long)digits[0]))) + } else if (8 * sizeof(int) - 1 > 2 * PyLong_SHIFT) { + return (int) (((int)-1)*(((((int)digits[1]) << PyLong_SHIFT) | (int)digits[0]))); + } + } + break; + case 2: + if (8 * sizeof(int) > 1 * PyLong_SHIFT) { + if (8 * sizeof(unsigned long) > 2 * PyLong_SHIFT) { + __PYX_VERIFY_RETURN_INT(int, unsigned long, (((((unsigned long)digits[1]) << PyLong_SHIFT) | (unsigned long)digits[0]))) + } else if (8 * sizeof(int) - 1 > 2 * PyLong_SHIFT) { + return (int) ((((((int)digits[1]) << PyLong_SHIFT) | (int)digits[0]))); + } + } + break; + case -3: + if (8 * sizeof(int) - 1 > 2 * PyLong_SHIFT) { + if (8 * sizeof(unsigned long) > 3 * PyLong_SHIFT) { + __PYX_VERIFY_RETURN_INT(int, long, -(long) (((((((unsigned long)digits[2]) << PyLong_SHIFT) | (unsigned long)digits[1]) << PyLong_SHIFT) | (unsigned long)digits[0]))) + } else if (8 * sizeof(int) - 1 > 3 * PyLong_SHIFT) { + return (int) (((int)-1)*(((((((int)digits[2]) << PyLong_SHIFT) | (int)digits[1]) << PyLong_SHIFT) | (int)digits[0]))); + } + } + break; + case 3: + if (8 * sizeof(int) > 2 * PyLong_SHIFT) { + if (8 * sizeof(unsigned long) > 3 * PyLong_SHIFT) { + __PYX_VERIFY_RETURN_INT(int, unsigned long, (((((((unsigned long)digits[2]) << PyLong_SHIFT) | (unsigned long)digits[1]) << PyLong_SHIFT) | (unsigned long)digits[0]))) + } else if (8 * sizeof(int) - 1 > 3 * PyLong_SHIFT) { + return (int) ((((((((int)digits[2]) << PyLong_SHIFT) | (int)digits[1]) << PyLong_SHIFT) | (int)digits[0]))); + } + } + break; + case -4: + if (8 * sizeof(int) - 1 > 3 * PyLong_SHIFT) { + if (8 * sizeof(unsigned long) > 4 * PyLong_SHIFT) { + __PYX_VERIFY_RETURN_INT(int, long, -(long) (((((((((unsigned long)digits[3]) << PyLong_SHIFT) | (unsigned long)digits[2]) << PyLong_SHIFT) | (unsigned long)digits[1]) << PyLong_SHIFT) | (unsigned long)digits[0]))) + } else if (8 * sizeof(int) - 1 > 4 * PyLong_SHIFT) { + return (int) (((int)-1)*(((((((((int)digits[3]) << PyLong_SHIFT) | (int)digits[2]) << PyLong_SHIFT) | (int)digits[1]) << PyLong_SHIFT) | (int)digits[0]))); + } + } + break; + case 4: + if (8 * sizeof(int) > 3 * PyLong_SHIFT) { + if (8 * sizeof(unsigned long) > 4 * PyLong_SHIFT) { + __PYX_VERIFY_RETURN_INT(int, unsigned long, (((((((((unsigned long)digits[3]) << PyLong_SHIFT) | (unsigned long)digits[2]) << PyLong_SHIFT) | (unsigned long)digits[1]) << PyLong_SHIFT) | (unsigned long)digits[0]))) + } else if (8 * sizeof(int) - 1 > 4 * PyLong_SHIFT) { + return (int) ((((((((((int)digits[3]) << PyLong_SHIFT) | (int)digits[2]) << PyLong_SHIFT) | (int)digits[1]) << PyLong_SHIFT) | (int)digits[0]))); + } + } + break; + } +#endif + if (sizeof(int) <= sizeof(long)) { + __PYX_VERIFY_RETURN_INT_EXC(int, long, PyLong_AsLong(x)) +#ifdef HAVE_LONG_LONG + } else if (sizeof(int) <= sizeof(PY_LONG_LONG)) { + __PYX_VERIFY_RETURN_INT_EXC(int, PY_LONG_LONG, PyLong_AsLongLong(x)) +#endif + } + } + { +#if CYTHON_COMPILING_IN_PYPY && !defined(_PyLong_AsByteArray) + PyErr_SetString(PyExc_RuntimeError, + "_PyLong_AsByteArray() not available in PyPy, cannot convert large numbers"); +#else + int val; + PyObject *v = __Pyx_PyNumber_IntOrLong(x); + #if PY_MAJOR_VERSION < 3 + if (likely(v) && !PyLong_Check(v)) { + PyObject *tmp = v; + v = PyNumber_Long(tmp); + Py_DECREF(tmp); + } + #endif + if (likely(v)) { + int one = 1; int is_little = (int)*(unsigned char *)&one; + unsigned char *bytes = (unsigned char *)&val; + int ret = _PyLong_AsByteArray((PyLongObject *)v, + bytes, sizeof(val), + is_little, !is_unsigned); + Py_DECREF(v); + if (likely(!ret)) + return val; + } +#endif + return (int) -1; + } + } else { + int val; + PyObject *tmp = __Pyx_PyNumber_IntOrLong(x); + if (!tmp) return (int) -1; + val = __Pyx_PyInt_As_int(tmp); + Py_DECREF(tmp); + return val; + } +raise_overflow: + PyErr_SetString(PyExc_OverflowError, + "value too large to convert to int"); + return (int) -1; +raise_neg_overflow: + PyErr_SetString(PyExc_OverflowError, + "can't convert negative value to int"); + return (int) -1; +} + +/* PrintOne */ + #if !CYTHON_COMPILING_IN_PYPY && PY_MAJOR_VERSION < 3 +static int __Pyx_PrintOne(PyObject* f, PyObject *o) { + if (!f) { + if (!(f = __Pyx_GetStdout())) + return -1; + } + Py_INCREF(f); + if (PyFile_SoftSpace(f, 0)) { + if (PyFile_WriteString(" ", f) < 0) + goto error; + } + if (PyFile_WriteObject(o, f, Py_PRINT_RAW) < 0) + goto error; + if (PyFile_WriteString("\n", f) < 0) + goto error; + Py_DECREF(f); + return 0; +error: + Py_DECREF(f); + return -1; + /* the line below is just to avoid C compiler + * warnings about unused functions */ + return __Pyx_Print(f, NULL, 0); +} +#else +static int __Pyx_PrintOne(PyObject* stream, PyObject *o) { + int res; + PyObject* arg_tuple = PyTuple_Pack(1, o); + if (unlikely(!arg_tuple)) + return -1; + res = __Pyx_Print(stream, arg_tuple, 1); + Py_DECREF(arg_tuple); + return res; +} +#endif + +/* CIntFromPy */ + static CYTHON_INLINE long __Pyx_PyInt_As_long(PyObject *x) { + const long neg_one = (long) -1, const_zero = (long) 0; + const int is_unsigned = neg_one > const_zero; +#if PY_MAJOR_VERSION < 3 + if (likely(PyInt_Check(x))) { + if (sizeof(long) < sizeof(long)) { + __PYX_VERIFY_RETURN_INT(long, long, PyInt_AS_LONG(x)) + } else { + long val = PyInt_AS_LONG(x); + if (is_unsigned && unlikely(val < 0)) { + goto raise_neg_overflow; + } + return (long) val; + } + } else +#endif + if (likely(PyLong_Check(x))) { + if (is_unsigned) { +#if CYTHON_USE_PYLONG_INTERNALS + const digit* digits = ((PyLongObject*)x)->ob_digit; + switch (Py_SIZE(x)) { + case 0: return (long) 0; + case 1: __PYX_VERIFY_RETURN_INT(long, digit, digits[0]) + case 2: + if (8 * sizeof(long) > 1 * PyLong_SHIFT) { + if (8 * sizeof(unsigned long) > 2 * PyLong_SHIFT) { + __PYX_VERIFY_RETURN_INT(long, unsigned long, (((((unsigned long)digits[1]) << PyLong_SHIFT) | (unsigned long)digits[0]))) + } else if (8 * sizeof(long) >= 2 * PyLong_SHIFT) { + return (long) (((((long)digits[1]) << PyLong_SHIFT) | (long)digits[0])); + } + } + break; + case 3: + if (8 * sizeof(long) > 2 * PyLong_SHIFT) { + if (8 * sizeof(unsigned long) > 3 * PyLong_SHIFT) { + __PYX_VERIFY_RETURN_INT(long, unsigned long, (((((((unsigned long)digits[2]) << PyLong_SHIFT) | (unsigned long)digits[1]) << PyLong_SHIFT) | (unsigned long)digits[0]))) + } else if (8 * sizeof(long) >= 3 * PyLong_SHIFT) { + return (long) (((((((long)digits[2]) << PyLong_SHIFT) | (long)digits[1]) << PyLong_SHIFT) | (long)digits[0])); + } + } + break; + case 4: + if (8 * sizeof(long) > 3 * PyLong_SHIFT) { + if (8 * sizeof(unsigned long) > 4 * PyLong_SHIFT) { + __PYX_VERIFY_RETURN_INT(long, unsigned long, (((((((((unsigned long)digits[3]) << PyLong_SHIFT) | (unsigned long)digits[2]) << PyLong_SHIFT) | (unsigned long)digits[1]) << PyLong_SHIFT) | (unsigned long)digits[0]))) + } else if (8 * sizeof(long) >= 4 * PyLong_SHIFT) { + return (long) (((((((((long)digits[3]) << PyLong_SHIFT) | (long)digits[2]) << PyLong_SHIFT) | (long)digits[1]) << PyLong_SHIFT) | (long)digits[0])); + } + } + break; + } +#endif +#if CYTHON_COMPILING_IN_CPYTHON + if (unlikely(Py_SIZE(x) < 0)) { + goto raise_neg_overflow; + } +#else + { + int result = PyObject_RichCompareBool(x, Py_False, Py_LT); + if (unlikely(result < 0)) + return (long) -1; + if (unlikely(result == 1)) + goto raise_neg_overflow; + } +#endif + if (sizeof(long) <= sizeof(unsigned long)) { + __PYX_VERIFY_RETURN_INT_EXC(long, unsigned long, PyLong_AsUnsignedLong(x)) +#ifdef HAVE_LONG_LONG + } else if (sizeof(long) <= sizeof(unsigned PY_LONG_LONG)) { + __PYX_VERIFY_RETURN_INT_EXC(long, unsigned PY_LONG_LONG, PyLong_AsUnsignedLongLong(x)) +#endif + } + } else { +#if CYTHON_USE_PYLONG_INTERNALS + const digit* digits = ((PyLongObject*)x)->ob_digit; + switch (Py_SIZE(x)) { + case 0: return (long) 0; + case -1: __PYX_VERIFY_RETURN_INT(long, sdigit, (sdigit) (-(sdigit)digits[0])) + case 1: __PYX_VERIFY_RETURN_INT(long, digit, +digits[0]) + case -2: + if (8 * sizeof(long) - 1 > 1 * PyLong_SHIFT) { + if (8 * sizeof(unsigned long) > 2 * PyLong_SHIFT) { + __PYX_VERIFY_RETURN_INT(long, long, -(long) (((((unsigned long)digits[1]) << PyLong_SHIFT) | (unsigned long)digits[0]))) + } else if (8 * sizeof(long) - 1 > 2 * PyLong_SHIFT) { + return (long) (((long)-1)*(((((long)digits[1]) << PyLong_SHIFT) | (long)digits[0]))); + } + } + break; + case 2: + if (8 * sizeof(long) > 1 * PyLong_SHIFT) { + if (8 * sizeof(unsigned long) > 2 * PyLong_SHIFT) { + __PYX_VERIFY_RETURN_INT(long, unsigned long, (((((unsigned long)digits[1]) << PyLong_SHIFT) | (unsigned long)digits[0]))) + } else if (8 * sizeof(long) - 1 > 2 * PyLong_SHIFT) { + return (long) ((((((long)digits[1]) << PyLong_SHIFT) | (long)digits[0]))); + } + } + break; + case -3: + if (8 * sizeof(long) - 1 > 2 * PyLong_SHIFT) { + if (8 * sizeof(unsigned long) > 3 * PyLong_SHIFT) { + __PYX_VERIFY_RETURN_INT(long, long, -(long) (((((((unsigned long)digits[2]) << PyLong_SHIFT) | (unsigned long)digits[1]) << PyLong_SHIFT) | (unsigned long)digits[0]))) + } else if (8 * sizeof(long) - 1 > 3 * PyLong_SHIFT) { + return (long) (((long)-1)*(((((((long)digits[2]) << PyLong_SHIFT) | (long)digits[1]) << PyLong_SHIFT) | (long)digits[0]))); + } + } + break; + case 3: + if (8 * sizeof(long) > 2 * PyLong_SHIFT) { + if (8 * sizeof(unsigned long) > 3 * PyLong_SHIFT) { + __PYX_VERIFY_RETURN_INT(long, unsigned long, (((((((unsigned long)digits[2]) << PyLong_SHIFT) | (unsigned long)digits[1]) << PyLong_SHIFT) | (unsigned long)digits[0]))) + } else if (8 * sizeof(long) - 1 > 3 * PyLong_SHIFT) { + return (long) ((((((((long)digits[2]) << PyLong_SHIFT) | (long)digits[1]) << PyLong_SHIFT) | (long)digits[0]))); + } + } + break; + case -4: + if (8 * sizeof(long) - 1 > 3 * PyLong_SHIFT) { + if (8 * sizeof(unsigned long) > 4 * PyLong_SHIFT) { + __PYX_VERIFY_RETURN_INT(long, long, -(long) (((((((((unsigned long)digits[3]) << PyLong_SHIFT) | (unsigned long)digits[2]) << PyLong_SHIFT) | (unsigned long)digits[1]) << PyLong_SHIFT) | (unsigned long)digits[0]))) + } else if (8 * sizeof(long) - 1 > 4 * PyLong_SHIFT) { + return (long) (((long)-1)*(((((((((long)digits[3]) << PyLong_SHIFT) | (long)digits[2]) << PyLong_SHIFT) | (long)digits[1]) << PyLong_SHIFT) | (long)digits[0]))); + } + } + break; + case 4: + if (8 * sizeof(long) > 3 * PyLong_SHIFT) { + if (8 * sizeof(unsigned long) > 4 * PyLong_SHIFT) { + __PYX_VERIFY_RETURN_INT(long, unsigned long, (((((((((unsigned long)digits[3]) << PyLong_SHIFT) | (unsigned long)digits[2]) << PyLong_SHIFT) | (unsigned long)digits[1]) << PyLong_SHIFT) | (unsigned long)digits[0]))) + } else if (8 * sizeof(long) - 1 > 4 * PyLong_SHIFT) { + return (long) ((((((((((long)digits[3]) << PyLong_SHIFT) | (long)digits[2]) << PyLong_SHIFT) | (long)digits[1]) << PyLong_SHIFT) | (long)digits[0]))); + } + } + break; + } +#endif + if (sizeof(long) <= sizeof(long)) { + __PYX_VERIFY_RETURN_INT_EXC(long, long, PyLong_AsLong(x)) +#ifdef HAVE_LONG_LONG + } else if (sizeof(long) <= sizeof(PY_LONG_LONG)) { + __PYX_VERIFY_RETURN_INT_EXC(long, PY_LONG_LONG, PyLong_AsLongLong(x)) +#endif + } + } + { +#if CYTHON_COMPILING_IN_PYPY && !defined(_PyLong_AsByteArray) + PyErr_SetString(PyExc_RuntimeError, + "_PyLong_AsByteArray() not available in PyPy, cannot convert large numbers"); +#else + long val; + PyObject *v = __Pyx_PyNumber_IntOrLong(x); + #if PY_MAJOR_VERSION < 3 + if (likely(v) && !PyLong_Check(v)) { + PyObject *tmp = v; + v = PyNumber_Long(tmp); + Py_DECREF(tmp); + } + #endif + if (likely(v)) { + int one = 1; int is_little = (int)*(unsigned char *)&one; + unsigned char *bytes = (unsigned char *)&val; + int ret = _PyLong_AsByteArray((PyLongObject *)v, + bytes, sizeof(val), + is_little, !is_unsigned); + Py_DECREF(v); + if (likely(!ret)) + return val; + } +#endif + return (long) -1; + } + } else { + long val; + PyObject *tmp = __Pyx_PyNumber_IntOrLong(x); + if (!tmp) return (long) -1; + val = __Pyx_PyInt_As_long(tmp); + Py_DECREF(tmp); + return val; + } +raise_overflow: + PyErr_SetString(PyExc_OverflowError, + "value too large to convert to long"); + return (long) -1; +raise_neg_overflow: + PyErr_SetString(PyExc_OverflowError, + "can't convert negative value to long"); + return (long) -1; +} + +/* CheckBinaryVersion */ + static int __Pyx_check_binary_version(void) { + char ctversion[4], rtversion[4]; + PyOS_snprintf(ctversion, 4, "%d.%d", PY_MAJOR_VERSION, PY_MINOR_VERSION); + PyOS_snprintf(rtversion, 4, "%s", Py_GetVersion()); + if (ctversion[0] != rtversion[0] || ctversion[2] != rtversion[2]) { + char message[200]; + PyOS_snprintf(message, sizeof(message), + "compiletime version %s of module '%.100s' " + "does not match runtime version %s", + ctversion, __Pyx_MODULE_NAME, rtversion); + return PyErr_WarnEx(NULL, message, 1); + } + return 0; +} + +/* InitStrings */ + static int __Pyx_InitStrings(__Pyx_StringTabEntry *t) { + while (t->p) { + #if PY_MAJOR_VERSION < 3 + if (t->is_unicode) { + *t->p = PyUnicode_DecodeUTF8(t->s, t->n - 1, NULL); + } else if (t->intern) { + *t->p = PyString_InternFromString(t->s); + } else { + *t->p = PyString_FromStringAndSize(t->s, t->n - 1); + } + #else + if (t->is_unicode | t->is_str) { + if (t->intern) { + *t->p = PyUnicode_InternFromString(t->s); + } else if (t->encoding) { + *t->p = PyUnicode_Decode(t->s, t->n - 1, t->encoding, NULL); + } else { + *t->p = PyUnicode_FromStringAndSize(t->s, t->n - 1); + } + } else { + *t->p = PyBytes_FromStringAndSize(t->s, t->n - 1); + } + #endif + if (!*t->p) + return -1; + if (PyObject_Hash(*t->p) == -1) + PyErr_Clear(); + ++t; + } + return 0; +} + +static CYTHON_INLINE PyObject* __Pyx_PyUnicode_FromString(const char* c_str) { + return __Pyx_PyUnicode_FromStringAndSize(c_str, (Py_ssize_t)strlen(c_str)); +} +static CYTHON_INLINE const char* __Pyx_PyObject_AsString(PyObject* o) { + Py_ssize_t ignore; + return __Pyx_PyObject_AsStringAndSize(o, &ignore); +} +static CYTHON_INLINE const char* __Pyx_PyObject_AsStringAndSize(PyObject* o, Py_ssize_t *length) { +#if CYTHON_COMPILING_IN_CPYTHON && (__PYX_DEFAULT_STRING_ENCODING_IS_ASCII || __PYX_DEFAULT_STRING_ENCODING_IS_DEFAULT) + if ( +#if PY_MAJOR_VERSION < 3 && __PYX_DEFAULT_STRING_ENCODING_IS_ASCII + __Pyx_sys_getdefaultencoding_not_ascii && +#endif + PyUnicode_Check(o)) { +#if PY_VERSION_HEX < 0x03030000 + char* defenc_c; + PyObject* defenc = _PyUnicode_AsDefaultEncodedString(o, NULL); + if (!defenc) return NULL; + defenc_c = PyBytes_AS_STRING(defenc); +#if __PYX_DEFAULT_STRING_ENCODING_IS_ASCII + { + char* end = defenc_c + PyBytes_GET_SIZE(defenc); + char* c; + for (c = defenc_c; c < end; c++) { + if ((unsigned char) (*c) >= 128) { + PyUnicode_AsASCIIString(o); + return NULL; + } + } + } +#endif + *length = PyBytes_GET_SIZE(defenc); + return defenc_c; +#else + if (__Pyx_PyUnicode_READY(o) == -1) return NULL; +#if __PYX_DEFAULT_STRING_ENCODING_IS_ASCII + if (PyUnicode_IS_ASCII(o)) { + *length = PyUnicode_GET_LENGTH(o); + return PyUnicode_AsUTF8(o); + } else { + PyUnicode_AsASCIIString(o); + return NULL; + } +#else + return PyUnicode_AsUTF8AndSize(o, length); +#endif +#endif + } else +#endif +#if (!CYTHON_COMPILING_IN_PYPY) || (defined(PyByteArray_AS_STRING) && defined(PyByteArray_GET_SIZE)) + if (PyByteArray_Check(o)) { + *length = PyByteArray_GET_SIZE(o); + return PyByteArray_AS_STRING(o); + } else +#endif + { + char* result; + int r = PyBytes_AsStringAndSize(o, &result, length); + if (unlikely(r < 0)) { + return NULL; + } else { + return result; + } + } +} +static CYTHON_INLINE int __Pyx_PyObject_IsTrue(PyObject* x) { + int is_true = x == Py_True; + if (is_true | (x == Py_False) | (x == Py_None)) return is_true; + else return PyObject_IsTrue(x); +} +static CYTHON_INLINE PyObject* __Pyx_PyNumber_IntOrLong(PyObject* x) { +#if CYTHON_USE_TYPE_SLOTS + PyNumberMethods *m; +#endif + const char *name = NULL; + PyObject *res = NULL; +#if PY_MAJOR_VERSION < 3 + if (PyInt_Check(x) || PyLong_Check(x)) +#else + if (PyLong_Check(x)) +#endif + return __Pyx_NewRef(x); +#if CYTHON_USE_TYPE_SLOTS + m = Py_TYPE(x)->tp_as_number; + #if PY_MAJOR_VERSION < 3 + if (m && m->nb_int) { + name = "int"; + res = PyNumber_Int(x); + } + else if (m && m->nb_long) { + name = "long"; + res = PyNumber_Long(x); + } + #else + if (m && m->nb_int) { + name = "int"; + res = PyNumber_Long(x); + } + #endif +#else + res = PyNumber_Int(x); +#endif + if (res) { +#if PY_MAJOR_VERSION < 3 + if (!PyInt_Check(res) && !PyLong_Check(res)) { +#else + if (!PyLong_Check(res)) { +#endif + PyErr_Format(PyExc_TypeError, + "__%.4s__ returned non-%.4s (type %.200s)", + name, name, Py_TYPE(res)->tp_name); + Py_DECREF(res); + return NULL; + } + } + else if (!PyErr_Occurred()) { + PyErr_SetString(PyExc_TypeError, + "an integer is required"); + } + return res; +} +static CYTHON_INLINE Py_ssize_t __Pyx_PyIndex_AsSsize_t(PyObject* b) { + Py_ssize_t ival; + PyObject *x; +#if PY_MAJOR_VERSION < 3 + if (likely(PyInt_CheckExact(b))) { + if (sizeof(Py_ssize_t) >= sizeof(long)) + return PyInt_AS_LONG(b); + else + return PyInt_AsSsize_t(x); + } +#endif + if (likely(PyLong_CheckExact(b))) { + #if CYTHON_USE_PYLONG_INTERNALS + const digit* digits = ((PyLongObject*)b)->ob_digit; + const Py_ssize_t size = Py_SIZE(b); + if (likely(__Pyx_sst_abs(size) <= 1)) { + ival = likely(size) ? digits[0] : 0; + if (size == -1) ival = -ival; + return ival; + } else { + switch (size) { + case 2: + if (8 * sizeof(Py_ssize_t) > 2 * PyLong_SHIFT) { + return (Py_ssize_t) (((((size_t)digits[1]) << PyLong_SHIFT) | (size_t)digits[0])); + } + break; + case -2: + if (8 * sizeof(Py_ssize_t) > 2 * PyLong_SHIFT) { + return -(Py_ssize_t) (((((size_t)digits[1]) << PyLong_SHIFT) | (size_t)digits[0])); + } + break; + case 3: + if (8 * sizeof(Py_ssize_t) > 3 * PyLong_SHIFT) { + return (Py_ssize_t) (((((((size_t)digits[2]) << PyLong_SHIFT) | (size_t)digits[1]) << PyLong_SHIFT) | (size_t)digits[0])); + } + break; + case -3: + if (8 * sizeof(Py_ssize_t) > 3 * PyLong_SHIFT) { + return -(Py_ssize_t) (((((((size_t)digits[2]) << PyLong_SHIFT) | (size_t)digits[1]) << PyLong_SHIFT) | (size_t)digits[0])); + } + break; + case 4: + if (8 * sizeof(Py_ssize_t) > 4 * PyLong_SHIFT) { + return (Py_ssize_t) (((((((((size_t)digits[3]) << PyLong_SHIFT) | (size_t)digits[2]) << PyLong_SHIFT) | (size_t)digits[1]) << PyLong_SHIFT) | (size_t)digits[0])); + } + break; + case -4: + if (8 * sizeof(Py_ssize_t) > 4 * PyLong_SHIFT) { + return -(Py_ssize_t) (((((((((size_t)digits[3]) << PyLong_SHIFT) | (size_t)digits[2]) << PyLong_SHIFT) | (size_t)digits[1]) << PyLong_SHIFT) | (size_t)digits[0])); + } + break; + } + } + #endif + return PyLong_AsSsize_t(b); + } + x = PyNumber_Index(b); + if (!x) return -1; + ival = PyInt_AsSsize_t(x); + Py_DECREF(x); + return ival; +} +static CYTHON_INLINE PyObject * __Pyx_PyInt_FromSize_t(size_t ival) { + return PyInt_FromSize_t(ival); +} + + +#endif /* Py_PYTHON_H */ diff --git a/CAStar/AATC_Monitor_Viewer.html b/CAStar/AATC_Monitor_Viewer.html new file mode 100644 index 0000000..80b5134 --- /dev/null +++ b/CAStar/AATC_Monitor_Viewer.html @@ -0,0 +1,10392 @@ + + + + + + Cython: AATC_Monitor_Viewer.pyx + + + + +

Generated by Cython 0.26

+

+ Yellow lines hint at Python interaction.
+ Click on a line that starts with a "+" to see the C code that Cython generated for it. +

+

Raw output: AATC_Monitor_Viewer.c

+
 001: #!python
+
 002: #cython: boundscheck=False, wraparound=False, infer_types=True,cdivision = True
+
 003: 
+
+004: import pygame,AATC_Monitor,time,ast,sys,random,AATC_Coordinate
+
  __pyx_t_1 = __Pyx_Import(__pyx_n_s_pygame, 0, -1); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 4, __pyx_L1_error)
+  __Pyx_GOTREF(__pyx_t_1);
+  if (PyDict_SetItem(__pyx_d, __pyx_n_s_pygame, __pyx_t_1) < 0) __PYX_ERR(0, 4, __pyx_L1_error)
+  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
+  __pyx_t_1 = __Pyx_Import(__pyx_n_s_AATC_Monitor, 0, -1); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 4, __pyx_L1_error)
+  __Pyx_GOTREF(__pyx_t_1);
+  if (PyDict_SetItem(__pyx_d, __pyx_n_s_AATC_Monitor, __pyx_t_1) < 0) __PYX_ERR(0, 4, __pyx_L1_error)
+  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
+  __pyx_t_1 = __Pyx_Import(__pyx_n_s_time, 0, -1); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 4, __pyx_L1_error)
+  __Pyx_GOTREF(__pyx_t_1);
+  if (PyDict_SetItem(__pyx_d, __pyx_n_s_time, __pyx_t_1) < 0) __PYX_ERR(0, 4, __pyx_L1_error)
+  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
+  __pyx_t_1 = __Pyx_Import(__pyx_n_s_ast, 0, -1); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 4, __pyx_L1_error)
+  __Pyx_GOTREF(__pyx_t_1);
+  if (PyDict_SetItem(__pyx_d, __pyx_n_s_ast, __pyx_t_1) < 0) __PYX_ERR(0, 4, __pyx_L1_error)
+  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
+  __pyx_t_1 = __Pyx_Import(__pyx_n_s_sys, 0, -1); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 4, __pyx_L1_error)
+  __Pyx_GOTREF(__pyx_t_1);
+  if (PyDict_SetItem(__pyx_d, __pyx_n_s_sys, __pyx_t_1) < 0) __PYX_ERR(0, 4, __pyx_L1_error)
+  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
+  __pyx_t_1 = __Pyx_Import(__pyx_n_s_random, 0, -1); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 4, __pyx_L1_error)
+  __Pyx_GOTREF(__pyx_t_1);
+  if (PyDict_SetItem(__pyx_d, __pyx_n_s_random, __pyx_t_1) < 0) __PYX_ERR(0, 4, __pyx_L1_error)
+  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
+  __pyx_t_1 = __Pyx_Import(__pyx_n_s_AATC_Coordinate, 0, -1); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 4, __pyx_L1_error)
+  __Pyx_GOTREF(__pyx_t_1);
+  if (PyDict_SetItem(__pyx_d, __pyx_n_s_AATC_Coordinate, __pyx_t_1) < 0) __PYX_ERR(0, 4, __pyx_L1_error)
+  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
+
 005: 
+
+006: pygame.init()
+
  __pyx_t_2 = __Pyx_GetModuleGlobalName(__pyx_n_s_pygame); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 6, __pyx_L1_error)
+  __Pyx_GOTREF(__pyx_t_2);
+  __pyx_t_3 = __Pyx_PyObject_GetAttrStr(__pyx_t_2, __pyx_n_s_init); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 6, __pyx_L1_error)
+  __Pyx_GOTREF(__pyx_t_3);
+  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
+  __pyx_t_2 = NULL;
+  if (CYTHON_UNPACK_METHODS && unlikely(PyMethod_Check(__pyx_t_3))) {
+    __pyx_t_2 = PyMethod_GET_SELF(__pyx_t_3);
+    if (likely(__pyx_t_2)) {
+      PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_3);
+      __Pyx_INCREF(__pyx_t_2);
+      __Pyx_INCREF(function);
+      __Pyx_DECREF_SET(__pyx_t_3, function);
+    }
+  }
+  if (__pyx_t_2) {
+    __pyx_t_1 = __Pyx_PyObject_CallOneArg(__pyx_t_3, __pyx_t_2); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 6, __pyx_L1_error)
+    __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
+  } else {
+    __pyx_t_1 = __Pyx_PyObject_CallNoArg(__pyx_t_3); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 6, __pyx_L1_error)
+  }
+  __Pyx_GOTREF(__pyx_t_1);
+  __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
+  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
+
 007: 
+
+008: _images= {}
+
  __pyx_t_1 = PyDict_New(); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 8, __pyx_L1_error)
+  __Pyx_GOTREF(__pyx_t_1);
+  if (PyDict_SetItem(__pyx_d, __pyx_n_s_images, __pyx_t_1) < 0) __PYX_ERR(0, 8, __pyx_L1_error)
+  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
+
+009: def GetImage(xSize,ySize,Colour):  #Efficiently get images
+
/* Python wrapper */
+static PyObject *__pyx_pw_6CAStar_19AATC_Monitor_Viewer_1GetImage(PyObject *__pyx_self, PyObject *__pyx_args, PyObject *__pyx_kwds); /*proto*/
+static PyMethodDef __pyx_mdef_6CAStar_19AATC_Monitor_Viewer_1GetImage = {"GetImage", (PyCFunction)__pyx_pw_6CAStar_19AATC_Monitor_Viewer_1GetImage, METH_VARARGS|METH_KEYWORDS, 0};
+static PyObject *__pyx_pw_6CAStar_19AATC_Monitor_Viewer_1GetImage(PyObject *__pyx_self, PyObject *__pyx_args, PyObject *__pyx_kwds) {
+  PyObject *__pyx_v_xSize = 0;
+  PyObject *__pyx_v_ySize = 0;
+  PyObject *__pyx_v_Colour = 0;
+  PyObject *__pyx_r = 0;
+  __Pyx_RefNannyDeclarations
+  __Pyx_RefNannySetupContext("GetImage (wrapper)", 0);
+  {
+    static PyObject **__pyx_pyargnames[] = {&__pyx_n_s_xSize,&__pyx_n_s_ySize,&__pyx_n_s_Colour,0};
+    PyObject* values[3] = {0,0,0};
+    if (unlikely(__pyx_kwds)) {
+      Py_ssize_t kw_args;
+      const Py_ssize_t pos_args = PyTuple_GET_SIZE(__pyx_args);
+      switch (pos_args) {
+        case  3: values[2] = PyTuple_GET_ITEM(__pyx_args, 2);
+        CYTHON_FALLTHROUGH;
+        case  2: values[1] = PyTuple_GET_ITEM(__pyx_args, 1);
+        CYTHON_FALLTHROUGH;
+        case  1: values[0] = PyTuple_GET_ITEM(__pyx_args, 0);
+        CYTHON_FALLTHROUGH;
+        case  0: break;
+        default: goto __pyx_L5_argtuple_error;
+      }
+      kw_args = PyDict_Size(__pyx_kwds);
+      switch (pos_args) {
+        case  0:
+        if (likely((values[0] = PyDict_GetItem(__pyx_kwds, __pyx_n_s_xSize)) != 0)) kw_args--;
+        else goto __pyx_L5_argtuple_error;
+        CYTHON_FALLTHROUGH;
+        case  1:
+        if (likely((values[1] = PyDict_GetItem(__pyx_kwds, __pyx_n_s_ySize)) != 0)) kw_args--;
+        else {
+          __Pyx_RaiseArgtupleInvalid("GetImage", 1, 3, 3, 1); __PYX_ERR(0, 9, __pyx_L3_error)
+        }
+        CYTHON_FALLTHROUGH;
+        case  2:
+        if (likely((values[2] = PyDict_GetItem(__pyx_kwds, __pyx_n_s_Colour)) != 0)) kw_args--;
+        else {
+          __Pyx_RaiseArgtupleInvalid("GetImage", 1, 3, 3, 2); __PYX_ERR(0, 9, __pyx_L3_error)
+        }
+      }
+      if (unlikely(kw_args > 0)) {
+        if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_pyargnames, 0, values, pos_args, "GetImage") < 0)) __PYX_ERR(0, 9, __pyx_L3_error)
+      }
+    } else if (PyTuple_GET_SIZE(__pyx_args) != 3) {
+      goto __pyx_L5_argtuple_error;
+    } else {
+      values[0] = PyTuple_GET_ITEM(__pyx_args, 0);
+      values[1] = PyTuple_GET_ITEM(__pyx_args, 1);
+      values[2] = PyTuple_GET_ITEM(__pyx_args, 2);
+    }
+    __pyx_v_xSize = values[0];
+    __pyx_v_ySize = values[1];
+    __pyx_v_Colour = values[2];
+  }
+  goto __pyx_L4_argument_unpacking_done;
+  __pyx_L5_argtuple_error:;
+  __Pyx_RaiseArgtupleInvalid("GetImage", 1, 3, 3, PyTuple_GET_SIZE(__pyx_args)); __PYX_ERR(0, 9, __pyx_L3_error)
+  __pyx_L3_error:;
+  __Pyx_AddTraceback("CAStar.AATC_Monitor_Viewer.GetImage", __pyx_clineno, __pyx_lineno, __pyx_filename);
+  __Pyx_RefNannyFinishContext();
+  return NULL;
+  __pyx_L4_argument_unpacking_done:;
+  __pyx_r = __pyx_pf_6CAStar_19AATC_Monitor_Viewer_GetImage(__pyx_self, __pyx_v_xSize, __pyx_v_ySize, __pyx_v_Colour);
+
+  /* function exit code */
+  __Pyx_RefNannyFinishContext();
+  return __pyx_r;
+}
+
+static PyObject *__pyx_pf_6CAStar_19AATC_Monitor_Viewer_GetImage(CYTHON_UNUSED PyObject *__pyx_self, PyObject *__pyx_v_xSize, PyObject *__pyx_v_ySize, PyObject *__pyx_v_Colour) {
+  PyObject *__pyx_v_result = NULL;
+  PyObject *__pyx_r = NULL;
+  __Pyx_RefNannyDeclarations
+  __Pyx_RefNannySetupContext("GetImage", 0);
+/* … */
+  /* function exit code */
+  __pyx_L1_error:;
+  __Pyx_XDECREF(__pyx_t_1);
+  __Pyx_XDECREF(__pyx_t_2);
+  __Pyx_XDECREF(__pyx_t_3);
+  __Pyx_XDECREF(__pyx_t_4);
+  __Pyx_XDECREF(__pyx_t_5);
+  __Pyx_XDECREF(__pyx_t_7);
+  __Pyx_XDECREF(__pyx_t_9);
+  __Pyx_AddTraceback("CAStar.AATC_Monitor_Viewer.GetImage", __pyx_clineno, __pyx_lineno, __pyx_filename);
+  __pyx_r = NULL;
+  __pyx_L0:;
+  __Pyx_XDECREF(__pyx_v_result);
+  __Pyx_XGIVEREF(__pyx_r);
+  __Pyx_RefNannyFinishContext();
+  return __pyx_r;
+}
+/* … */
+  __pyx_tuple__27 = PyTuple_Pack(4, __pyx_n_s_xSize, __pyx_n_s_ySize, __pyx_n_s_Colour, __pyx_n_s_result); if (unlikely(!__pyx_tuple__27)) __PYX_ERR(0, 9, __pyx_L1_error)
+  __Pyx_GOTREF(__pyx_tuple__27);
+  __Pyx_GIVEREF(__pyx_tuple__27);
+/* … */
+  __pyx_t_1 = PyCFunction_NewEx(&__pyx_mdef_6CAStar_19AATC_Monitor_Viewer_1GetImage, NULL, __pyx_n_s_CAStar_AATC_Monitor_Viewer); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 9, __pyx_L1_error)
+  __Pyx_GOTREF(__pyx_t_1);
+  if (PyDict_SetItem(__pyx_d, __pyx_n_s_GetImage, __pyx_t_1) < 0) __PYX_ERR(0, 9, __pyx_L1_error)
+  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
+  __pyx_codeobj__28 = (PyObject*)__Pyx_PyCode_New(3, 0, 4, 0, 0, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__27, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_AATC_Monitor_Viewer_pyx, __pyx_n_s_GetImage, 9, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__28)) __PYX_ERR(0, 9, __pyx_L1_error)
+
+010:     result = _images.get((xSize,ySize,Colour))
+
  __pyx_t_2 = __Pyx_GetModuleGlobalName(__pyx_n_s_images); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 10, __pyx_L1_error)
+  __Pyx_GOTREF(__pyx_t_2);
+  __pyx_t_3 = __Pyx_PyObject_GetAttrStr(__pyx_t_2, __pyx_n_s_get); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 10, __pyx_L1_error)
+  __Pyx_GOTREF(__pyx_t_3);
+  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
+  __pyx_t_2 = PyTuple_New(3); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 10, __pyx_L1_error)
+  __Pyx_GOTREF(__pyx_t_2);
+  __Pyx_INCREF(__pyx_v_xSize);
+  __Pyx_GIVEREF(__pyx_v_xSize);
+  PyTuple_SET_ITEM(__pyx_t_2, 0, __pyx_v_xSize);
+  __Pyx_INCREF(__pyx_v_ySize);
+  __Pyx_GIVEREF(__pyx_v_ySize);
+  PyTuple_SET_ITEM(__pyx_t_2, 1, __pyx_v_ySize);
+  __Pyx_INCREF(__pyx_v_Colour);
+  __Pyx_GIVEREF(__pyx_v_Colour);
+  PyTuple_SET_ITEM(__pyx_t_2, 2, __pyx_v_Colour);
+  __pyx_t_4 = NULL;
+  if (CYTHON_UNPACK_METHODS && unlikely(PyMethod_Check(__pyx_t_3))) {
+    __pyx_t_4 = PyMethod_GET_SELF(__pyx_t_3);
+    if (likely(__pyx_t_4)) {
+      PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_3);
+      __Pyx_INCREF(__pyx_t_4);
+      __Pyx_INCREF(function);
+      __Pyx_DECREF_SET(__pyx_t_3, function);
+    }
+  }
+  if (!__pyx_t_4) {
+    __pyx_t_1 = __Pyx_PyObject_CallOneArg(__pyx_t_3, __pyx_t_2); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 10, __pyx_L1_error)
+    __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
+    __Pyx_GOTREF(__pyx_t_1);
+  } else {
+    #if CYTHON_FAST_PYCALL
+    if (PyFunction_Check(__pyx_t_3)) {
+      PyObject *__pyx_temp[2] = {__pyx_t_4, __pyx_t_2};
+      __pyx_t_1 = __Pyx_PyFunction_FastCall(__pyx_t_3, __pyx_temp+1-1, 1+1); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 10, __pyx_L1_error)
+      __Pyx_XDECREF(__pyx_t_4); __pyx_t_4 = 0;
+      __Pyx_GOTREF(__pyx_t_1);
+      __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
+    } else
+    #endif
+    #if CYTHON_FAST_PYCCALL
+    if (__Pyx_PyFastCFunction_Check(__pyx_t_3)) {
+      PyObject *__pyx_temp[2] = {__pyx_t_4, __pyx_t_2};
+      __pyx_t_1 = __Pyx_PyCFunction_FastCall(__pyx_t_3, __pyx_temp+1-1, 1+1); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 10, __pyx_L1_error)
+      __Pyx_XDECREF(__pyx_t_4); __pyx_t_4 = 0;
+      __Pyx_GOTREF(__pyx_t_1);
+      __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
+    } else
+    #endif
+    {
+      __pyx_t_5 = PyTuple_New(1+1); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 10, __pyx_L1_error)
+      __Pyx_GOTREF(__pyx_t_5);
+      __Pyx_GIVEREF(__pyx_t_4); PyTuple_SET_ITEM(__pyx_t_5, 0, __pyx_t_4); __pyx_t_4 = NULL;
+      __Pyx_GIVEREF(__pyx_t_2);
+      PyTuple_SET_ITEM(__pyx_t_5, 0+1, __pyx_t_2);
+      __pyx_t_2 = 0;
+      __pyx_t_1 = __Pyx_PyObject_Call(__pyx_t_3, __pyx_t_5, NULL); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 10, __pyx_L1_error)
+      __Pyx_GOTREF(__pyx_t_1);
+      __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
+    }
+  }
+  __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
+  __pyx_v_result = __pyx_t_1;
+  __pyx_t_1 = 0;
+
+011:     if result == None:
+
  __pyx_t_1 = PyObject_RichCompare(__pyx_v_result, Py_None, Py_EQ); __Pyx_XGOTREF(__pyx_t_1); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 11, __pyx_L1_error)
+  __pyx_t_6 = __Pyx_PyObject_IsTrue(__pyx_t_1); if (unlikely(__pyx_t_6 < 0)) __PYX_ERR(0, 11, __pyx_L1_error)
+  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
+  if (__pyx_t_6) {
+/* … */
+  }
+
+012:         result = pygame.Surface((xSize,ySize)).convert()
+
    __pyx_t_5 = __Pyx_GetModuleGlobalName(__pyx_n_s_pygame); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 12, __pyx_L1_error)
+    __Pyx_GOTREF(__pyx_t_5);
+    __pyx_t_2 = __Pyx_PyObject_GetAttrStr(__pyx_t_5, __pyx_n_s_Surface); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 12, __pyx_L1_error)
+    __Pyx_GOTREF(__pyx_t_2);
+    __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
+    __pyx_t_5 = PyTuple_New(2); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 12, __pyx_L1_error)
+    __Pyx_GOTREF(__pyx_t_5);
+    __Pyx_INCREF(__pyx_v_xSize);
+    __Pyx_GIVEREF(__pyx_v_xSize);
+    PyTuple_SET_ITEM(__pyx_t_5, 0, __pyx_v_xSize);
+    __Pyx_INCREF(__pyx_v_ySize);
+    __Pyx_GIVEREF(__pyx_v_ySize);
+    PyTuple_SET_ITEM(__pyx_t_5, 1, __pyx_v_ySize);
+    __pyx_t_4 = NULL;
+    if (CYTHON_UNPACK_METHODS && unlikely(PyMethod_Check(__pyx_t_2))) {
+      __pyx_t_4 = PyMethod_GET_SELF(__pyx_t_2);
+      if (likely(__pyx_t_4)) {
+        PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_2);
+        __Pyx_INCREF(__pyx_t_4);
+        __Pyx_INCREF(function);
+        __Pyx_DECREF_SET(__pyx_t_2, function);
+      }
+    }
+    if (!__pyx_t_4) {
+      __pyx_t_3 = __Pyx_PyObject_CallOneArg(__pyx_t_2, __pyx_t_5); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 12, __pyx_L1_error)
+      __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
+      __Pyx_GOTREF(__pyx_t_3);
+    } else {
+      #if CYTHON_FAST_PYCALL
+      if (PyFunction_Check(__pyx_t_2)) {
+        PyObject *__pyx_temp[2] = {__pyx_t_4, __pyx_t_5};
+        __pyx_t_3 = __Pyx_PyFunction_FastCall(__pyx_t_2, __pyx_temp+1-1, 1+1); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 12, __pyx_L1_error)
+        __Pyx_XDECREF(__pyx_t_4); __pyx_t_4 = 0;
+        __Pyx_GOTREF(__pyx_t_3);
+        __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
+      } else
+      #endif
+      #if CYTHON_FAST_PYCCALL
+      if (__Pyx_PyFastCFunction_Check(__pyx_t_2)) {
+        PyObject *__pyx_temp[2] = {__pyx_t_4, __pyx_t_5};
+        __pyx_t_3 = __Pyx_PyCFunction_FastCall(__pyx_t_2, __pyx_temp+1-1, 1+1); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 12, __pyx_L1_error)
+        __Pyx_XDECREF(__pyx_t_4); __pyx_t_4 = 0;
+        __Pyx_GOTREF(__pyx_t_3);
+        __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
+      } else
+      #endif
+      {
+        __pyx_t_7 = PyTuple_New(1+1); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 12, __pyx_L1_error)
+        __Pyx_GOTREF(__pyx_t_7);
+        __Pyx_GIVEREF(__pyx_t_4); PyTuple_SET_ITEM(__pyx_t_7, 0, __pyx_t_4); __pyx_t_4 = NULL;
+        __Pyx_GIVEREF(__pyx_t_5);
+        PyTuple_SET_ITEM(__pyx_t_7, 0+1, __pyx_t_5);
+        __pyx_t_5 = 0;
+        __pyx_t_3 = __Pyx_PyObject_Call(__pyx_t_2, __pyx_t_7, NULL); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 12, __pyx_L1_error)
+        __Pyx_GOTREF(__pyx_t_3);
+        __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
+      }
+    }
+    __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
+    __pyx_t_2 = __Pyx_PyObject_GetAttrStr(__pyx_t_3, __pyx_n_s_convert); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 12, __pyx_L1_error)
+    __Pyx_GOTREF(__pyx_t_2);
+    __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
+    __pyx_t_3 = NULL;
+    if (CYTHON_UNPACK_METHODS && likely(PyMethod_Check(__pyx_t_2))) {
+      __pyx_t_3 = PyMethod_GET_SELF(__pyx_t_2);
+      if (likely(__pyx_t_3)) {
+        PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_2);
+        __Pyx_INCREF(__pyx_t_3);
+        __Pyx_INCREF(function);
+        __Pyx_DECREF_SET(__pyx_t_2, function);
+      }
+    }
+    if (__pyx_t_3) {
+      __pyx_t_1 = __Pyx_PyObject_CallOneArg(__pyx_t_2, __pyx_t_3); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 12, __pyx_L1_error)
+      __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
+    } else {
+      __pyx_t_1 = __Pyx_PyObject_CallNoArg(__pyx_t_2); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 12, __pyx_L1_error)
+    }
+    __Pyx_GOTREF(__pyx_t_1);
+    __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
+    __Pyx_DECREF_SET(__pyx_v_result, __pyx_t_1);
+    __pyx_t_1 = 0;
+
+013:         result.fill(Colour)
+
    __pyx_t_2 = __Pyx_PyObject_GetAttrStr(__pyx_v_result, __pyx_n_s_fill); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 13, __pyx_L1_error)
+    __Pyx_GOTREF(__pyx_t_2);
+    __pyx_t_3 = NULL;
+    if (CYTHON_UNPACK_METHODS && likely(PyMethod_Check(__pyx_t_2))) {
+      __pyx_t_3 = PyMethod_GET_SELF(__pyx_t_2);
+      if (likely(__pyx_t_3)) {
+        PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_2);
+        __Pyx_INCREF(__pyx_t_3);
+        __Pyx_INCREF(function);
+        __Pyx_DECREF_SET(__pyx_t_2, function);
+      }
+    }
+    if (!__pyx_t_3) {
+      __pyx_t_1 = __Pyx_PyObject_CallOneArg(__pyx_t_2, __pyx_v_Colour); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 13, __pyx_L1_error)
+      __Pyx_GOTREF(__pyx_t_1);
+    } else {
+      #if CYTHON_FAST_PYCALL
+      if (PyFunction_Check(__pyx_t_2)) {
+        PyObject *__pyx_temp[2] = {__pyx_t_3, __pyx_v_Colour};
+        __pyx_t_1 = __Pyx_PyFunction_FastCall(__pyx_t_2, __pyx_temp+1-1, 1+1); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 13, __pyx_L1_error)
+        __Pyx_XDECREF(__pyx_t_3); __pyx_t_3 = 0;
+        __Pyx_GOTREF(__pyx_t_1);
+      } else
+      #endif
+      #if CYTHON_FAST_PYCCALL
+      if (__Pyx_PyFastCFunction_Check(__pyx_t_2)) {
+        PyObject *__pyx_temp[2] = {__pyx_t_3, __pyx_v_Colour};
+        __pyx_t_1 = __Pyx_PyCFunction_FastCall(__pyx_t_2, __pyx_temp+1-1, 1+1); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 13, __pyx_L1_error)
+        __Pyx_XDECREF(__pyx_t_3); __pyx_t_3 = 0;
+        __Pyx_GOTREF(__pyx_t_1);
+      } else
+      #endif
+      {
+        __pyx_t_7 = PyTuple_New(1+1); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 13, __pyx_L1_error)
+        __Pyx_GOTREF(__pyx_t_7);
+        __Pyx_GIVEREF(__pyx_t_3); PyTuple_SET_ITEM(__pyx_t_7, 0, __pyx_t_3); __pyx_t_3 = NULL;
+        __Pyx_INCREF(__pyx_v_Colour);
+        __Pyx_GIVEREF(__pyx_v_Colour);
+        PyTuple_SET_ITEM(__pyx_t_7, 0+1, __pyx_v_Colour);
+        __pyx_t_1 = __Pyx_PyObject_Call(__pyx_t_2, __pyx_t_7, NULL); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 13, __pyx_L1_error)
+        __Pyx_GOTREF(__pyx_t_1);
+        __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
+      }
+    }
+    __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
+    __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
+
+014:         _images[(xSize,ySize,Colour)]=result
+
    __pyx_t_1 = __Pyx_GetModuleGlobalName(__pyx_n_s_images); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 14, __pyx_L1_error)
+    __Pyx_GOTREF(__pyx_t_1);
+    __pyx_t_2 = PyTuple_New(3); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 14, __pyx_L1_error)
+    __Pyx_GOTREF(__pyx_t_2);
+    __Pyx_INCREF(__pyx_v_xSize);
+    __Pyx_GIVEREF(__pyx_v_xSize);
+    PyTuple_SET_ITEM(__pyx_t_2, 0, __pyx_v_xSize);
+    __Pyx_INCREF(__pyx_v_ySize);
+    __Pyx_GIVEREF(__pyx_v_ySize);
+    PyTuple_SET_ITEM(__pyx_t_2, 1, __pyx_v_ySize);
+    __Pyx_INCREF(__pyx_v_Colour);
+    __Pyx_GIVEREF(__pyx_v_Colour);
+    PyTuple_SET_ITEM(__pyx_t_2, 2, __pyx_v_Colour);
+    if (unlikely(PyObject_SetItem(__pyx_t_1, __pyx_t_2, __pyx_v_result) < 0)) __PYX_ERR(0, 14, __pyx_L1_error)
+    __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
+    __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
+
+015:     while len(_images) > 1500:
+
  while (1) {
+    __pyx_t_2 = __Pyx_GetModuleGlobalName(__pyx_n_s_images); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 15, __pyx_L1_error)
+    __Pyx_GOTREF(__pyx_t_2);
+    __pyx_t_8 = PyObject_Length(__pyx_t_2); if (unlikely(__pyx_t_8 == -1)) __PYX_ERR(0, 15, __pyx_L1_error)
+    __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
+    __pyx_t_6 = ((__pyx_t_8 > 0x5DC) != 0);
+    if (!__pyx_t_6) break;
+
+016:         _images.pop(random.sample(_images.keys(),1)[0])   #If cache is full evict old versions
+
    __pyx_t_1 = __Pyx_GetModuleGlobalName(__pyx_n_s_images); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 16, __pyx_L1_error)
+    __Pyx_GOTREF(__pyx_t_1);
+    __pyx_t_7 = __Pyx_PyObject_GetAttrStr(__pyx_t_1, __pyx_n_s_pop); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 16, __pyx_L1_error)
+    __Pyx_GOTREF(__pyx_t_7);
+    __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
+    __pyx_t_3 = __Pyx_GetModuleGlobalName(__pyx_n_s_random); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 16, __pyx_L1_error)
+    __Pyx_GOTREF(__pyx_t_3);
+    __pyx_t_5 = __Pyx_PyObject_GetAttrStr(__pyx_t_3, __pyx_n_s_sample); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 16, __pyx_L1_error)
+    __Pyx_GOTREF(__pyx_t_5);
+    __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
+    __pyx_t_4 = __Pyx_GetModuleGlobalName(__pyx_n_s_images); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 16, __pyx_L1_error)
+    __Pyx_GOTREF(__pyx_t_4);
+    __pyx_t_9 = __Pyx_PyObject_GetAttrStr(__pyx_t_4, __pyx_n_s_keys); if (unlikely(!__pyx_t_9)) __PYX_ERR(0, 16, __pyx_L1_error)
+    __Pyx_GOTREF(__pyx_t_9);
+    __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
+    __pyx_t_4 = NULL;
+    if (CYTHON_UNPACK_METHODS && unlikely(PyMethod_Check(__pyx_t_9))) {
+      __pyx_t_4 = PyMethod_GET_SELF(__pyx_t_9);
+      if (likely(__pyx_t_4)) {
+        PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_9);
+        __Pyx_INCREF(__pyx_t_4);
+        __Pyx_INCREF(function);
+        __Pyx_DECREF_SET(__pyx_t_9, function);
+      }
+    }
+    if (__pyx_t_4) {
+      __pyx_t_3 = __Pyx_PyObject_CallOneArg(__pyx_t_9, __pyx_t_4); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 16, __pyx_L1_error)
+      __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
+    } else {
+      __pyx_t_3 = __Pyx_PyObject_CallNoArg(__pyx_t_9); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 16, __pyx_L1_error)
+    }
+    __Pyx_GOTREF(__pyx_t_3);
+    __Pyx_DECREF(__pyx_t_9); __pyx_t_9 = 0;
+    __pyx_t_9 = NULL;
+    __pyx_t_10 = 0;
+    if (CYTHON_UNPACK_METHODS && unlikely(PyMethod_Check(__pyx_t_5))) {
+      __pyx_t_9 = PyMethod_GET_SELF(__pyx_t_5);
+      if (likely(__pyx_t_9)) {
+        PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_5);
+        __Pyx_INCREF(__pyx_t_9);
+        __Pyx_INCREF(function);
+        __Pyx_DECREF_SET(__pyx_t_5, function);
+        __pyx_t_10 = 1;
+      }
+    }
+    #if CYTHON_FAST_PYCALL
+    if (PyFunction_Check(__pyx_t_5)) {
+      PyObject *__pyx_temp[3] = {__pyx_t_9, __pyx_t_3, __pyx_int_1};
+      __pyx_t_1 = __Pyx_PyFunction_FastCall(__pyx_t_5, __pyx_temp+1-__pyx_t_10, 2+__pyx_t_10); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 16, __pyx_L1_error)
+      __Pyx_XDECREF(__pyx_t_9); __pyx_t_9 = 0;
+      __Pyx_GOTREF(__pyx_t_1);
+      __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
+    } else
+    #endif
+    #if CYTHON_FAST_PYCCALL
+    if (__Pyx_PyFastCFunction_Check(__pyx_t_5)) {
+      PyObject *__pyx_temp[3] = {__pyx_t_9, __pyx_t_3, __pyx_int_1};
+      __pyx_t_1 = __Pyx_PyCFunction_FastCall(__pyx_t_5, __pyx_temp+1-__pyx_t_10, 2+__pyx_t_10); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 16, __pyx_L1_error)
+      __Pyx_XDECREF(__pyx_t_9); __pyx_t_9 = 0;
+      __Pyx_GOTREF(__pyx_t_1);
+      __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
+    } else
+    #endif
+    {
+      __pyx_t_4 = PyTuple_New(2+__pyx_t_10); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 16, __pyx_L1_error)
+      __Pyx_GOTREF(__pyx_t_4);
+      if (__pyx_t_9) {
+        __Pyx_GIVEREF(__pyx_t_9); PyTuple_SET_ITEM(__pyx_t_4, 0, __pyx_t_9); __pyx_t_9 = NULL;
+      }
+      __Pyx_GIVEREF(__pyx_t_3);
+      PyTuple_SET_ITEM(__pyx_t_4, 0+__pyx_t_10, __pyx_t_3);
+      __Pyx_INCREF(__pyx_int_1);
+      __Pyx_GIVEREF(__pyx_int_1);
+      PyTuple_SET_ITEM(__pyx_t_4, 1+__pyx_t_10, __pyx_int_1);
+      __pyx_t_3 = 0;
+      __pyx_t_1 = __Pyx_PyObject_Call(__pyx_t_5, __pyx_t_4, NULL); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 16, __pyx_L1_error)
+      __Pyx_GOTREF(__pyx_t_1);
+      __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
+    }
+    __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
+    __pyx_t_5 = __Pyx_GetItemInt(__pyx_t_1, 0, long, 1, __Pyx_PyInt_From_long, 0, 0, 0); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 16, __pyx_L1_error)
+    __Pyx_GOTREF(__pyx_t_5);
+    __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
+    __pyx_t_1 = NULL;
+    if (CYTHON_UNPACK_METHODS && unlikely(PyMethod_Check(__pyx_t_7))) {
+      __pyx_t_1 = PyMethod_GET_SELF(__pyx_t_7);
+      if (likely(__pyx_t_1)) {
+        PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_7);
+        __Pyx_INCREF(__pyx_t_1);
+        __Pyx_INCREF(function);
+        __Pyx_DECREF_SET(__pyx_t_7, function);
+      }
+    }
+    if (!__pyx_t_1) {
+      __pyx_t_2 = __Pyx_PyObject_CallOneArg(__pyx_t_7, __pyx_t_5); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 16, __pyx_L1_error)
+      __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
+      __Pyx_GOTREF(__pyx_t_2);
+    } else {
+      #if CYTHON_FAST_PYCALL
+      if (PyFunction_Check(__pyx_t_7)) {
+        PyObject *__pyx_temp[2] = {__pyx_t_1, __pyx_t_5};
+        __pyx_t_2 = __Pyx_PyFunction_FastCall(__pyx_t_7, __pyx_temp+1-1, 1+1); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 16, __pyx_L1_error)
+        __Pyx_XDECREF(__pyx_t_1); __pyx_t_1 = 0;
+        __Pyx_GOTREF(__pyx_t_2);
+        __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
+      } else
+      #endif
+      #if CYTHON_FAST_PYCCALL
+      if (__Pyx_PyFastCFunction_Check(__pyx_t_7)) {
+        PyObject *__pyx_temp[2] = {__pyx_t_1, __pyx_t_5};
+        __pyx_t_2 = __Pyx_PyCFunction_FastCall(__pyx_t_7, __pyx_temp+1-1, 1+1); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 16, __pyx_L1_error)
+        __Pyx_XDECREF(__pyx_t_1); __pyx_t_1 = 0;
+        __Pyx_GOTREF(__pyx_t_2);
+        __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
+      } else
+      #endif
+      {
+        __pyx_t_4 = PyTuple_New(1+1); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 16, __pyx_L1_error)
+        __Pyx_GOTREF(__pyx_t_4);
+        __Pyx_GIVEREF(__pyx_t_1); PyTuple_SET_ITEM(__pyx_t_4, 0, __pyx_t_1); __pyx_t_1 = NULL;
+        __Pyx_GIVEREF(__pyx_t_5);
+        PyTuple_SET_ITEM(__pyx_t_4, 0+1, __pyx_t_5);
+        __pyx_t_5 = 0;
+        __pyx_t_2 = __Pyx_PyObject_Call(__pyx_t_7, __pyx_t_4, NULL); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 16, __pyx_L1_error)
+        __Pyx_GOTREF(__pyx_t_2);
+        __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
+      }
+    }
+    __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
+    __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
+  }
+
+017:     return result#_copy
+
  __Pyx_XDECREF(__pyx_r);
+  __Pyx_INCREF(__pyx_v_result);
+  __pyx_r = __pyx_v_result;
+  goto __pyx_L0;
+
 018: 
+
+019: _texts= {}
+
  __pyx_t_1 = PyDict_New(); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 19, __pyx_L1_error)
+  __Pyx_GOTREF(__pyx_t_1);
+  if (PyDict_SetItem(__pyx_d, __pyx_n_s_texts, __pyx_t_1) < 0) __PYX_ERR(0, 19, __pyx_L1_error)
+  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
+
+020: def GetText(Text,fontParameters,AA,Colour):  #Efficiently get text
+
/* Python wrapper */
+static PyObject *__pyx_pw_6CAStar_19AATC_Monitor_Viewer_3GetText(PyObject *__pyx_self, PyObject *__pyx_args, PyObject *__pyx_kwds); /*proto*/
+static PyMethodDef __pyx_mdef_6CAStar_19AATC_Monitor_Viewer_3GetText = {"GetText", (PyCFunction)__pyx_pw_6CAStar_19AATC_Monitor_Viewer_3GetText, METH_VARARGS|METH_KEYWORDS, 0};
+static PyObject *__pyx_pw_6CAStar_19AATC_Monitor_Viewer_3GetText(PyObject *__pyx_self, PyObject *__pyx_args, PyObject *__pyx_kwds) {
+  PyObject *__pyx_v_Text = 0;
+  PyObject *__pyx_v_fontParameters = 0;
+  PyObject *__pyx_v_AA = 0;
+  PyObject *__pyx_v_Colour = 0;
+  PyObject *__pyx_r = 0;
+  __Pyx_RefNannyDeclarations
+  __Pyx_RefNannySetupContext("GetText (wrapper)", 0);
+  {
+    static PyObject **__pyx_pyargnames[] = {&__pyx_n_s_Text,&__pyx_n_s_fontParameters,&__pyx_n_s_AA,&__pyx_n_s_Colour,0};
+    PyObject* values[4] = {0,0,0,0};
+    if (unlikely(__pyx_kwds)) {
+      Py_ssize_t kw_args;
+      const Py_ssize_t pos_args = PyTuple_GET_SIZE(__pyx_args);
+      switch (pos_args) {
+        case  4: values[3] = PyTuple_GET_ITEM(__pyx_args, 3);
+        CYTHON_FALLTHROUGH;
+        case  3: values[2] = PyTuple_GET_ITEM(__pyx_args, 2);
+        CYTHON_FALLTHROUGH;
+        case  2: values[1] = PyTuple_GET_ITEM(__pyx_args, 1);
+        CYTHON_FALLTHROUGH;
+        case  1: values[0] = PyTuple_GET_ITEM(__pyx_args, 0);
+        CYTHON_FALLTHROUGH;
+        case  0: break;
+        default: goto __pyx_L5_argtuple_error;
+      }
+      kw_args = PyDict_Size(__pyx_kwds);
+      switch (pos_args) {
+        case  0:
+        if (likely((values[0] = PyDict_GetItem(__pyx_kwds, __pyx_n_s_Text)) != 0)) kw_args--;
+        else goto __pyx_L5_argtuple_error;
+        CYTHON_FALLTHROUGH;
+        case  1:
+        if (likely((values[1] = PyDict_GetItem(__pyx_kwds, __pyx_n_s_fontParameters)) != 0)) kw_args--;
+        else {
+          __Pyx_RaiseArgtupleInvalid("GetText", 1, 4, 4, 1); __PYX_ERR(0, 20, __pyx_L3_error)
+        }
+        CYTHON_FALLTHROUGH;
+        case  2:
+        if (likely((values[2] = PyDict_GetItem(__pyx_kwds, __pyx_n_s_AA)) != 0)) kw_args--;
+        else {
+          __Pyx_RaiseArgtupleInvalid("GetText", 1, 4, 4, 2); __PYX_ERR(0, 20, __pyx_L3_error)
+        }
+        CYTHON_FALLTHROUGH;
+        case  3:
+        if (likely((values[3] = PyDict_GetItem(__pyx_kwds, __pyx_n_s_Colour)) != 0)) kw_args--;
+        else {
+          __Pyx_RaiseArgtupleInvalid("GetText", 1, 4, 4, 3); __PYX_ERR(0, 20, __pyx_L3_error)
+        }
+      }
+      if (unlikely(kw_args > 0)) {
+        if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_pyargnames, 0, values, pos_args, "GetText") < 0)) __PYX_ERR(0, 20, __pyx_L3_error)
+      }
+    } else if (PyTuple_GET_SIZE(__pyx_args) != 4) {
+      goto __pyx_L5_argtuple_error;
+    } else {
+      values[0] = PyTuple_GET_ITEM(__pyx_args, 0);
+      values[1] = PyTuple_GET_ITEM(__pyx_args, 1);
+      values[2] = PyTuple_GET_ITEM(__pyx_args, 2);
+      values[3] = PyTuple_GET_ITEM(__pyx_args, 3);
+    }
+    __pyx_v_Text = values[0];
+    __pyx_v_fontParameters = values[1];
+    __pyx_v_AA = values[2];
+    __pyx_v_Colour = values[3];
+  }
+  goto __pyx_L4_argument_unpacking_done;
+  __pyx_L5_argtuple_error:;
+  __Pyx_RaiseArgtupleInvalid("GetText", 1, 4, 4, PyTuple_GET_SIZE(__pyx_args)); __PYX_ERR(0, 20, __pyx_L3_error)
+  __pyx_L3_error:;
+  __Pyx_AddTraceback("CAStar.AATC_Monitor_Viewer.GetText", __pyx_clineno, __pyx_lineno, __pyx_filename);
+  __Pyx_RefNannyFinishContext();
+  return NULL;
+  __pyx_L4_argument_unpacking_done:;
+  __pyx_r = __pyx_pf_6CAStar_19AATC_Monitor_Viewer_2GetText(__pyx_self, __pyx_v_Text, __pyx_v_fontParameters, __pyx_v_AA, __pyx_v_Colour);
+
+  /* function exit code */
+  __Pyx_RefNannyFinishContext();
+  return __pyx_r;
+}
+
+static PyObject *__pyx_pf_6CAStar_19AATC_Monitor_Viewer_2GetText(CYTHON_UNUSED PyObject *__pyx_self, PyObject *__pyx_v_Text, PyObject *__pyx_v_fontParameters, PyObject *__pyx_v_AA, PyObject *__pyx_v_Colour) {
+  PyObject *__pyx_v_result = NULL;
+  PyObject *__pyx_r = NULL;
+  __Pyx_RefNannyDeclarations
+  __Pyx_RefNannySetupContext("GetText", 0);
+/* … */
+  /* function exit code */
+  __pyx_L1_error:;
+  __Pyx_XDECREF(__pyx_t_1);
+  __Pyx_XDECREF(__pyx_t_2);
+  __Pyx_XDECREF(__pyx_t_3);
+  __Pyx_XDECREF(__pyx_t_4);
+  __Pyx_XDECREF(__pyx_t_5);
+  __Pyx_XDECREF(__pyx_t_9);
+  __Pyx_XDECREF(__pyx_t_10);
+  __Pyx_AddTraceback("CAStar.AATC_Monitor_Viewer.GetText", __pyx_clineno, __pyx_lineno, __pyx_filename);
+  __pyx_r = NULL;
+  __pyx_L0:;
+  __Pyx_XDECREF(__pyx_v_result);
+  __Pyx_XGIVEREF(__pyx_r);
+  __Pyx_RefNannyFinishContext();
+  return __pyx_r;
+}
+/* … */
+  __pyx_tuple__29 = PyTuple_Pack(5, __pyx_n_s_Text, __pyx_n_s_fontParameters, __pyx_n_s_AA, __pyx_n_s_Colour, __pyx_n_s_result); if (unlikely(!__pyx_tuple__29)) __PYX_ERR(0, 20, __pyx_L1_error)
+  __Pyx_GOTREF(__pyx_tuple__29);
+  __Pyx_GIVEREF(__pyx_tuple__29);
+/* … */
+  __pyx_t_1 = PyCFunction_NewEx(&__pyx_mdef_6CAStar_19AATC_Monitor_Viewer_3GetText, NULL, __pyx_n_s_CAStar_AATC_Monitor_Viewer); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 20, __pyx_L1_error)
+  __Pyx_GOTREF(__pyx_t_1);
+  if (PyDict_SetItem(__pyx_d, __pyx_n_s_GetText, __pyx_t_1) < 0) __PYX_ERR(0, 20, __pyx_L1_error)
+  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
+  __pyx_codeobj__30 = (PyObject*)__Pyx_PyCode_New(4, 0, 5, 0, 0, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__29, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_AATC_Monitor_Viewer_pyx, __pyx_n_s_GetText, 20, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__30)) __PYX_ERR(0, 20, __pyx_L1_error)
+
+021:     result = _texts.get((Text,fontParameters,AA,Colour))
+
  __pyx_t_2 = __Pyx_GetModuleGlobalName(__pyx_n_s_texts); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 21, __pyx_L1_error)
+  __Pyx_GOTREF(__pyx_t_2);
+  __pyx_t_3 = __Pyx_PyObject_GetAttrStr(__pyx_t_2, __pyx_n_s_get); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 21, __pyx_L1_error)
+  __Pyx_GOTREF(__pyx_t_3);
+  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
+  __pyx_t_2 = PyTuple_New(4); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 21, __pyx_L1_error)
+  __Pyx_GOTREF(__pyx_t_2);
+  __Pyx_INCREF(__pyx_v_Text);
+  __Pyx_GIVEREF(__pyx_v_Text);
+  PyTuple_SET_ITEM(__pyx_t_2, 0, __pyx_v_Text);
+  __Pyx_INCREF(__pyx_v_fontParameters);
+  __Pyx_GIVEREF(__pyx_v_fontParameters);
+  PyTuple_SET_ITEM(__pyx_t_2, 1, __pyx_v_fontParameters);
+  __Pyx_INCREF(__pyx_v_AA);
+  __Pyx_GIVEREF(__pyx_v_AA);
+  PyTuple_SET_ITEM(__pyx_t_2, 2, __pyx_v_AA);
+  __Pyx_INCREF(__pyx_v_Colour);
+  __Pyx_GIVEREF(__pyx_v_Colour);
+  PyTuple_SET_ITEM(__pyx_t_2, 3, __pyx_v_Colour);
+  __pyx_t_4 = NULL;
+  if (CYTHON_UNPACK_METHODS && unlikely(PyMethod_Check(__pyx_t_3))) {
+    __pyx_t_4 = PyMethod_GET_SELF(__pyx_t_3);
+    if (likely(__pyx_t_4)) {
+      PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_3);
+      __Pyx_INCREF(__pyx_t_4);
+      __Pyx_INCREF(function);
+      __Pyx_DECREF_SET(__pyx_t_3, function);
+    }
+  }
+  if (!__pyx_t_4) {
+    __pyx_t_1 = __Pyx_PyObject_CallOneArg(__pyx_t_3, __pyx_t_2); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 21, __pyx_L1_error)
+    __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
+    __Pyx_GOTREF(__pyx_t_1);
+  } else {
+    #if CYTHON_FAST_PYCALL
+    if (PyFunction_Check(__pyx_t_3)) {
+      PyObject *__pyx_temp[2] = {__pyx_t_4, __pyx_t_2};
+      __pyx_t_1 = __Pyx_PyFunction_FastCall(__pyx_t_3, __pyx_temp+1-1, 1+1); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 21, __pyx_L1_error)
+      __Pyx_XDECREF(__pyx_t_4); __pyx_t_4 = 0;
+      __Pyx_GOTREF(__pyx_t_1);
+      __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
+    } else
+    #endif
+    #if CYTHON_FAST_PYCCALL
+    if (__Pyx_PyFastCFunction_Check(__pyx_t_3)) {
+      PyObject *__pyx_temp[2] = {__pyx_t_4, __pyx_t_2};
+      __pyx_t_1 = __Pyx_PyCFunction_FastCall(__pyx_t_3, __pyx_temp+1-1, 1+1); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 21, __pyx_L1_error)
+      __Pyx_XDECREF(__pyx_t_4); __pyx_t_4 = 0;
+      __Pyx_GOTREF(__pyx_t_1);
+      __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
+    } else
+    #endif
+    {
+      __pyx_t_5 = PyTuple_New(1+1); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 21, __pyx_L1_error)
+      __Pyx_GOTREF(__pyx_t_5);
+      __Pyx_GIVEREF(__pyx_t_4); PyTuple_SET_ITEM(__pyx_t_5, 0, __pyx_t_4); __pyx_t_4 = NULL;
+      __Pyx_GIVEREF(__pyx_t_2);
+      PyTuple_SET_ITEM(__pyx_t_5, 0+1, __pyx_t_2);
+      __pyx_t_2 = 0;
+      __pyx_t_1 = __Pyx_PyObject_Call(__pyx_t_3, __pyx_t_5, NULL); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 21, __pyx_L1_error)
+      __Pyx_GOTREF(__pyx_t_1);
+      __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
+    }
+  }
+  __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
+  __pyx_v_result = __pyx_t_1;
+  __pyx_t_1 = 0;
+
+022:     if result == None:
+
  __pyx_t_1 = PyObject_RichCompare(__pyx_v_result, Py_None, Py_EQ); __Pyx_XGOTREF(__pyx_t_1); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 22, __pyx_L1_error)
+  __pyx_t_6 = __Pyx_PyObject_IsTrue(__pyx_t_1); if (unlikely(__pyx_t_6 < 0)) __PYX_ERR(0, 22, __pyx_L1_error)
+  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
+  if (__pyx_t_6) {
+/* … */
+  }
+
+023:         result = GetFont(*fontParameters).render(Text,AA,Colour)
+
    __pyx_t_3 = __Pyx_GetModuleGlobalName(__pyx_n_s_GetFont); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 23, __pyx_L1_error)
+    __Pyx_GOTREF(__pyx_t_3);
+    __pyx_t_5 = PySequence_Tuple(__pyx_v_fontParameters); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 23, __pyx_L1_error)
+    __Pyx_GOTREF(__pyx_t_5);
+    __pyx_t_2 = __Pyx_PyObject_Call(__pyx_t_3, __pyx_t_5, NULL); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 23, __pyx_L1_error)
+    __Pyx_GOTREF(__pyx_t_2);
+    __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
+    __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
+    __pyx_t_5 = __Pyx_PyObject_GetAttrStr(__pyx_t_2, __pyx_n_s_render); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 23, __pyx_L1_error)
+    __Pyx_GOTREF(__pyx_t_5);
+    __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
+    __pyx_t_2 = NULL;
+    __pyx_t_7 = 0;
+    if (CYTHON_UNPACK_METHODS && likely(PyMethod_Check(__pyx_t_5))) {
+      __pyx_t_2 = PyMethod_GET_SELF(__pyx_t_5);
+      if (likely(__pyx_t_2)) {
+        PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_5);
+        __Pyx_INCREF(__pyx_t_2);
+        __Pyx_INCREF(function);
+        __Pyx_DECREF_SET(__pyx_t_5, function);
+        __pyx_t_7 = 1;
+      }
+    }
+    #if CYTHON_FAST_PYCALL
+    if (PyFunction_Check(__pyx_t_5)) {
+      PyObject *__pyx_temp[4] = {__pyx_t_2, __pyx_v_Text, __pyx_v_AA, __pyx_v_Colour};
+      __pyx_t_1 = __Pyx_PyFunction_FastCall(__pyx_t_5, __pyx_temp+1-__pyx_t_7, 3+__pyx_t_7); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 23, __pyx_L1_error)
+      __Pyx_XDECREF(__pyx_t_2); __pyx_t_2 = 0;
+      __Pyx_GOTREF(__pyx_t_1);
+    } else
+    #endif
+    #if CYTHON_FAST_PYCCALL
+    if (__Pyx_PyFastCFunction_Check(__pyx_t_5)) {
+      PyObject *__pyx_temp[4] = {__pyx_t_2, __pyx_v_Text, __pyx_v_AA, __pyx_v_Colour};
+      __pyx_t_1 = __Pyx_PyCFunction_FastCall(__pyx_t_5, __pyx_temp+1-__pyx_t_7, 3+__pyx_t_7); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 23, __pyx_L1_error)
+      __Pyx_XDECREF(__pyx_t_2); __pyx_t_2 = 0;
+      __Pyx_GOTREF(__pyx_t_1);
+    } else
+    #endif
+    {
+      __pyx_t_3 = PyTuple_New(3+__pyx_t_7); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 23, __pyx_L1_error)
+      __Pyx_GOTREF(__pyx_t_3);
+      if (__pyx_t_2) {
+        __Pyx_GIVEREF(__pyx_t_2); PyTuple_SET_ITEM(__pyx_t_3, 0, __pyx_t_2); __pyx_t_2 = NULL;
+      }
+      __Pyx_INCREF(__pyx_v_Text);
+      __Pyx_GIVEREF(__pyx_v_Text);
+      PyTuple_SET_ITEM(__pyx_t_3, 0+__pyx_t_7, __pyx_v_Text);
+      __Pyx_INCREF(__pyx_v_AA);
+      __Pyx_GIVEREF(__pyx_v_AA);
+      PyTuple_SET_ITEM(__pyx_t_3, 1+__pyx_t_7, __pyx_v_AA);
+      __Pyx_INCREF(__pyx_v_Colour);
+      __Pyx_GIVEREF(__pyx_v_Colour);
+      PyTuple_SET_ITEM(__pyx_t_3, 2+__pyx_t_7, __pyx_v_Colour);
+      __pyx_t_1 = __Pyx_PyObject_Call(__pyx_t_5, __pyx_t_3, NULL); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 23, __pyx_L1_error)
+      __Pyx_GOTREF(__pyx_t_1);
+      __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
+    }
+    __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
+    __Pyx_DECREF_SET(__pyx_v_result, __pyx_t_1);
+    __pyx_t_1 = 0;
+
+024:         _texts[(Text,fontParameters,AA,Colour)]=result
+
    __pyx_t_1 = __Pyx_GetModuleGlobalName(__pyx_n_s_texts); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 24, __pyx_L1_error)
+    __Pyx_GOTREF(__pyx_t_1);
+    __pyx_t_5 = PyTuple_New(4); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 24, __pyx_L1_error)
+    __Pyx_GOTREF(__pyx_t_5);
+    __Pyx_INCREF(__pyx_v_Text);
+    __Pyx_GIVEREF(__pyx_v_Text);
+    PyTuple_SET_ITEM(__pyx_t_5, 0, __pyx_v_Text);
+    __Pyx_INCREF(__pyx_v_fontParameters);
+    __Pyx_GIVEREF(__pyx_v_fontParameters);
+    PyTuple_SET_ITEM(__pyx_t_5, 1, __pyx_v_fontParameters);
+    __Pyx_INCREF(__pyx_v_AA);
+    __Pyx_GIVEREF(__pyx_v_AA);
+    PyTuple_SET_ITEM(__pyx_t_5, 2, __pyx_v_AA);
+    __Pyx_INCREF(__pyx_v_Colour);
+    __Pyx_GIVEREF(__pyx_v_Colour);
+    PyTuple_SET_ITEM(__pyx_t_5, 3, __pyx_v_Colour);
+    if (unlikely(PyObject_SetItem(__pyx_t_1, __pyx_t_5, __pyx_v_result) < 0)) __PYX_ERR(0, 24, __pyx_L1_error)
+    __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
+    __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
+
+025:     while len(_texts) > 1500:
+
  while (1) {
+    __pyx_t_5 = __Pyx_GetModuleGlobalName(__pyx_n_s_texts); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 25, __pyx_L1_error)
+    __Pyx_GOTREF(__pyx_t_5);
+    __pyx_t_8 = PyObject_Length(__pyx_t_5); if (unlikely(__pyx_t_8 == -1)) __PYX_ERR(0, 25, __pyx_L1_error)
+    __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
+    __pyx_t_6 = ((__pyx_t_8 > 0x5DC) != 0);
+    if (!__pyx_t_6) break;
+
+026:         _texts.pop(random.sample(_texts.keys(),1)[0])   #If cache is full evict old versions
+
    __pyx_t_1 = __Pyx_GetModuleGlobalName(__pyx_n_s_texts); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 26, __pyx_L1_error)
+    __Pyx_GOTREF(__pyx_t_1);
+    __pyx_t_3 = __Pyx_PyObject_GetAttrStr(__pyx_t_1, __pyx_n_s_pop); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 26, __pyx_L1_error)
+    __Pyx_GOTREF(__pyx_t_3);
+    __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
+    __pyx_t_2 = __Pyx_GetModuleGlobalName(__pyx_n_s_random); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 26, __pyx_L1_error)
+    __Pyx_GOTREF(__pyx_t_2);
+    __pyx_t_4 = __Pyx_PyObject_GetAttrStr(__pyx_t_2, __pyx_n_s_sample); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 26, __pyx_L1_error)
+    __Pyx_GOTREF(__pyx_t_4);
+    __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
+    __pyx_t_9 = __Pyx_GetModuleGlobalName(__pyx_n_s_texts); if (unlikely(!__pyx_t_9)) __PYX_ERR(0, 26, __pyx_L1_error)
+    __Pyx_GOTREF(__pyx_t_9);
+    __pyx_t_10 = __Pyx_PyObject_GetAttrStr(__pyx_t_9, __pyx_n_s_keys); if (unlikely(!__pyx_t_10)) __PYX_ERR(0, 26, __pyx_L1_error)
+    __Pyx_GOTREF(__pyx_t_10);
+    __Pyx_DECREF(__pyx_t_9); __pyx_t_9 = 0;
+    __pyx_t_9 = NULL;
+    if (CYTHON_UNPACK_METHODS && unlikely(PyMethod_Check(__pyx_t_10))) {
+      __pyx_t_9 = PyMethod_GET_SELF(__pyx_t_10);
+      if (likely(__pyx_t_9)) {
+        PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_10);
+        __Pyx_INCREF(__pyx_t_9);
+        __Pyx_INCREF(function);
+        __Pyx_DECREF_SET(__pyx_t_10, function);
+      }
+    }
+    if (__pyx_t_9) {
+      __pyx_t_2 = __Pyx_PyObject_CallOneArg(__pyx_t_10, __pyx_t_9); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 26, __pyx_L1_error)
+      __Pyx_DECREF(__pyx_t_9); __pyx_t_9 = 0;
+    } else {
+      __pyx_t_2 = __Pyx_PyObject_CallNoArg(__pyx_t_10); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 26, __pyx_L1_error)
+    }
+    __Pyx_GOTREF(__pyx_t_2);
+    __Pyx_DECREF(__pyx_t_10); __pyx_t_10 = 0;
+    __pyx_t_10 = NULL;
+    __pyx_t_7 = 0;
+    if (CYTHON_UNPACK_METHODS && unlikely(PyMethod_Check(__pyx_t_4))) {
+      __pyx_t_10 = PyMethod_GET_SELF(__pyx_t_4);
+      if (likely(__pyx_t_10)) {
+        PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_4);
+        __Pyx_INCREF(__pyx_t_10);
+        __Pyx_INCREF(function);
+        __Pyx_DECREF_SET(__pyx_t_4, function);
+        __pyx_t_7 = 1;
+      }
+    }
+    #if CYTHON_FAST_PYCALL
+    if (PyFunction_Check(__pyx_t_4)) {
+      PyObject *__pyx_temp[3] = {__pyx_t_10, __pyx_t_2, __pyx_int_1};
+      __pyx_t_1 = __Pyx_PyFunction_FastCall(__pyx_t_4, __pyx_temp+1-__pyx_t_7, 2+__pyx_t_7); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 26, __pyx_L1_error)
+      __Pyx_XDECREF(__pyx_t_10); __pyx_t_10 = 0;
+      __Pyx_GOTREF(__pyx_t_1);
+      __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
+    } else
+    #endif
+    #if CYTHON_FAST_PYCCALL
+    if (__Pyx_PyFastCFunction_Check(__pyx_t_4)) {
+      PyObject *__pyx_temp[3] = {__pyx_t_10, __pyx_t_2, __pyx_int_1};
+      __pyx_t_1 = __Pyx_PyCFunction_FastCall(__pyx_t_4, __pyx_temp+1-__pyx_t_7, 2+__pyx_t_7); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 26, __pyx_L1_error)
+      __Pyx_XDECREF(__pyx_t_10); __pyx_t_10 = 0;
+      __Pyx_GOTREF(__pyx_t_1);
+      __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
+    } else
+    #endif
+    {
+      __pyx_t_9 = PyTuple_New(2+__pyx_t_7); if (unlikely(!__pyx_t_9)) __PYX_ERR(0, 26, __pyx_L1_error)
+      __Pyx_GOTREF(__pyx_t_9);
+      if (__pyx_t_10) {
+        __Pyx_GIVEREF(__pyx_t_10); PyTuple_SET_ITEM(__pyx_t_9, 0, __pyx_t_10); __pyx_t_10 = NULL;
+      }
+      __Pyx_GIVEREF(__pyx_t_2);
+      PyTuple_SET_ITEM(__pyx_t_9, 0+__pyx_t_7, __pyx_t_2);
+      __Pyx_INCREF(__pyx_int_1);
+      __Pyx_GIVEREF(__pyx_int_1);
+      PyTuple_SET_ITEM(__pyx_t_9, 1+__pyx_t_7, __pyx_int_1);
+      __pyx_t_2 = 0;
+      __pyx_t_1 = __Pyx_PyObject_Call(__pyx_t_4, __pyx_t_9, NULL); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 26, __pyx_L1_error)
+      __Pyx_GOTREF(__pyx_t_1);
+      __Pyx_DECREF(__pyx_t_9); __pyx_t_9 = 0;
+    }
+    __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
+    __pyx_t_4 = __Pyx_GetItemInt(__pyx_t_1, 0, long, 1, __Pyx_PyInt_From_long, 0, 0, 0); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 26, __pyx_L1_error)
+    __Pyx_GOTREF(__pyx_t_4);
+    __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
+    __pyx_t_1 = NULL;
+    if (CYTHON_UNPACK_METHODS && unlikely(PyMethod_Check(__pyx_t_3))) {
+      __pyx_t_1 = PyMethod_GET_SELF(__pyx_t_3);
+      if (likely(__pyx_t_1)) {
+        PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_3);
+        __Pyx_INCREF(__pyx_t_1);
+        __Pyx_INCREF(function);
+        __Pyx_DECREF_SET(__pyx_t_3, function);
+      }
+    }
+    if (!__pyx_t_1) {
+      __pyx_t_5 = __Pyx_PyObject_CallOneArg(__pyx_t_3, __pyx_t_4); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 26, __pyx_L1_error)
+      __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
+      __Pyx_GOTREF(__pyx_t_5);
+    } else {
+      #if CYTHON_FAST_PYCALL
+      if (PyFunction_Check(__pyx_t_3)) {
+        PyObject *__pyx_temp[2] = {__pyx_t_1, __pyx_t_4};
+        __pyx_t_5 = __Pyx_PyFunction_FastCall(__pyx_t_3, __pyx_temp+1-1, 1+1); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 26, __pyx_L1_error)
+        __Pyx_XDECREF(__pyx_t_1); __pyx_t_1 = 0;
+        __Pyx_GOTREF(__pyx_t_5);
+        __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
+      } else
+      #endif
+      #if CYTHON_FAST_PYCCALL
+      if (__Pyx_PyFastCFunction_Check(__pyx_t_3)) {
+        PyObject *__pyx_temp[2] = {__pyx_t_1, __pyx_t_4};
+        __pyx_t_5 = __Pyx_PyCFunction_FastCall(__pyx_t_3, __pyx_temp+1-1, 1+1); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 26, __pyx_L1_error)
+        __Pyx_XDECREF(__pyx_t_1); __pyx_t_1 = 0;
+        __Pyx_GOTREF(__pyx_t_5);
+        __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
+      } else
+      #endif
+      {
+        __pyx_t_9 = PyTuple_New(1+1); if (unlikely(!__pyx_t_9)) __PYX_ERR(0, 26, __pyx_L1_error)
+        __Pyx_GOTREF(__pyx_t_9);
+        __Pyx_GIVEREF(__pyx_t_1); PyTuple_SET_ITEM(__pyx_t_9, 0, __pyx_t_1); __pyx_t_1 = NULL;
+        __Pyx_GIVEREF(__pyx_t_4);
+        PyTuple_SET_ITEM(__pyx_t_9, 0+1, __pyx_t_4);
+        __pyx_t_4 = 0;
+        __pyx_t_5 = __Pyx_PyObject_Call(__pyx_t_3, __pyx_t_9, NULL); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 26, __pyx_L1_error)
+        __Pyx_GOTREF(__pyx_t_5);
+        __Pyx_DECREF(__pyx_t_9); __pyx_t_9 = 0;
+      }
+    }
+    __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
+    __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
+  }
+
+027:     return result
+
  __Pyx_XDECREF(__pyx_r);
+  __Pyx_INCREF(__pyx_v_result);
+  __pyx_r = __pyx_v_result;
+  goto __pyx_L0;
+
 028: 
+
 029: 
+
+030: _fonts = {}
+
  __pyx_t_1 = PyDict_New(); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 30, __pyx_L1_error)
+  __Pyx_GOTREF(__pyx_t_1);
+  if (PyDict_SetItem(__pyx_d, __pyx_n_s_fonts, __pyx_t_1) < 0) __PYX_ERR(0, 30, __pyx_L1_error)
+  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
+
+031: def GetFont(Font,Size):
+
/* Python wrapper */
+static PyObject *__pyx_pw_6CAStar_19AATC_Monitor_Viewer_5GetFont(PyObject *__pyx_self, PyObject *__pyx_args, PyObject *__pyx_kwds); /*proto*/
+static PyMethodDef __pyx_mdef_6CAStar_19AATC_Monitor_Viewer_5GetFont = {"GetFont", (PyCFunction)__pyx_pw_6CAStar_19AATC_Monitor_Viewer_5GetFont, METH_VARARGS|METH_KEYWORDS, 0};
+static PyObject *__pyx_pw_6CAStar_19AATC_Monitor_Viewer_5GetFont(PyObject *__pyx_self, PyObject *__pyx_args, PyObject *__pyx_kwds) {
+  PyObject *__pyx_v_Font = 0;
+  PyObject *__pyx_v_Size = 0;
+  PyObject *__pyx_r = 0;
+  __Pyx_RefNannyDeclarations
+  __Pyx_RefNannySetupContext("GetFont (wrapper)", 0);
+  {
+    static PyObject **__pyx_pyargnames[] = {&__pyx_n_s_Font,&__pyx_n_s_Size,0};
+    PyObject* values[2] = {0,0};
+    if (unlikely(__pyx_kwds)) {
+      Py_ssize_t kw_args;
+      const Py_ssize_t pos_args = PyTuple_GET_SIZE(__pyx_args);
+      switch (pos_args) {
+        case  2: values[1] = PyTuple_GET_ITEM(__pyx_args, 1);
+        CYTHON_FALLTHROUGH;
+        case  1: values[0] = PyTuple_GET_ITEM(__pyx_args, 0);
+        CYTHON_FALLTHROUGH;
+        case  0: break;
+        default: goto __pyx_L5_argtuple_error;
+      }
+      kw_args = PyDict_Size(__pyx_kwds);
+      switch (pos_args) {
+        case  0:
+        if (likely((values[0] = PyDict_GetItem(__pyx_kwds, __pyx_n_s_Font)) != 0)) kw_args--;
+        else goto __pyx_L5_argtuple_error;
+        CYTHON_FALLTHROUGH;
+        case  1:
+        if (likely((values[1] = PyDict_GetItem(__pyx_kwds, __pyx_n_s_Size)) != 0)) kw_args--;
+        else {
+          __Pyx_RaiseArgtupleInvalid("GetFont", 1, 2, 2, 1); __PYX_ERR(0, 31, __pyx_L3_error)
+        }
+      }
+      if (unlikely(kw_args > 0)) {
+        if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_pyargnames, 0, values, pos_args, "GetFont") < 0)) __PYX_ERR(0, 31, __pyx_L3_error)
+      }
+    } else if (PyTuple_GET_SIZE(__pyx_args) != 2) {
+      goto __pyx_L5_argtuple_error;
+    } else {
+      values[0] = PyTuple_GET_ITEM(__pyx_args, 0);
+      values[1] = PyTuple_GET_ITEM(__pyx_args, 1);
+    }
+    __pyx_v_Font = values[0];
+    __pyx_v_Size = values[1];
+  }
+  goto __pyx_L4_argument_unpacking_done;
+  __pyx_L5_argtuple_error:;
+  __Pyx_RaiseArgtupleInvalid("GetFont", 1, 2, 2, PyTuple_GET_SIZE(__pyx_args)); __PYX_ERR(0, 31, __pyx_L3_error)
+  __pyx_L3_error:;
+  __Pyx_AddTraceback("CAStar.AATC_Monitor_Viewer.GetFont", __pyx_clineno, __pyx_lineno, __pyx_filename);
+  __Pyx_RefNannyFinishContext();
+  return NULL;
+  __pyx_L4_argument_unpacking_done:;
+  __pyx_r = __pyx_pf_6CAStar_19AATC_Monitor_Viewer_4GetFont(__pyx_self, __pyx_v_Font, __pyx_v_Size);
+
+  /* function exit code */
+  __Pyx_RefNannyFinishContext();
+  return __pyx_r;
+}
+
+static PyObject *__pyx_pf_6CAStar_19AATC_Monitor_Viewer_4GetFont(CYTHON_UNUSED PyObject *__pyx_self, PyObject *__pyx_v_Font, PyObject *__pyx_v_Size) {
+  PyObject *__pyx_v_result = NULL;
+  PyObject *__pyx_r = NULL;
+  __Pyx_RefNannyDeclarations
+  __Pyx_RefNannySetupContext("GetFont", 0);
+/* … */
+  /* function exit code */
+  __pyx_L1_error:;
+  __Pyx_XDECREF(__pyx_t_1);
+  __Pyx_XDECREF(__pyx_t_2);
+  __Pyx_XDECREF(__pyx_t_3);
+  __Pyx_XDECREF(__pyx_t_4);
+  __Pyx_XDECREF(__pyx_t_5);
+  __Pyx_XDECREF(__pyx_t_9);
+  __Pyx_XDECREF(__pyx_t_10);
+  __Pyx_AddTraceback("CAStar.AATC_Monitor_Viewer.GetFont", __pyx_clineno, __pyx_lineno, __pyx_filename);
+  __pyx_r = NULL;
+  __pyx_L0:;
+  __Pyx_XDECREF(__pyx_v_result);
+  __Pyx_XGIVEREF(__pyx_r);
+  __Pyx_RefNannyFinishContext();
+  return __pyx_r;
+}
+/* … */
+  __pyx_tuple__31 = PyTuple_Pack(3, __pyx_n_s_Font, __pyx_n_s_Size, __pyx_n_s_result); if (unlikely(!__pyx_tuple__31)) __PYX_ERR(0, 31, __pyx_L1_error)
+  __Pyx_GOTREF(__pyx_tuple__31);
+  __Pyx_GIVEREF(__pyx_tuple__31);
+/* … */
+  __pyx_t_1 = PyCFunction_NewEx(&__pyx_mdef_6CAStar_19AATC_Monitor_Viewer_5GetFont, NULL, __pyx_n_s_CAStar_AATC_Monitor_Viewer); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 31, __pyx_L1_error)
+  __Pyx_GOTREF(__pyx_t_1);
+  if (PyDict_SetItem(__pyx_d, __pyx_n_s_GetFont, __pyx_t_1) < 0) __PYX_ERR(0, 31, __pyx_L1_error)
+  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
+  __pyx_codeobj__32 = (PyObject*)__Pyx_PyCode_New(2, 0, 3, 0, 0, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__31, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_AATC_Monitor_Viewer_pyx, __pyx_n_s_GetFont, 31, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__32)) __PYX_ERR(0, 31, __pyx_L1_error)
+
+032:     result = _fonts.get((Font,Size))
+
  __pyx_t_2 = __Pyx_GetModuleGlobalName(__pyx_n_s_fonts); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 32, __pyx_L1_error)
+  __Pyx_GOTREF(__pyx_t_2);
+  __pyx_t_3 = __Pyx_PyObject_GetAttrStr(__pyx_t_2, __pyx_n_s_get); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 32, __pyx_L1_error)
+  __Pyx_GOTREF(__pyx_t_3);
+  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
+  __pyx_t_2 = PyTuple_New(2); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 32, __pyx_L1_error)
+  __Pyx_GOTREF(__pyx_t_2);
+  __Pyx_INCREF(__pyx_v_Font);
+  __Pyx_GIVEREF(__pyx_v_Font);
+  PyTuple_SET_ITEM(__pyx_t_2, 0, __pyx_v_Font);
+  __Pyx_INCREF(__pyx_v_Size);
+  __Pyx_GIVEREF(__pyx_v_Size);
+  PyTuple_SET_ITEM(__pyx_t_2, 1, __pyx_v_Size);
+  __pyx_t_4 = NULL;
+  if (CYTHON_UNPACK_METHODS && unlikely(PyMethod_Check(__pyx_t_3))) {
+    __pyx_t_4 = PyMethod_GET_SELF(__pyx_t_3);
+    if (likely(__pyx_t_4)) {
+      PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_3);
+      __Pyx_INCREF(__pyx_t_4);
+      __Pyx_INCREF(function);
+      __Pyx_DECREF_SET(__pyx_t_3, function);
+    }
+  }
+  if (!__pyx_t_4) {
+    __pyx_t_1 = __Pyx_PyObject_CallOneArg(__pyx_t_3, __pyx_t_2); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 32, __pyx_L1_error)
+    __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
+    __Pyx_GOTREF(__pyx_t_1);
+  } else {
+    #if CYTHON_FAST_PYCALL
+    if (PyFunction_Check(__pyx_t_3)) {
+      PyObject *__pyx_temp[2] = {__pyx_t_4, __pyx_t_2};
+      __pyx_t_1 = __Pyx_PyFunction_FastCall(__pyx_t_3, __pyx_temp+1-1, 1+1); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 32, __pyx_L1_error)
+      __Pyx_XDECREF(__pyx_t_4); __pyx_t_4 = 0;
+      __Pyx_GOTREF(__pyx_t_1);
+      __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
+    } else
+    #endif
+    #if CYTHON_FAST_PYCCALL
+    if (__Pyx_PyFastCFunction_Check(__pyx_t_3)) {
+      PyObject *__pyx_temp[2] = {__pyx_t_4, __pyx_t_2};
+      __pyx_t_1 = __Pyx_PyCFunction_FastCall(__pyx_t_3, __pyx_temp+1-1, 1+1); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 32, __pyx_L1_error)
+      __Pyx_XDECREF(__pyx_t_4); __pyx_t_4 = 0;
+      __Pyx_GOTREF(__pyx_t_1);
+      __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
+    } else
+    #endif
+    {
+      __pyx_t_5 = PyTuple_New(1+1); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 32, __pyx_L1_error)
+      __Pyx_GOTREF(__pyx_t_5);
+      __Pyx_GIVEREF(__pyx_t_4); PyTuple_SET_ITEM(__pyx_t_5, 0, __pyx_t_4); __pyx_t_4 = NULL;
+      __Pyx_GIVEREF(__pyx_t_2);
+      PyTuple_SET_ITEM(__pyx_t_5, 0+1, __pyx_t_2);
+      __pyx_t_2 = 0;
+      __pyx_t_1 = __Pyx_PyObject_Call(__pyx_t_3, __pyx_t_5, NULL); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 32, __pyx_L1_error)
+      __Pyx_GOTREF(__pyx_t_1);
+      __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
+    }
+  }
+  __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
+  __pyx_v_result = __pyx_t_1;
+  __pyx_t_1 = 0;
+
+033:     if result == None:
+
  __pyx_t_1 = PyObject_RichCompare(__pyx_v_result, Py_None, Py_EQ); __Pyx_XGOTREF(__pyx_t_1); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 33, __pyx_L1_error)
+  __pyx_t_6 = __Pyx_PyObject_IsTrue(__pyx_t_1); if (unlikely(__pyx_t_6 < 0)) __PYX_ERR(0, 33, __pyx_L1_error)
+  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
+  if (__pyx_t_6) {
+/* … */
+  }
+
+034:         result = pygame.font.Font(Font,Size)
+
    __pyx_t_3 = __Pyx_GetModuleGlobalName(__pyx_n_s_pygame); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 34, __pyx_L1_error)
+    __Pyx_GOTREF(__pyx_t_3);
+    __pyx_t_5 = __Pyx_PyObject_GetAttrStr(__pyx_t_3, __pyx_n_s_font); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 34, __pyx_L1_error)
+    __Pyx_GOTREF(__pyx_t_5);
+    __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
+    __pyx_t_3 = __Pyx_PyObject_GetAttrStr(__pyx_t_5, __pyx_n_s_Font); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 34, __pyx_L1_error)
+    __Pyx_GOTREF(__pyx_t_3);
+    __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
+    __pyx_t_5 = NULL;
+    __pyx_t_7 = 0;
+    if (CYTHON_UNPACK_METHODS && likely(PyMethod_Check(__pyx_t_3))) {
+      __pyx_t_5 = PyMethod_GET_SELF(__pyx_t_3);
+      if (likely(__pyx_t_5)) {
+        PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_3);
+        __Pyx_INCREF(__pyx_t_5);
+        __Pyx_INCREF(function);
+        __Pyx_DECREF_SET(__pyx_t_3, function);
+        __pyx_t_7 = 1;
+      }
+    }
+    #if CYTHON_FAST_PYCALL
+    if (PyFunction_Check(__pyx_t_3)) {
+      PyObject *__pyx_temp[3] = {__pyx_t_5, __pyx_v_Font, __pyx_v_Size};
+      __pyx_t_1 = __Pyx_PyFunction_FastCall(__pyx_t_3, __pyx_temp+1-__pyx_t_7, 2+__pyx_t_7); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 34, __pyx_L1_error)
+      __Pyx_XDECREF(__pyx_t_5); __pyx_t_5 = 0;
+      __Pyx_GOTREF(__pyx_t_1);
+    } else
+    #endif
+    #if CYTHON_FAST_PYCCALL
+    if (__Pyx_PyFastCFunction_Check(__pyx_t_3)) {
+      PyObject *__pyx_temp[3] = {__pyx_t_5, __pyx_v_Font, __pyx_v_Size};
+      __pyx_t_1 = __Pyx_PyCFunction_FastCall(__pyx_t_3, __pyx_temp+1-__pyx_t_7, 2+__pyx_t_7); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 34, __pyx_L1_error)
+      __Pyx_XDECREF(__pyx_t_5); __pyx_t_5 = 0;
+      __Pyx_GOTREF(__pyx_t_1);
+    } else
+    #endif
+    {
+      __pyx_t_2 = PyTuple_New(2+__pyx_t_7); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 34, __pyx_L1_error)
+      __Pyx_GOTREF(__pyx_t_2);
+      if (__pyx_t_5) {
+        __Pyx_GIVEREF(__pyx_t_5); PyTuple_SET_ITEM(__pyx_t_2, 0, __pyx_t_5); __pyx_t_5 = NULL;
+      }
+      __Pyx_INCREF(__pyx_v_Font);
+      __Pyx_GIVEREF(__pyx_v_Font);
+      PyTuple_SET_ITEM(__pyx_t_2, 0+__pyx_t_7, __pyx_v_Font);
+      __Pyx_INCREF(__pyx_v_Size);
+      __Pyx_GIVEREF(__pyx_v_Size);
+      PyTuple_SET_ITEM(__pyx_t_2, 1+__pyx_t_7, __pyx_v_Size);
+      __pyx_t_1 = __Pyx_PyObject_Call(__pyx_t_3, __pyx_t_2, NULL); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 34, __pyx_L1_error)
+      __Pyx_GOTREF(__pyx_t_1);
+      __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
+    }
+    __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
+    __Pyx_DECREF_SET(__pyx_v_result, __pyx_t_1);
+    __pyx_t_1 = 0;
+
+035:         _fonts[(Font,Size)]=result
+
    __pyx_t_1 = __Pyx_GetModuleGlobalName(__pyx_n_s_fonts); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 35, __pyx_L1_error)
+    __Pyx_GOTREF(__pyx_t_1);
+    __pyx_t_3 = PyTuple_New(2); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 35, __pyx_L1_error)
+    __Pyx_GOTREF(__pyx_t_3);
+    __Pyx_INCREF(__pyx_v_Font);
+    __Pyx_GIVEREF(__pyx_v_Font);
+    PyTuple_SET_ITEM(__pyx_t_3, 0, __pyx_v_Font);
+    __Pyx_INCREF(__pyx_v_Size);
+    __Pyx_GIVEREF(__pyx_v_Size);
+    PyTuple_SET_ITEM(__pyx_t_3, 1, __pyx_v_Size);
+    if (unlikely(PyObject_SetItem(__pyx_t_1, __pyx_t_3, __pyx_v_result) < 0)) __PYX_ERR(0, 35, __pyx_L1_error)
+    __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
+    __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
+
+036:     while len(_fonts) > 1500:
+
  while (1) {
+    __pyx_t_3 = __Pyx_GetModuleGlobalName(__pyx_n_s_fonts); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 36, __pyx_L1_error)
+    __Pyx_GOTREF(__pyx_t_3);
+    __pyx_t_8 = PyObject_Length(__pyx_t_3); if (unlikely(__pyx_t_8 == -1)) __PYX_ERR(0, 36, __pyx_L1_error)
+    __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
+    __pyx_t_6 = ((__pyx_t_8 > 0x5DC) != 0);
+    if (!__pyx_t_6) break;
+
+037:         _fonts.pop(random.sample(_fonts.keys(),1)[0])   #If cache is full evict old versions
+
    __pyx_t_1 = __Pyx_GetModuleGlobalName(__pyx_n_s_fonts); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 37, __pyx_L1_error)
+    __Pyx_GOTREF(__pyx_t_1);
+    __pyx_t_2 = __Pyx_PyObject_GetAttrStr(__pyx_t_1, __pyx_n_s_pop); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 37, __pyx_L1_error)
+    __Pyx_GOTREF(__pyx_t_2);
+    __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
+    __pyx_t_5 = __Pyx_GetModuleGlobalName(__pyx_n_s_random); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 37, __pyx_L1_error)
+    __Pyx_GOTREF(__pyx_t_5);
+    __pyx_t_4 = __Pyx_PyObject_GetAttrStr(__pyx_t_5, __pyx_n_s_sample); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 37, __pyx_L1_error)
+    __Pyx_GOTREF(__pyx_t_4);
+    __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
+    __pyx_t_9 = __Pyx_GetModuleGlobalName(__pyx_n_s_fonts); if (unlikely(!__pyx_t_9)) __PYX_ERR(0, 37, __pyx_L1_error)
+    __Pyx_GOTREF(__pyx_t_9);
+    __pyx_t_10 = __Pyx_PyObject_GetAttrStr(__pyx_t_9, __pyx_n_s_keys); if (unlikely(!__pyx_t_10)) __PYX_ERR(0, 37, __pyx_L1_error)
+    __Pyx_GOTREF(__pyx_t_10);
+    __Pyx_DECREF(__pyx_t_9); __pyx_t_9 = 0;
+    __pyx_t_9 = NULL;
+    if (CYTHON_UNPACK_METHODS && unlikely(PyMethod_Check(__pyx_t_10))) {
+      __pyx_t_9 = PyMethod_GET_SELF(__pyx_t_10);
+      if (likely(__pyx_t_9)) {
+        PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_10);
+        __Pyx_INCREF(__pyx_t_9);
+        __Pyx_INCREF(function);
+        __Pyx_DECREF_SET(__pyx_t_10, function);
+      }
+    }
+    if (__pyx_t_9) {
+      __pyx_t_5 = __Pyx_PyObject_CallOneArg(__pyx_t_10, __pyx_t_9); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 37, __pyx_L1_error)
+      __Pyx_DECREF(__pyx_t_9); __pyx_t_9 = 0;
+    } else {
+      __pyx_t_5 = __Pyx_PyObject_CallNoArg(__pyx_t_10); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 37, __pyx_L1_error)
+    }
+    __Pyx_GOTREF(__pyx_t_5);
+    __Pyx_DECREF(__pyx_t_10); __pyx_t_10 = 0;
+    __pyx_t_10 = NULL;
+    __pyx_t_7 = 0;
+    if (CYTHON_UNPACK_METHODS && unlikely(PyMethod_Check(__pyx_t_4))) {
+      __pyx_t_10 = PyMethod_GET_SELF(__pyx_t_4);
+      if (likely(__pyx_t_10)) {
+        PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_4);
+        __Pyx_INCREF(__pyx_t_10);
+        __Pyx_INCREF(function);
+        __Pyx_DECREF_SET(__pyx_t_4, function);
+        __pyx_t_7 = 1;
+      }
+    }
+    #if CYTHON_FAST_PYCALL
+    if (PyFunction_Check(__pyx_t_4)) {
+      PyObject *__pyx_temp[3] = {__pyx_t_10, __pyx_t_5, __pyx_int_1};
+      __pyx_t_1 = __Pyx_PyFunction_FastCall(__pyx_t_4, __pyx_temp+1-__pyx_t_7, 2+__pyx_t_7); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 37, __pyx_L1_error)
+      __Pyx_XDECREF(__pyx_t_10); __pyx_t_10 = 0;
+      __Pyx_GOTREF(__pyx_t_1);
+      __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
+    } else
+    #endif
+    #if CYTHON_FAST_PYCCALL
+    if (__Pyx_PyFastCFunction_Check(__pyx_t_4)) {
+      PyObject *__pyx_temp[3] = {__pyx_t_10, __pyx_t_5, __pyx_int_1};
+      __pyx_t_1 = __Pyx_PyCFunction_FastCall(__pyx_t_4, __pyx_temp+1-__pyx_t_7, 2+__pyx_t_7); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 37, __pyx_L1_error)
+      __Pyx_XDECREF(__pyx_t_10); __pyx_t_10 = 0;
+      __Pyx_GOTREF(__pyx_t_1);
+      __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
+    } else
+    #endif
+    {
+      __pyx_t_9 = PyTuple_New(2+__pyx_t_7); if (unlikely(!__pyx_t_9)) __PYX_ERR(0, 37, __pyx_L1_error)
+      __Pyx_GOTREF(__pyx_t_9);
+      if (__pyx_t_10) {
+        __Pyx_GIVEREF(__pyx_t_10); PyTuple_SET_ITEM(__pyx_t_9, 0, __pyx_t_10); __pyx_t_10 = NULL;
+      }
+      __Pyx_GIVEREF(__pyx_t_5);
+      PyTuple_SET_ITEM(__pyx_t_9, 0+__pyx_t_7, __pyx_t_5);
+      __Pyx_INCREF(__pyx_int_1);
+      __Pyx_GIVEREF(__pyx_int_1);
+      PyTuple_SET_ITEM(__pyx_t_9, 1+__pyx_t_7, __pyx_int_1);
+      __pyx_t_5 = 0;
+      __pyx_t_1 = __Pyx_PyObject_Call(__pyx_t_4, __pyx_t_9, NULL); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 37, __pyx_L1_error)
+      __Pyx_GOTREF(__pyx_t_1);
+      __Pyx_DECREF(__pyx_t_9); __pyx_t_9 = 0;
+    }
+    __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
+    __pyx_t_4 = __Pyx_GetItemInt(__pyx_t_1, 0, long, 1, __Pyx_PyInt_From_long, 0, 0, 0); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 37, __pyx_L1_error)
+    __Pyx_GOTREF(__pyx_t_4);
+    __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
+    __pyx_t_1 = NULL;
+    if (CYTHON_UNPACK_METHODS && unlikely(PyMethod_Check(__pyx_t_2))) {
+      __pyx_t_1 = PyMethod_GET_SELF(__pyx_t_2);
+      if (likely(__pyx_t_1)) {
+        PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_2);
+        __Pyx_INCREF(__pyx_t_1);
+        __Pyx_INCREF(function);
+        __Pyx_DECREF_SET(__pyx_t_2, function);
+      }
+    }
+    if (!__pyx_t_1) {
+      __pyx_t_3 = __Pyx_PyObject_CallOneArg(__pyx_t_2, __pyx_t_4); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 37, __pyx_L1_error)
+      __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
+      __Pyx_GOTREF(__pyx_t_3);
+    } else {
+      #if CYTHON_FAST_PYCALL
+      if (PyFunction_Check(__pyx_t_2)) {
+        PyObject *__pyx_temp[2] = {__pyx_t_1, __pyx_t_4};
+        __pyx_t_3 = __Pyx_PyFunction_FastCall(__pyx_t_2, __pyx_temp+1-1, 1+1); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 37, __pyx_L1_error)
+        __Pyx_XDECREF(__pyx_t_1); __pyx_t_1 = 0;
+        __Pyx_GOTREF(__pyx_t_3);
+        __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
+      } else
+      #endif
+      #if CYTHON_FAST_PYCCALL
+      if (__Pyx_PyFastCFunction_Check(__pyx_t_2)) {
+        PyObject *__pyx_temp[2] = {__pyx_t_1, __pyx_t_4};
+        __pyx_t_3 = __Pyx_PyCFunction_FastCall(__pyx_t_2, __pyx_temp+1-1, 1+1); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 37, __pyx_L1_error)
+        __Pyx_XDECREF(__pyx_t_1); __pyx_t_1 = 0;
+        __Pyx_GOTREF(__pyx_t_3);
+        __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
+      } else
+      #endif
+      {
+        __pyx_t_9 = PyTuple_New(1+1); if (unlikely(!__pyx_t_9)) __PYX_ERR(0, 37, __pyx_L1_error)
+        __Pyx_GOTREF(__pyx_t_9);
+        __Pyx_GIVEREF(__pyx_t_1); PyTuple_SET_ITEM(__pyx_t_9, 0, __pyx_t_1); __pyx_t_1 = NULL;
+        __Pyx_GIVEREF(__pyx_t_4);
+        PyTuple_SET_ITEM(__pyx_t_9, 0+1, __pyx_t_4);
+        __pyx_t_4 = 0;
+        __pyx_t_3 = __Pyx_PyObject_Call(__pyx_t_2, __pyx_t_9, NULL); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 37, __pyx_L1_error)
+        __Pyx_GOTREF(__pyx_t_3);
+        __Pyx_DECREF(__pyx_t_9); __pyx_t_9 = 0;
+      }
+    }
+    __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
+    __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
+  }
+
+038:     return result
+
  __Pyx_XDECREF(__pyx_r);
+  __Pyx_INCREF(__pyx_v_result);
+  __pyx_r = __pyx_v_result;
+  goto __pyx_L0;
+
 039: 
+
 040: 
+
+041: cdef int MaxLimit( int value, int Max):
+
static int __pyx_f_6CAStar_19AATC_Monitor_Viewer_MaxLimit(int __pyx_v_value, int __pyx_v_Max) {
+  int __pyx_r;
+  __Pyx_RefNannyDeclarations
+  __Pyx_RefNannySetupContext("MaxLimit", 0);
+/* … */
+  /* function exit code */
+  __pyx_L0:;
+  __Pyx_RefNannyFinishContext();
+  return __pyx_r;
+}
+
+042:     if value > Max:
+
  __pyx_t_1 = ((__pyx_v_value > __pyx_v_Max) != 0);
+  if (__pyx_t_1) {
+/* … */
+  }
+
+043:         value = Max
+
    __pyx_v_value = __pyx_v_Max;
+
+044:     return value
+
  __pyx_r = __pyx_v_value;
+  goto __pyx_L0;
+
 045: 
+
 046: 
+
 047: 
+
+048: class Camera:
+
  __pyx_t_1 = __Pyx_Py3MetaclassPrepare((PyObject *) NULL, __pyx_empty_tuple, __pyx_n_s_Camera, __pyx_n_s_Camera, (PyObject *) NULL, __pyx_n_s_CAStar_AATC_Monitor_Viewer, (PyObject *) NULL); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 48, __pyx_L1_error)
+  __Pyx_GOTREF(__pyx_t_1);
+/* … */
+  __pyx_t_3 = __Pyx_Py3ClassCreate(((PyObject*)&__Pyx_DefaultClassType), __pyx_n_s_Camera, __pyx_empty_tuple, __pyx_t_1, NULL, 0, 1); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 48, __pyx_L1_error)
+  __Pyx_GOTREF(__pyx_t_3);
+  if (PyDict_SetItem(__pyx_d, __pyx_n_s_Camera, __pyx_t_3) < 0) __PYX_ERR(0, 48, __pyx_L1_error)
+  __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
+  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
+
+049:     def __init__(self,xpixel,ypixel,MinCoords,MaxCoords):  #COORDS (X,Y,Z)
+
/* Python wrapper */
+static PyObject *__pyx_pw_6CAStar_19AATC_Monitor_Viewer_6Camera_1__init__(PyObject *__pyx_self, PyObject *__pyx_args, PyObject *__pyx_kwds); /*proto*/
+static PyMethodDef __pyx_mdef_6CAStar_19AATC_Monitor_Viewer_6Camera_1__init__ = {"__init__", (PyCFunction)__pyx_pw_6CAStar_19AATC_Monitor_Viewer_6Camera_1__init__, METH_VARARGS|METH_KEYWORDS, 0};
+static PyObject *__pyx_pw_6CAStar_19AATC_Monitor_Viewer_6Camera_1__init__(PyObject *__pyx_self, PyObject *__pyx_args, PyObject *__pyx_kwds) {
+  PyObject *__pyx_v_self = 0;
+  PyObject *__pyx_v_xpixel = 0;
+  PyObject *__pyx_v_ypixel = 0;
+  PyObject *__pyx_v_MinCoords = 0;
+  PyObject *__pyx_v_MaxCoords = 0;
+  PyObject *__pyx_r = 0;
+  __Pyx_RefNannyDeclarations
+  __Pyx_RefNannySetupContext("__init__ (wrapper)", 0);
+  {
+    static PyObject **__pyx_pyargnames[] = {&__pyx_n_s_self,&__pyx_n_s_xpixel,&__pyx_n_s_ypixel,&__pyx_n_s_MinCoords,&__pyx_n_s_MaxCoords,0};
+    PyObject* values[5] = {0,0,0,0,0};
+    if (unlikely(__pyx_kwds)) {
+      Py_ssize_t kw_args;
+      const Py_ssize_t pos_args = PyTuple_GET_SIZE(__pyx_args);
+      switch (pos_args) {
+        case  5: values[4] = PyTuple_GET_ITEM(__pyx_args, 4);
+        CYTHON_FALLTHROUGH;
+        case  4: values[3] = PyTuple_GET_ITEM(__pyx_args, 3);
+        CYTHON_FALLTHROUGH;
+        case  3: values[2] = PyTuple_GET_ITEM(__pyx_args, 2);
+        CYTHON_FALLTHROUGH;
+        case  2: values[1] = PyTuple_GET_ITEM(__pyx_args, 1);
+        CYTHON_FALLTHROUGH;
+        case  1: values[0] = PyTuple_GET_ITEM(__pyx_args, 0);
+        CYTHON_FALLTHROUGH;
+        case  0: break;
+        default: goto __pyx_L5_argtuple_error;
+      }
+      kw_args = PyDict_Size(__pyx_kwds);
+      switch (pos_args) {
+        case  0:
+        if (likely((values[0] = PyDict_GetItem(__pyx_kwds, __pyx_n_s_self)) != 0)) kw_args--;
+        else goto __pyx_L5_argtuple_error;
+        CYTHON_FALLTHROUGH;
+        case  1:
+        if (likely((values[1] = PyDict_GetItem(__pyx_kwds, __pyx_n_s_xpixel)) != 0)) kw_args--;
+        else {
+          __Pyx_RaiseArgtupleInvalid("__init__", 1, 5, 5, 1); __PYX_ERR(0, 49, __pyx_L3_error)
+        }
+        CYTHON_FALLTHROUGH;
+        case  2:
+        if (likely((values[2] = PyDict_GetItem(__pyx_kwds, __pyx_n_s_ypixel)) != 0)) kw_args--;
+        else {
+          __Pyx_RaiseArgtupleInvalid("__init__", 1, 5, 5, 2); __PYX_ERR(0, 49, __pyx_L3_error)
+        }
+        CYTHON_FALLTHROUGH;
+        case  3:
+        if (likely((values[3] = PyDict_GetItem(__pyx_kwds, __pyx_n_s_MinCoords)) != 0)) kw_args--;
+        else {
+          __Pyx_RaiseArgtupleInvalid("__init__", 1, 5, 5, 3); __PYX_ERR(0, 49, __pyx_L3_error)
+        }
+        CYTHON_FALLTHROUGH;
+        case  4:
+        if (likely((values[4] = PyDict_GetItem(__pyx_kwds, __pyx_n_s_MaxCoords)) != 0)) kw_args--;
+        else {
+          __Pyx_RaiseArgtupleInvalid("__init__", 1, 5, 5, 4); __PYX_ERR(0, 49, __pyx_L3_error)
+        }
+      }
+      if (unlikely(kw_args > 0)) {
+        if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_pyargnames, 0, values, pos_args, "__init__") < 0)) __PYX_ERR(0, 49, __pyx_L3_error)
+      }
+    } else if (PyTuple_GET_SIZE(__pyx_args) != 5) {
+      goto __pyx_L5_argtuple_error;
+    } else {
+      values[0] = PyTuple_GET_ITEM(__pyx_args, 0);
+      values[1] = PyTuple_GET_ITEM(__pyx_args, 1);
+      values[2] = PyTuple_GET_ITEM(__pyx_args, 2);
+      values[3] = PyTuple_GET_ITEM(__pyx_args, 3);
+      values[4] = PyTuple_GET_ITEM(__pyx_args, 4);
+    }
+    __pyx_v_self = values[0];
+    __pyx_v_xpixel = values[1];
+    __pyx_v_ypixel = values[2];
+    __pyx_v_MinCoords = values[3];
+    __pyx_v_MaxCoords = values[4];
+  }
+  goto __pyx_L4_argument_unpacking_done;
+  __pyx_L5_argtuple_error:;
+  __Pyx_RaiseArgtupleInvalid("__init__", 1, 5, 5, PyTuple_GET_SIZE(__pyx_args)); __PYX_ERR(0, 49, __pyx_L3_error)
+  __pyx_L3_error:;
+  __Pyx_AddTraceback("CAStar.AATC_Monitor_Viewer.Camera.__init__", __pyx_clineno, __pyx_lineno, __pyx_filename);
+  __Pyx_RefNannyFinishContext();
+  return NULL;
+  __pyx_L4_argument_unpacking_done:;
+  __pyx_r = __pyx_pf_6CAStar_19AATC_Monitor_Viewer_6Camera___init__(__pyx_self, __pyx_v_self, __pyx_v_xpixel, __pyx_v_ypixel, __pyx_v_MinCoords, __pyx_v_MaxCoords);
+
+  /* function exit code */
+  __Pyx_RefNannyFinishContext();
+  return __pyx_r;
+}
+
+static PyObject *__pyx_pf_6CAStar_19AATC_Monitor_Viewer_6Camera___init__(CYTHON_UNUSED PyObject *__pyx_self, PyObject *__pyx_v_self, PyObject *__pyx_v_xpixel, PyObject *__pyx_v_ypixel, PyObject *__pyx_v_MinCoords, PyObject *__pyx_v_MaxCoords) {
+  PyObject *__pyx_r = NULL;
+  __Pyx_RefNannyDeclarations
+  __Pyx_RefNannySetupContext("__init__", 0);
+/* … */
+  /* function exit code */
+  __pyx_r = Py_None; __Pyx_INCREF(Py_None);
+  goto __pyx_L0;
+  __pyx_L1_error:;
+  __Pyx_XDECREF(__pyx_t_1);
+  __Pyx_XDECREF(__pyx_t_2);
+  __Pyx_XDECREF(__pyx_t_3);
+  __Pyx_XDECREF(__pyx_t_4);
+  __Pyx_XDECREF(__pyx_t_5);
+  __Pyx_XDECREF(__pyx_t_6);
+  __Pyx_AddTraceback("CAStar.AATC_Monitor_Viewer.Camera.__init__", __pyx_clineno, __pyx_lineno, __pyx_filename);
+  __pyx_r = NULL;
+  __pyx_L0:;
+  __Pyx_XGIVEREF(__pyx_r);
+  __Pyx_RefNannyFinishContext();
+  return __pyx_r;
+}
+/* … */
+  __pyx_tuple__33 = PyTuple_Pack(5, __pyx_n_s_self, __pyx_n_s_xpixel, __pyx_n_s_ypixel, __pyx_n_s_MinCoords, __pyx_n_s_MaxCoords); if (unlikely(!__pyx_tuple__33)) __PYX_ERR(0, 49, __pyx_L1_error)
+  __Pyx_GOTREF(__pyx_tuple__33);
+  __Pyx_GIVEREF(__pyx_tuple__33);
+/* … */
+  __pyx_t_3 = __Pyx_CyFunction_NewEx(&__pyx_mdef_6CAStar_19AATC_Monitor_Viewer_6Camera_1__init__, 0, __pyx_n_s_Camera___init, NULL, __pyx_n_s_CAStar_AATC_Monitor_Viewer, __pyx_d, ((PyObject *)__pyx_codeobj__34)); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 49, __pyx_L1_error)
+  __Pyx_GOTREF(__pyx_t_3);
+  if (PyObject_SetItem(__pyx_t_1, __pyx_n_s_init_2, __pyx_t_3) < 0) __PYX_ERR(0, 49, __pyx_L1_error)
+  __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
+  __pyx_codeobj__34 = (PyObject*)__Pyx_PyCode_New(5, 0, 5, 0, 0, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__33, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_AATC_Monitor_Viewer_pyx, __pyx_n_s_init_2, 49, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__34)) __PYX_ERR(0, 49, __pyx_L1_error)
+
+050:         self.xpixel = xpixel
+
  if (__Pyx_PyObject_SetAttrStr(__pyx_v_self, __pyx_n_s_xpixel, __pyx_v_xpixel) < 0) __PYX_ERR(0, 50, __pyx_L1_error)
+
+051:         self.ypixel = ypixel
+
  if (__Pyx_PyObject_SetAttrStr(__pyx_v_self, __pyx_n_s_ypixel, __pyx_v_ypixel) < 0) __PYX_ERR(0, 51, __pyx_L1_error)
+
+052:         self.gameDisplay = pygame.display.set_mode((self.xpixel,self.ypixel))
+
  __pyx_t_2 = __Pyx_GetModuleGlobalName(__pyx_n_s_pygame); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 52, __pyx_L1_error)
+  __Pyx_GOTREF(__pyx_t_2);
+  __pyx_t_3 = __Pyx_PyObject_GetAttrStr(__pyx_t_2, __pyx_n_s_display); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 52, __pyx_L1_error)
+  __Pyx_GOTREF(__pyx_t_3);
+  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
+  __pyx_t_2 = __Pyx_PyObject_GetAttrStr(__pyx_t_3, __pyx_n_s_set_mode); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 52, __pyx_L1_error)
+  __Pyx_GOTREF(__pyx_t_2);
+  __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
+  __pyx_t_3 = __Pyx_PyObject_GetAttrStr(__pyx_v_self, __pyx_n_s_xpixel); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 52, __pyx_L1_error)
+  __Pyx_GOTREF(__pyx_t_3);
+  __pyx_t_4 = __Pyx_PyObject_GetAttrStr(__pyx_v_self, __pyx_n_s_ypixel); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 52, __pyx_L1_error)
+  __Pyx_GOTREF(__pyx_t_4);
+  __pyx_t_5 = PyTuple_New(2); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 52, __pyx_L1_error)
+  __Pyx_GOTREF(__pyx_t_5);
+  __Pyx_GIVEREF(__pyx_t_3);
+  PyTuple_SET_ITEM(__pyx_t_5, 0, __pyx_t_3);
+  __Pyx_GIVEREF(__pyx_t_4);
+  PyTuple_SET_ITEM(__pyx_t_5, 1, __pyx_t_4);
+  __pyx_t_3 = 0;
+  __pyx_t_4 = 0;
+  __pyx_t_4 = NULL;
+  if (CYTHON_UNPACK_METHODS && likely(PyMethod_Check(__pyx_t_2))) {
+    __pyx_t_4 = PyMethod_GET_SELF(__pyx_t_2);
+    if (likely(__pyx_t_4)) {
+      PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_2);
+      __Pyx_INCREF(__pyx_t_4);
+      __Pyx_INCREF(function);
+      __Pyx_DECREF_SET(__pyx_t_2, function);
+    }
+  }
+  if (!__pyx_t_4) {
+    __pyx_t_1 = __Pyx_PyObject_CallOneArg(__pyx_t_2, __pyx_t_5); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 52, __pyx_L1_error)
+    __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
+    __Pyx_GOTREF(__pyx_t_1);
+  } else {
+    #if CYTHON_FAST_PYCALL
+    if (PyFunction_Check(__pyx_t_2)) {
+      PyObject *__pyx_temp[2] = {__pyx_t_4, __pyx_t_5};
+      __pyx_t_1 = __Pyx_PyFunction_FastCall(__pyx_t_2, __pyx_temp+1-1, 1+1); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 52, __pyx_L1_error)
+      __Pyx_XDECREF(__pyx_t_4); __pyx_t_4 = 0;
+      __Pyx_GOTREF(__pyx_t_1);
+      __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
+    } else
+    #endif
+    #if CYTHON_FAST_PYCCALL
+    if (__Pyx_PyFastCFunction_Check(__pyx_t_2)) {
+      PyObject *__pyx_temp[2] = {__pyx_t_4, __pyx_t_5};
+      __pyx_t_1 = __Pyx_PyCFunction_FastCall(__pyx_t_2, __pyx_temp+1-1, 1+1); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 52, __pyx_L1_error)
+      __Pyx_XDECREF(__pyx_t_4); __pyx_t_4 = 0;
+      __Pyx_GOTREF(__pyx_t_1);
+      __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
+    } else
+    #endif
+    {
+      __pyx_t_3 = PyTuple_New(1+1); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 52, __pyx_L1_error)
+      __Pyx_GOTREF(__pyx_t_3);
+      __Pyx_GIVEREF(__pyx_t_4); PyTuple_SET_ITEM(__pyx_t_3, 0, __pyx_t_4); __pyx_t_4 = NULL;
+      __Pyx_GIVEREF(__pyx_t_5);
+      PyTuple_SET_ITEM(__pyx_t_3, 0+1, __pyx_t_5);
+      __pyx_t_5 = 0;
+      __pyx_t_1 = __Pyx_PyObject_Call(__pyx_t_2, __pyx_t_3, NULL); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 52, __pyx_L1_error)
+      __Pyx_GOTREF(__pyx_t_1);
+      __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
+    }
+  }
+  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
+  if (__Pyx_PyObject_SetAttrStr(__pyx_v_self, __pyx_n_s_gameDisplay, __pyx_t_1) < 0) __PYX_ERR(0, 52, __pyx_L1_error)
+  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
+
+053:         self.MinCoords = MinCoords
+
  if (__Pyx_PyObject_SetAttrStr(__pyx_v_self, __pyx_n_s_MinCoords, __pyx_v_MinCoords) < 0) __PYX_ERR(0, 53, __pyx_L1_error)
+
+054:         self.MaxCoords = MaxCoords
+
  if (__Pyx_PyObject_SetAttrStr(__pyx_v_self, __pyx_n_s_MaxCoords, __pyx_v_MaxCoords) < 0) __PYX_ERR(0, 54, __pyx_L1_error)
+
+055:         self.CameraCoord = self.MinCoords.copy()
+
  __pyx_t_2 = __Pyx_PyObject_GetAttrStr(__pyx_v_self, __pyx_n_s_MinCoords); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 55, __pyx_L1_error)
+  __Pyx_GOTREF(__pyx_t_2);
+  __pyx_t_3 = __Pyx_PyObject_GetAttrStr(__pyx_t_2, __pyx_n_s_copy); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 55, __pyx_L1_error)
+  __Pyx_GOTREF(__pyx_t_3);
+  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
+  __pyx_t_2 = NULL;
+  if (CYTHON_UNPACK_METHODS && likely(PyMethod_Check(__pyx_t_3))) {
+    __pyx_t_2 = PyMethod_GET_SELF(__pyx_t_3);
+    if (likely(__pyx_t_2)) {
+      PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_3);
+      __Pyx_INCREF(__pyx_t_2);
+      __Pyx_INCREF(function);
+      __Pyx_DECREF_SET(__pyx_t_3, function);
+    }
+  }
+  if (__pyx_t_2) {
+    __pyx_t_1 = __Pyx_PyObject_CallOneArg(__pyx_t_3, __pyx_t_2); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 55, __pyx_L1_error)
+    __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
+  } else {
+    __pyx_t_1 = __Pyx_PyObject_CallNoArg(__pyx_t_3); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 55, __pyx_L1_error)
+  }
+  __Pyx_GOTREF(__pyx_t_1);
+  __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
+  if (__Pyx_PyObject_SetAttrStr(__pyx_v_self, __pyx_n_s_CameraCoord, __pyx_t_1) < 0) __PYX_ERR(0, 55, __pyx_L1_error)
+  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
+
+056:         self.CameraCoord.Set_XSize( self.MaxCoords.Get_X() - self.MinCoords.Get_X())
+
  __pyx_t_3 = __Pyx_PyObject_GetAttrStr(__pyx_v_self, __pyx_n_s_CameraCoord); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 56, __pyx_L1_error)
+  __Pyx_GOTREF(__pyx_t_3);
+  __pyx_t_2 = __Pyx_PyObject_GetAttrStr(__pyx_t_3, __pyx_n_s_Set_XSize); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 56, __pyx_L1_error)
+  __Pyx_GOTREF(__pyx_t_2);
+  __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
+  __pyx_t_5 = __Pyx_PyObject_GetAttrStr(__pyx_v_self, __pyx_n_s_MaxCoords); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 56, __pyx_L1_error)
+  __Pyx_GOTREF(__pyx_t_5);
+  __pyx_t_4 = __Pyx_PyObject_GetAttrStr(__pyx_t_5, __pyx_n_s_Get_X); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 56, __pyx_L1_error)
+  __Pyx_GOTREF(__pyx_t_4);
+  __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
+  __pyx_t_5 = NULL;
+  if (CYTHON_UNPACK_METHODS && likely(PyMethod_Check(__pyx_t_4))) {
+    __pyx_t_5 = PyMethod_GET_SELF(__pyx_t_4);
+    if (likely(__pyx_t_5)) {
+      PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_4);
+      __Pyx_INCREF(__pyx_t_5);
+      __Pyx_INCREF(function);
+      __Pyx_DECREF_SET(__pyx_t_4, function);
+    }
+  }
+  if (__pyx_t_5) {
+    __pyx_t_3 = __Pyx_PyObject_CallOneArg(__pyx_t_4, __pyx_t_5); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 56, __pyx_L1_error)
+    __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
+  } else {
+    __pyx_t_3 = __Pyx_PyObject_CallNoArg(__pyx_t_4); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 56, __pyx_L1_error)
+  }
+  __Pyx_GOTREF(__pyx_t_3);
+  __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
+  __pyx_t_5 = __Pyx_PyObject_GetAttrStr(__pyx_v_self, __pyx_n_s_MinCoords); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 56, __pyx_L1_error)
+  __Pyx_GOTREF(__pyx_t_5);
+  __pyx_t_6 = __Pyx_PyObject_GetAttrStr(__pyx_t_5, __pyx_n_s_Get_X); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 56, __pyx_L1_error)
+  __Pyx_GOTREF(__pyx_t_6);
+  __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
+  __pyx_t_5 = NULL;
+  if (CYTHON_UNPACK_METHODS && likely(PyMethod_Check(__pyx_t_6))) {
+    __pyx_t_5 = PyMethod_GET_SELF(__pyx_t_6);
+    if (likely(__pyx_t_5)) {
+      PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_6);
+      __Pyx_INCREF(__pyx_t_5);
+      __Pyx_INCREF(function);
+      __Pyx_DECREF_SET(__pyx_t_6, function);
+    }
+  }
+  if (__pyx_t_5) {
+    __pyx_t_4 = __Pyx_PyObject_CallOneArg(__pyx_t_6, __pyx_t_5); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 56, __pyx_L1_error)
+    __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
+  } else {
+    __pyx_t_4 = __Pyx_PyObject_CallNoArg(__pyx_t_6); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 56, __pyx_L1_error)
+  }
+  __Pyx_GOTREF(__pyx_t_4);
+  __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
+  __pyx_t_6 = PyNumber_Subtract(__pyx_t_3, __pyx_t_4); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 56, __pyx_L1_error)
+  __Pyx_GOTREF(__pyx_t_6);
+  __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
+  __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
+  __pyx_t_4 = NULL;
+  if (CYTHON_UNPACK_METHODS && likely(PyMethod_Check(__pyx_t_2))) {
+    __pyx_t_4 = PyMethod_GET_SELF(__pyx_t_2);
+    if (likely(__pyx_t_4)) {
+      PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_2);
+      __Pyx_INCREF(__pyx_t_4);
+      __Pyx_INCREF(function);
+      __Pyx_DECREF_SET(__pyx_t_2, function);
+    }
+  }
+  if (!__pyx_t_4) {
+    __pyx_t_1 = __Pyx_PyObject_CallOneArg(__pyx_t_2, __pyx_t_6); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 56, __pyx_L1_error)
+    __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
+    __Pyx_GOTREF(__pyx_t_1);
+  } else {
+    #if CYTHON_FAST_PYCALL
+    if (PyFunction_Check(__pyx_t_2)) {
+      PyObject *__pyx_temp[2] = {__pyx_t_4, __pyx_t_6};
+      __pyx_t_1 = __Pyx_PyFunction_FastCall(__pyx_t_2, __pyx_temp+1-1, 1+1); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 56, __pyx_L1_error)
+      __Pyx_XDECREF(__pyx_t_4); __pyx_t_4 = 0;
+      __Pyx_GOTREF(__pyx_t_1);
+      __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
+    } else
+    #endif
+    #if CYTHON_FAST_PYCCALL
+    if (__Pyx_PyFastCFunction_Check(__pyx_t_2)) {
+      PyObject *__pyx_temp[2] = {__pyx_t_4, __pyx_t_6};
+      __pyx_t_1 = __Pyx_PyCFunction_FastCall(__pyx_t_2, __pyx_temp+1-1, 1+1); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 56, __pyx_L1_error)
+      __Pyx_XDECREF(__pyx_t_4); __pyx_t_4 = 0;
+      __Pyx_GOTREF(__pyx_t_1);
+      __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
+    } else
+    #endif
+    {
+      __pyx_t_3 = PyTuple_New(1+1); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 56, __pyx_L1_error)
+      __Pyx_GOTREF(__pyx_t_3);
+      __Pyx_GIVEREF(__pyx_t_4); PyTuple_SET_ITEM(__pyx_t_3, 0, __pyx_t_4); __pyx_t_4 = NULL;
+      __Pyx_GIVEREF(__pyx_t_6);
+      PyTuple_SET_ITEM(__pyx_t_3, 0+1, __pyx_t_6);
+      __pyx_t_6 = 0;
+      __pyx_t_1 = __Pyx_PyObject_Call(__pyx_t_2, __pyx_t_3, NULL); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 56, __pyx_L1_error)
+      __Pyx_GOTREF(__pyx_t_1);
+      __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
+    }
+  }
+  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
+  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
+
+057:         self.CameraCoord.Set_YSize( self.MaxCoords.Get_Y() - self.MinCoords.Get_Y())
+
  __pyx_t_2 = __Pyx_PyObject_GetAttrStr(__pyx_v_self, __pyx_n_s_CameraCoord); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 57, __pyx_L1_error)
+  __Pyx_GOTREF(__pyx_t_2);
+  __pyx_t_3 = __Pyx_PyObject_GetAttrStr(__pyx_t_2, __pyx_n_s_Set_YSize); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 57, __pyx_L1_error)
+  __Pyx_GOTREF(__pyx_t_3);
+  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
+  __pyx_t_6 = __Pyx_PyObject_GetAttrStr(__pyx_v_self, __pyx_n_s_MaxCoords); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 57, __pyx_L1_error)
+  __Pyx_GOTREF(__pyx_t_6);
+  __pyx_t_4 = __Pyx_PyObject_GetAttrStr(__pyx_t_6, __pyx_n_s_Get_Y); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 57, __pyx_L1_error)
+  __Pyx_GOTREF(__pyx_t_4);
+  __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
+  __pyx_t_6 = NULL;
+  if (CYTHON_UNPACK_METHODS && likely(PyMethod_Check(__pyx_t_4))) {
+    __pyx_t_6 = PyMethod_GET_SELF(__pyx_t_4);
+    if (likely(__pyx_t_6)) {
+      PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_4);
+      __Pyx_INCREF(__pyx_t_6);
+      __Pyx_INCREF(function);
+      __Pyx_DECREF_SET(__pyx_t_4, function);
+    }
+  }
+  if (__pyx_t_6) {
+    __pyx_t_2 = __Pyx_PyObject_CallOneArg(__pyx_t_4, __pyx_t_6); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 57, __pyx_L1_error)
+    __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
+  } else {
+    __pyx_t_2 = __Pyx_PyObject_CallNoArg(__pyx_t_4); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 57, __pyx_L1_error)
+  }
+  __Pyx_GOTREF(__pyx_t_2);
+  __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
+  __pyx_t_6 = __Pyx_PyObject_GetAttrStr(__pyx_v_self, __pyx_n_s_MinCoords); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 57, __pyx_L1_error)
+  __Pyx_GOTREF(__pyx_t_6);
+  __pyx_t_5 = __Pyx_PyObject_GetAttrStr(__pyx_t_6, __pyx_n_s_Get_Y); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 57, __pyx_L1_error)
+  __Pyx_GOTREF(__pyx_t_5);
+  __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
+  __pyx_t_6 = NULL;
+  if (CYTHON_UNPACK_METHODS && likely(PyMethod_Check(__pyx_t_5))) {
+    __pyx_t_6 = PyMethod_GET_SELF(__pyx_t_5);
+    if (likely(__pyx_t_6)) {
+      PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_5);
+      __Pyx_INCREF(__pyx_t_6);
+      __Pyx_INCREF(function);
+      __Pyx_DECREF_SET(__pyx_t_5, function);
+    }
+  }
+  if (__pyx_t_6) {
+    __pyx_t_4 = __Pyx_PyObject_CallOneArg(__pyx_t_5, __pyx_t_6); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 57, __pyx_L1_error)
+    __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
+  } else {
+    __pyx_t_4 = __Pyx_PyObject_CallNoArg(__pyx_t_5); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 57, __pyx_L1_error)
+  }
+  __Pyx_GOTREF(__pyx_t_4);
+  __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
+  __pyx_t_5 = PyNumber_Subtract(__pyx_t_2, __pyx_t_4); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 57, __pyx_L1_error)
+  __Pyx_GOTREF(__pyx_t_5);
+  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
+  __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
+  __pyx_t_4 = NULL;
+  if (CYTHON_UNPACK_METHODS && likely(PyMethod_Check(__pyx_t_3))) {
+    __pyx_t_4 = PyMethod_GET_SELF(__pyx_t_3);
+    if (likely(__pyx_t_4)) {
+      PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_3);
+      __Pyx_INCREF(__pyx_t_4);
+      __Pyx_INCREF(function);
+      __Pyx_DECREF_SET(__pyx_t_3, function);
+    }
+  }
+  if (!__pyx_t_4) {
+    __pyx_t_1 = __Pyx_PyObject_CallOneArg(__pyx_t_3, __pyx_t_5); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 57, __pyx_L1_error)
+    __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
+    __Pyx_GOTREF(__pyx_t_1);
+  } else {
+    #if CYTHON_FAST_PYCALL
+    if (PyFunction_Check(__pyx_t_3)) {
+      PyObject *__pyx_temp[2] = {__pyx_t_4, __pyx_t_5};
+      __pyx_t_1 = __Pyx_PyFunction_FastCall(__pyx_t_3, __pyx_temp+1-1, 1+1); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 57, __pyx_L1_error)
+      __Pyx_XDECREF(__pyx_t_4); __pyx_t_4 = 0;
+      __Pyx_GOTREF(__pyx_t_1);
+      __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
+    } else
+    #endif
+    #if CYTHON_FAST_PYCCALL
+    if (__Pyx_PyFastCFunction_Check(__pyx_t_3)) {
+      PyObject *__pyx_temp[2] = {__pyx_t_4, __pyx_t_5};
+      __pyx_t_1 = __Pyx_PyCFunction_FastCall(__pyx_t_3, __pyx_temp+1-1, 1+1); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 57, __pyx_L1_error)
+      __Pyx_XDECREF(__pyx_t_4); __pyx_t_4 = 0;
+      __Pyx_GOTREF(__pyx_t_1);
+      __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
+    } else
+    #endif
+    {
+      __pyx_t_2 = PyTuple_New(1+1); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 57, __pyx_L1_error)
+      __Pyx_GOTREF(__pyx_t_2);
+      __Pyx_GIVEREF(__pyx_t_4); PyTuple_SET_ITEM(__pyx_t_2, 0, __pyx_t_4); __pyx_t_4 = NULL;
+      __Pyx_GIVEREF(__pyx_t_5);
+      PyTuple_SET_ITEM(__pyx_t_2, 0+1, __pyx_t_5);
+      __pyx_t_5 = 0;
+      __pyx_t_1 = __Pyx_PyObject_Call(__pyx_t_3, __pyx_t_2, NULL); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 57, __pyx_L1_error)
+      __Pyx_GOTREF(__pyx_t_1);
+      __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
+    }
+  }
+  __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
+  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
+
+058:         self.CameraZoom = 1
+
  if (__Pyx_PyObject_SetAttrStr(__pyx_v_self, __pyx_n_s_CameraZoom, __pyx_int_1) < 0) __PYX_ERR(0, 58, __pyx_L1_error)
+
+059:         self.DrawObjects = []
+
  __pyx_t_1 = PyList_New(0); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 59, __pyx_L1_error)
+  __Pyx_GOTREF(__pyx_t_1);
+  if (__Pyx_PyObject_SetAttrStr(__pyx_v_self, __pyx_n_s_DrawObjects, __pyx_t_1) < 0) __PYX_ERR(0, 59, __pyx_L1_error)
+  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
+
 060: 
+
+061:     def GetZoom(self):
+
/* Python wrapper */
+static PyObject *__pyx_pw_6CAStar_19AATC_Monitor_Viewer_6Camera_3GetZoom(PyObject *__pyx_self, PyObject *__pyx_v_self); /*proto*/
+static PyMethodDef __pyx_mdef_6CAStar_19AATC_Monitor_Viewer_6Camera_3GetZoom = {"GetZoom", (PyCFunction)__pyx_pw_6CAStar_19AATC_Monitor_Viewer_6Camera_3GetZoom, METH_O, 0};
+static PyObject *__pyx_pw_6CAStar_19AATC_Monitor_Viewer_6Camera_3GetZoom(PyObject *__pyx_self, PyObject *__pyx_v_self) {
+  PyObject *__pyx_r = 0;
+  __Pyx_RefNannyDeclarations
+  __Pyx_RefNannySetupContext("GetZoom (wrapper)", 0);
+  __pyx_r = __pyx_pf_6CAStar_19AATC_Monitor_Viewer_6Camera_2GetZoom(__pyx_self, ((PyObject *)__pyx_v_self));
+
+  /* function exit code */
+  __Pyx_RefNannyFinishContext();
+  return __pyx_r;
+}
+
+static PyObject *__pyx_pf_6CAStar_19AATC_Monitor_Viewer_6Camera_2GetZoom(CYTHON_UNUSED PyObject *__pyx_self, PyObject *__pyx_v_self) {
+  PyObject *__pyx_r = NULL;
+  __Pyx_RefNannyDeclarations
+  __Pyx_RefNannySetupContext("GetZoom", 0);
+/* … */
+  /* function exit code */
+  __pyx_L1_error:;
+  __Pyx_XDECREF(__pyx_t_1);
+  __Pyx_AddTraceback("CAStar.AATC_Monitor_Viewer.Camera.GetZoom", __pyx_clineno, __pyx_lineno, __pyx_filename);
+  __pyx_r = NULL;
+  __pyx_L0:;
+  __Pyx_XGIVEREF(__pyx_r);
+  __Pyx_RefNannyFinishContext();
+  return __pyx_r;
+}
+/* … */
+  __pyx_tuple__35 = PyTuple_Pack(1, __pyx_n_s_self); if (unlikely(!__pyx_tuple__35)) __PYX_ERR(0, 61, __pyx_L1_error)
+  __Pyx_GOTREF(__pyx_tuple__35);
+  __Pyx_GIVEREF(__pyx_tuple__35);
+/* … */
+  __pyx_t_3 = __Pyx_CyFunction_NewEx(&__pyx_mdef_6CAStar_19AATC_Monitor_Viewer_6Camera_3GetZoom, 0, __pyx_n_s_Camera_GetZoom, NULL, __pyx_n_s_CAStar_AATC_Monitor_Viewer, __pyx_d, ((PyObject *)__pyx_codeobj__36)); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 61, __pyx_L1_error)
+  __Pyx_GOTREF(__pyx_t_3);
+  if (PyObject_SetItem(__pyx_t_1, __pyx_n_s_GetZoom, __pyx_t_3) < 0) __PYX_ERR(0, 61, __pyx_L1_error)
+  __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
+  __pyx_codeobj__36 = (PyObject*)__Pyx_PyCode_New(1, 0, 1, 0, 0, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__35, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_AATC_Monitor_Viewer_pyx, __pyx_n_s_GetZoom, 61, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__36)) __PYX_ERR(0, 61, __pyx_L1_error)
+
+062:         return self.CameraZoom
+
  __Pyx_XDECREF(__pyx_r);
+  __pyx_t_1 = __Pyx_PyObject_GetAttrStr(__pyx_v_self, __pyx_n_s_CameraZoom); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 62, __pyx_L1_error)
+  __Pyx_GOTREF(__pyx_t_1);
+  __pyx_r = __pyx_t_1;
+  __pyx_t_1 = 0;
+  goto __pyx_L0;
+
+063:     def SetZoom(self,Zoom):
+
/* Python wrapper */
+static PyObject *__pyx_pw_6CAStar_19AATC_Monitor_Viewer_6Camera_5SetZoom(PyObject *__pyx_self, PyObject *__pyx_args, PyObject *__pyx_kwds); /*proto*/
+static PyMethodDef __pyx_mdef_6CAStar_19AATC_Monitor_Viewer_6Camera_5SetZoom = {"SetZoom", (PyCFunction)__pyx_pw_6CAStar_19AATC_Monitor_Viewer_6Camera_5SetZoom, METH_VARARGS|METH_KEYWORDS, 0};
+static PyObject *__pyx_pw_6CAStar_19AATC_Monitor_Viewer_6Camera_5SetZoom(PyObject *__pyx_self, PyObject *__pyx_args, PyObject *__pyx_kwds) {
+  PyObject *__pyx_v_self = 0;
+  PyObject *__pyx_v_Zoom = 0;
+  PyObject *__pyx_r = 0;
+  __Pyx_RefNannyDeclarations
+  __Pyx_RefNannySetupContext("SetZoom (wrapper)", 0);
+  {
+    static PyObject **__pyx_pyargnames[] = {&__pyx_n_s_self,&__pyx_n_s_Zoom,0};
+    PyObject* values[2] = {0,0};
+    if (unlikely(__pyx_kwds)) {
+      Py_ssize_t kw_args;
+      const Py_ssize_t pos_args = PyTuple_GET_SIZE(__pyx_args);
+      switch (pos_args) {
+        case  2: values[1] = PyTuple_GET_ITEM(__pyx_args, 1);
+        CYTHON_FALLTHROUGH;
+        case  1: values[0] = PyTuple_GET_ITEM(__pyx_args, 0);
+        CYTHON_FALLTHROUGH;
+        case  0: break;
+        default: goto __pyx_L5_argtuple_error;
+      }
+      kw_args = PyDict_Size(__pyx_kwds);
+      switch (pos_args) {
+        case  0:
+        if (likely((values[0] = PyDict_GetItem(__pyx_kwds, __pyx_n_s_self)) != 0)) kw_args--;
+        else goto __pyx_L5_argtuple_error;
+        CYTHON_FALLTHROUGH;
+        case  1:
+        if (likely((values[1] = PyDict_GetItem(__pyx_kwds, __pyx_n_s_Zoom)) != 0)) kw_args--;
+        else {
+          __Pyx_RaiseArgtupleInvalid("SetZoom", 1, 2, 2, 1); __PYX_ERR(0, 63, __pyx_L3_error)
+        }
+      }
+      if (unlikely(kw_args > 0)) {
+        if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_pyargnames, 0, values, pos_args, "SetZoom") < 0)) __PYX_ERR(0, 63, __pyx_L3_error)
+      }
+    } else if (PyTuple_GET_SIZE(__pyx_args) != 2) {
+      goto __pyx_L5_argtuple_error;
+    } else {
+      values[0] = PyTuple_GET_ITEM(__pyx_args, 0);
+      values[1] = PyTuple_GET_ITEM(__pyx_args, 1);
+    }
+    __pyx_v_self = values[0];
+    __pyx_v_Zoom = values[1];
+  }
+  goto __pyx_L4_argument_unpacking_done;
+  __pyx_L5_argtuple_error:;
+  __Pyx_RaiseArgtupleInvalid("SetZoom", 1, 2, 2, PyTuple_GET_SIZE(__pyx_args)); __PYX_ERR(0, 63, __pyx_L3_error)
+  __pyx_L3_error:;
+  __Pyx_AddTraceback("CAStar.AATC_Monitor_Viewer.Camera.SetZoom", __pyx_clineno, __pyx_lineno, __pyx_filename);
+  __Pyx_RefNannyFinishContext();
+  return NULL;
+  __pyx_L4_argument_unpacking_done:;
+  __pyx_r = __pyx_pf_6CAStar_19AATC_Monitor_Viewer_6Camera_4SetZoom(__pyx_self, __pyx_v_self, __pyx_v_Zoom);
+
+  /* function exit code */
+  __Pyx_RefNannyFinishContext();
+  return __pyx_r;
+}
+
+static PyObject *__pyx_pf_6CAStar_19AATC_Monitor_Viewer_6Camera_4SetZoom(CYTHON_UNUSED PyObject *__pyx_self, PyObject *__pyx_v_self, PyObject *__pyx_v_Zoom) {
+  PyObject *__pyx_r = NULL;
+  __Pyx_RefNannyDeclarations
+  __Pyx_RefNannySetupContext("SetZoom", 0);
+/* … */
+  /* function exit code */
+  __pyx_r = Py_None; __Pyx_INCREF(Py_None);
+  goto __pyx_L0;
+  __pyx_L1_error:;
+  __Pyx_AddTraceback("CAStar.AATC_Monitor_Viewer.Camera.SetZoom", __pyx_clineno, __pyx_lineno, __pyx_filename);
+  __pyx_r = NULL;
+  __pyx_L0:;
+  __Pyx_XGIVEREF(__pyx_r);
+  __Pyx_RefNannyFinishContext();
+  return __pyx_r;
+}
+/* … */
+  __pyx_tuple__37 = PyTuple_Pack(2, __pyx_n_s_self, __pyx_n_s_Zoom); if (unlikely(!__pyx_tuple__37)) __PYX_ERR(0, 63, __pyx_L1_error)
+  __Pyx_GOTREF(__pyx_tuple__37);
+  __Pyx_GIVEREF(__pyx_tuple__37);
+/* … */
+  __pyx_t_3 = __Pyx_CyFunction_NewEx(&__pyx_mdef_6CAStar_19AATC_Monitor_Viewer_6Camera_5SetZoom, 0, __pyx_n_s_Camera_SetZoom, NULL, __pyx_n_s_CAStar_AATC_Monitor_Viewer, __pyx_d, ((PyObject *)__pyx_codeobj__38)); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 63, __pyx_L1_error)
+  __Pyx_GOTREF(__pyx_t_3);
+  if (PyObject_SetItem(__pyx_t_1, __pyx_n_s_SetZoom, __pyx_t_3) < 0) __PYX_ERR(0, 63, __pyx_L1_error)
+  __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
+  __pyx_codeobj__38 = (PyObject*)__Pyx_PyCode_New(2, 0, 2, 0, 0, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__37, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_AATC_Monitor_Viewer_pyx, __pyx_n_s_SetZoom, 63, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__38)) __PYX_ERR(0, 63, __pyx_L1_error)
+
+064:         self.CameraZoom = Zoom
+
  if (__Pyx_PyObject_SetAttrStr(__pyx_v_self, __pyx_n_s_CameraZoom, __pyx_v_Zoom) < 0) __PYX_ERR(0, 64, __pyx_L1_error)
+
 065: 
+
+066:     def GetCameraCoords(self):
+
/* Python wrapper */
+static PyObject *__pyx_pw_6CAStar_19AATC_Monitor_Viewer_6Camera_7GetCameraCoords(PyObject *__pyx_self, PyObject *__pyx_v_self); /*proto*/
+static PyMethodDef __pyx_mdef_6CAStar_19AATC_Monitor_Viewer_6Camera_7GetCameraCoords = {"GetCameraCoords", (PyCFunction)__pyx_pw_6CAStar_19AATC_Monitor_Viewer_6Camera_7GetCameraCoords, METH_O, 0};
+static PyObject *__pyx_pw_6CAStar_19AATC_Monitor_Viewer_6Camera_7GetCameraCoords(PyObject *__pyx_self, PyObject *__pyx_v_self) {
+  PyObject *__pyx_r = 0;
+  __Pyx_RefNannyDeclarations
+  __Pyx_RefNannySetupContext("GetCameraCoords (wrapper)", 0);
+  __pyx_r = __pyx_pf_6CAStar_19AATC_Monitor_Viewer_6Camera_6GetCameraCoords(__pyx_self, ((PyObject *)__pyx_v_self));
+
+  /* function exit code */
+  __Pyx_RefNannyFinishContext();
+  return __pyx_r;
+}
+
+static PyObject *__pyx_pf_6CAStar_19AATC_Monitor_Viewer_6Camera_6GetCameraCoords(CYTHON_UNUSED PyObject *__pyx_self, PyObject *__pyx_v_self) {
+  PyObject *__pyx_r = NULL;
+  __Pyx_RefNannyDeclarations
+  __Pyx_RefNannySetupContext("GetCameraCoords", 0);
+/* … */
+  /* function exit code */
+  __pyx_L1_error:;
+  __Pyx_XDECREF(__pyx_t_1);
+  __Pyx_AddTraceback("CAStar.AATC_Monitor_Viewer.Camera.GetCameraCoords", __pyx_clineno, __pyx_lineno, __pyx_filename);
+  __pyx_r = NULL;
+  __pyx_L0:;
+  __Pyx_XGIVEREF(__pyx_r);
+  __Pyx_RefNannyFinishContext();
+  return __pyx_r;
+}
+/* … */
+  __pyx_tuple__39 = PyTuple_Pack(1, __pyx_n_s_self); if (unlikely(!__pyx_tuple__39)) __PYX_ERR(0, 66, __pyx_L1_error)
+  __Pyx_GOTREF(__pyx_tuple__39);
+  __Pyx_GIVEREF(__pyx_tuple__39);
+/* … */
+  __pyx_t_3 = __Pyx_CyFunction_NewEx(&__pyx_mdef_6CAStar_19AATC_Monitor_Viewer_6Camera_7GetCameraCoords, 0, __pyx_n_s_Camera_GetCameraCoords, NULL, __pyx_n_s_CAStar_AATC_Monitor_Viewer, __pyx_d, ((PyObject *)__pyx_codeobj__40)); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 66, __pyx_L1_error)
+  __Pyx_GOTREF(__pyx_t_3);
+  if (PyObject_SetItem(__pyx_t_1, __pyx_n_s_GetCameraCoords, __pyx_t_3) < 0) __PYX_ERR(0, 66, __pyx_L1_error)
+  __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
+  __pyx_codeobj__40 = (PyObject*)__Pyx_PyCode_New(1, 0, 1, 0, 0, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__39, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_AATC_Monitor_Viewer_pyx, __pyx_n_s_GetCameraCoords, 66, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__40)) __PYX_ERR(0, 66, __pyx_L1_error)
+
+067:         return self.CameraCoord
+
  __Pyx_XDECREF(__pyx_r);
+  __pyx_t_1 = __Pyx_PyObject_GetAttrStr(__pyx_v_self, __pyx_n_s_CameraCoord); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 67, __pyx_L1_error)
+  __Pyx_GOTREF(__pyx_t_1);
+  __pyx_r = __pyx_t_1;
+  __pyx_t_1 = 0;
+  goto __pyx_L0;
+
+068:     def IncrementCameraCoordX(self,Amount):
+
/* Python wrapper */
+static PyObject *__pyx_pw_6CAStar_19AATC_Monitor_Viewer_6Camera_9IncrementCameraCoordX(PyObject *__pyx_self, PyObject *__pyx_args, PyObject *__pyx_kwds); /*proto*/
+static PyMethodDef __pyx_mdef_6CAStar_19AATC_Monitor_Viewer_6Camera_9IncrementCameraCoordX = {"IncrementCameraCoordX", (PyCFunction)__pyx_pw_6CAStar_19AATC_Monitor_Viewer_6Camera_9IncrementCameraCoordX, METH_VARARGS|METH_KEYWORDS, 0};
+static PyObject *__pyx_pw_6CAStar_19AATC_Monitor_Viewer_6Camera_9IncrementCameraCoordX(PyObject *__pyx_self, PyObject *__pyx_args, PyObject *__pyx_kwds) {
+  PyObject *__pyx_v_self = 0;
+  PyObject *__pyx_v_Amount = 0;
+  PyObject *__pyx_r = 0;
+  __Pyx_RefNannyDeclarations
+  __Pyx_RefNannySetupContext("IncrementCameraCoordX (wrapper)", 0);
+  {
+    static PyObject **__pyx_pyargnames[] = {&__pyx_n_s_self,&__pyx_n_s_Amount,0};
+    PyObject* values[2] = {0,0};
+    if (unlikely(__pyx_kwds)) {
+      Py_ssize_t kw_args;
+      const Py_ssize_t pos_args = PyTuple_GET_SIZE(__pyx_args);
+      switch (pos_args) {
+        case  2: values[1] = PyTuple_GET_ITEM(__pyx_args, 1);
+        CYTHON_FALLTHROUGH;
+        case  1: values[0] = PyTuple_GET_ITEM(__pyx_args, 0);
+        CYTHON_FALLTHROUGH;
+        case  0: break;
+        default: goto __pyx_L5_argtuple_error;
+      }
+      kw_args = PyDict_Size(__pyx_kwds);
+      switch (pos_args) {
+        case  0:
+        if (likely((values[0] = PyDict_GetItem(__pyx_kwds, __pyx_n_s_self)) != 0)) kw_args--;
+        else goto __pyx_L5_argtuple_error;
+        CYTHON_FALLTHROUGH;
+        case  1:
+        if (likely((values[1] = PyDict_GetItem(__pyx_kwds, __pyx_n_s_Amount)) != 0)) kw_args--;
+        else {
+          __Pyx_RaiseArgtupleInvalid("IncrementCameraCoordX", 1, 2, 2, 1); __PYX_ERR(0, 68, __pyx_L3_error)
+        }
+      }
+      if (unlikely(kw_args > 0)) {
+        if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_pyargnames, 0, values, pos_args, "IncrementCameraCoordX") < 0)) __PYX_ERR(0, 68, __pyx_L3_error)
+      }
+    } else if (PyTuple_GET_SIZE(__pyx_args) != 2) {
+      goto __pyx_L5_argtuple_error;
+    } else {
+      values[0] = PyTuple_GET_ITEM(__pyx_args, 0);
+      values[1] = PyTuple_GET_ITEM(__pyx_args, 1);
+    }
+    __pyx_v_self = values[0];
+    __pyx_v_Amount = values[1];
+  }
+  goto __pyx_L4_argument_unpacking_done;
+  __pyx_L5_argtuple_error:;
+  __Pyx_RaiseArgtupleInvalid("IncrementCameraCoordX", 1, 2, 2, PyTuple_GET_SIZE(__pyx_args)); __PYX_ERR(0, 68, __pyx_L3_error)
+  __pyx_L3_error:;
+  __Pyx_AddTraceback("CAStar.AATC_Monitor_Viewer.Camera.IncrementCameraCoordX", __pyx_clineno, __pyx_lineno, __pyx_filename);
+  __Pyx_RefNannyFinishContext();
+  return NULL;
+  __pyx_L4_argument_unpacking_done:;
+  __pyx_r = __pyx_pf_6CAStar_19AATC_Monitor_Viewer_6Camera_8IncrementCameraCoordX(__pyx_self, __pyx_v_self, __pyx_v_Amount);
+
+  /* function exit code */
+  __Pyx_RefNannyFinishContext();
+  return __pyx_r;
+}
+
+static PyObject *__pyx_pf_6CAStar_19AATC_Monitor_Viewer_6Camera_8IncrementCameraCoordX(CYTHON_UNUSED PyObject *__pyx_self, PyObject *__pyx_v_self, PyObject *__pyx_v_Amount) {
+  PyObject *__pyx_r = NULL;
+  __Pyx_RefNannyDeclarations
+  __Pyx_RefNannySetupContext("IncrementCameraCoordX", 0);
+/* … */
+  /* function exit code */
+  __pyx_r = Py_None; __Pyx_INCREF(Py_None);
+  goto __pyx_L0;
+  __pyx_L1_error:;
+  __Pyx_XDECREF(__pyx_t_1);
+  __Pyx_XDECREF(__pyx_t_2);
+  __Pyx_XDECREF(__pyx_t_3);
+  __Pyx_XDECREF(__pyx_t_4);
+  __Pyx_XDECREF(__pyx_t_5);
+  __Pyx_AddTraceback("CAStar.AATC_Monitor_Viewer.Camera.IncrementCameraCoordX", __pyx_clineno, __pyx_lineno, __pyx_filename);
+  __pyx_r = NULL;
+  __pyx_L0:;
+  __Pyx_XGIVEREF(__pyx_r);
+  __Pyx_RefNannyFinishContext();
+  return __pyx_r;
+}
+/* … */
+  __pyx_tuple__41 = PyTuple_Pack(2, __pyx_n_s_self, __pyx_n_s_Amount); if (unlikely(!__pyx_tuple__41)) __PYX_ERR(0, 68, __pyx_L1_error)
+  __Pyx_GOTREF(__pyx_tuple__41);
+  __Pyx_GIVEREF(__pyx_tuple__41);
+/* … */
+  __pyx_t_3 = __Pyx_CyFunction_NewEx(&__pyx_mdef_6CAStar_19AATC_Monitor_Viewer_6Camera_9IncrementCameraCoordX, 0, __pyx_n_s_Camera_IncrementCameraCoordX, NULL, __pyx_n_s_CAStar_AATC_Monitor_Viewer, __pyx_d, ((PyObject *)__pyx_codeobj__42)); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 68, __pyx_L1_error)
+  __Pyx_GOTREF(__pyx_t_3);
+  if (PyObject_SetItem(__pyx_t_1, __pyx_n_s_IncrementCameraCoordX, __pyx_t_3) < 0) __PYX_ERR(0, 68, __pyx_L1_error)
+  __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
+  __pyx_codeobj__42 = (PyObject*)__Pyx_PyCode_New(2, 0, 2, 0, 0, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__41, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_AATC_Monitor_Viewer_pyx, __pyx_n_s_IncrementCameraCoordX, 68, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__42)) __PYX_ERR(0, 68, __pyx_L1_error)
+
+069:         self.CameraCoord.Set_X( Amount+self.CameraCoord.Get_X())
+
  __pyx_t_2 = __Pyx_PyObject_GetAttrStr(__pyx_v_self, __pyx_n_s_CameraCoord); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 69, __pyx_L1_error)
+  __Pyx_GOTREF(__pyx_t_2);
+  __pyx_t_3 = __Pyx_PyObject_GetAttrStr(__pyx_t_2, __pyx_n_s_Set_X); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 69, __pyx_L1_error)
+  __Pyx_GOTREF(__pyx_t_3);
+  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
+  __pyx_t_4 = __Pyx_PyObject_GetAttrStr(__pyx_v_self, __pyx_n_s_CameraCoord); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 69, __pyx_L1_error)
+  __Pyx_GOTREF(__pyx_t_4);
+  __pyx_t_5 = __Pyx_PyObject_GetAttrStr(__pyx_t_4, __pyx_n_s_Get_X); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 69, __pyx_L1_error)
+  __Pyx_GOTREF(__pyx_t_5);
+  __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
+  __pyx_t_4 = NULL;
+  if (CYTHON_UNPACK_METHODS && likely(PyMethod_Check(__pyx_t_5))) {
+    __pyx_t_4 = PyMethod_GET_SELF(__pyx_t_5);
+    if (likely(__pyx_t_4)) {
+      PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_5);
+      __Pyx_INCREF(__pyx_t_4);
+      __Pyx_INCREF(function);
+      __Pyx_DECREF_SET(__pyx_t_5, function);
+    }
+  }
+  if (__pyx_t_4) {
+    __pyx_t_2 = __Pyx_PyObject_CallOneArg(__pyx_t_5, __pyx_t_4); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 69, __pyx_L1_error)
+    __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
+  } else {
+    __pyx_t_2 = __Pyx_PyObject_CallNoArg(__pyx_t_5); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 69, __pyx_L1_error)
+  }
+  __Pyx_GOTREF(__pyx_t_2);
+  __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
+  __pyx_t_5 = PyNumber_Add(__pyx_v_Amount, __pyx_t_2); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 69, __pyx_L1_error)
+  __Pyx_GOTREF(__pyx_t_5);
+  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
+  __pyx_t_2 = NULL;
+  if (CYTHON_UNPACK_METHODS && likely(PyMethod_Check(__pyx_t_3))) {
+    __pyx_t_2 = PyMethod_GET_SELF(__pyx_t_3);
+    if (likely(__pyx_t_2)) {
+      PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_3);
+      __Pyx_INCREF(__pyx_t_2);
+      __Pyx_INCREF(function);
+      __Pyx_DECREF_SET(__pyx_t_3, function);
+    }
+  }
+  if (!__pyx_t_2) {
+    __pyx_t_1 = __Pyx_PyObject_CallOneArg(__pyx_t_3, __pyx_t_5); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 69, __pyx_L1_error)
+    __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
+    __Pyx_GOTREF(__pyx_t_1);
+  } else {
+    #if CYTHON_FAST_PYCALL
+    if (PyFunction_Check(__pyx_t_3)) {
+      PyObject *__pyx_temp[2] = {__pyx_t_2, __pyx_t_5};
+      __pyx_t_1 = __Pyx_PyFunction_FastCall(__pyx_t_3, __pyx_temp+1-1, 1+1); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 69, __pyx_L1_error)
+      __Pyx_XDECREF(__pyx_t_2); __pyx_t_2 = 0;
+      __Pyx_GOTREF(__pyx_t_1);
+      __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
+    } else
+    #endif
+    #if CYTHON_FAST_PYCCALL
+    if (__Pyx_PyFastCFunction_Check(__pyx_t_3)) {
+      PyObject *__pyx_temp[2] = {__pyx_t_2, __pyx_t_5};
+      __pyx_t_1 = __Pyx_PyCFunction_FastCall(__pyx_t_3, __pyx_temp+1-1, 1+1); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 69, __pyx_L1_error)
+      __Pyx_XDECREF(__pyx_t_2); __pyx_t_2 = 0;
+      __Pyx_GOTREF(__pyx_t_1);
+      __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
+    } else
+    #endif
+    {
+      __pyx_t_4 = PyTuple_New(1+1); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 69, __pyx_L1_error)
+      __Pyx_GOTREF(__pyx_t_4);
+      __Pyx_GIVEREF(__pyx_t_2); PyTuple_SET_ITEM(__pyx_t_4, 0, __pyx_t_2); __pyx_t_2 = NULL;
+      __Pyx_GIVEREF(__pyx_t_5);
+      PyTuple_SET_ITEM(__pyx_t_4, 0+1, __pyx_t_5);
+      __pyx_t_5 = 0;
+      __pyx_t_1 = __Pyx_PyObject_Call(__pyx_t_3, __pyx_t_4, NULL); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 69, __pyx_L1_error)
+      __Pyx_GOTREF(__pyx_t_1);
+      __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
+    }
+  }
+  __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
+  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
+
 070: 
+
+071:     def IncrementCameraCoordY(self,Amount):
+
/* Python wrapper */
+static PyObject *__pyx_pw_6CAStar_19AATC_Monitor_Viewer_6Camera_11IncrementCameraCoordY(PyObject *__pyx_self, PyObject *__pyx_args, PyObject *__pyx_kwds); /*proto*/
+static PyMethodDef __pyx_mdef_6CAStar_19AATC_Monitor_Viewer_6Camera_11IncrementCameraCoordY = {"IncrementCameraCoordY", (PyCFunction)__pyx_pw_6CAStar_19AATC_Monitor_Viewer_6Camera_11IncrementCameraCoordY, METH_VARARGS|METH_KEYWORDS, 0};
+static PyObject *__pyx_pw_6CAStar_19AATC_Monitor_Viewer_6Camera_11IncrementCameraCoordY(PyObject *__pyx_self, PyObject *__pyx_args, PyObject *__pyx_kwds) {
+  PyObject *__pyx_v_self = 0;
+  PyObject *__pyx_v_Amount = 0;
+  PyObject *__pyx_r = 0;
+  __Pyx_RefNannyDeclarations
+  __Pyx_RefNannySetupContext("IncrementCameraCoordY (wrapper)", 0);
+  {
+    static PyObject **__pyx_pyargnames[] = {&__pyx_n_s_self,&__pyx_n_s_Amount,0};
+    PyObject* values[2] = {0,0};
+    if (unlikely(__pyx_kwds)) {
+      Py_ssize_t kw_args;
+      const Py_ssize_t pos_args = PyTuple_GET_SIZE(__pyx_args);
+      switch (pos_args) {
+        case  2: values[1] = PyTuple_GET_ITEM(__pyx_args, 1);
+        CYTHON_FALLTHROUGH;
+        case  1: values[0] = PyTuple_GET_ITEM(__pyx_args, 0);
+        CYTHON_FALLTHROUGH;
+        case  0: break;
+        default: goto __pyx_L5_argtuple_error;
+      }
+      kw_args = PyDict_Size(__pyx_kwds);
+      switch (pos_args) {
+        case  0:
+        if (likely((values[0] = PyDict_GetItem(__pyx_kwds, __pyx_n_s_self)) != 0)) kw_args--;
+        else goto __pyx_L5_argtuple_error;
+        CYTHON_FALLTHROUGH;
+        case  1:
+        if (likely((values[1] = PyDict_GetItem(__pyx_kwds, __pyx_n_s_Amount)) != 0)) kw_args--;
+        else {
+          __Pyx_RaiseArgtupleInvalid("IncrementCameraCoordY", 1, 2, 2, 1); __PYX_ERR(0, 71, __pyx_L3_error)
+        }
+      }
+      if (unlikely(kw_args > 0)) {
+        if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_pyargnames, 0, values, pos_args, "IncrementCameraCoordY") < 0)) __PYX_ERR(0, 71, __pyx_L3_error)
+      }
+    } else if (PyTuple_GET_SIZE(__pyx_args) != 2) {
+      goto __pyx_L5_argtuple_error;
+    } else {
+      values[0] = PyTuple_GET_ITEM(__pyx_args, 0);
+      values[1] = PyTuple_GET_ITEM(__pyx_args, 1);
+    }
+    __pyx_v_self = values[0];
+    __pyx_v_Amount = values[1];
+  }
+  goto __pyx_L4_argument_unpacking_done;
+  __pyx_L5_argtuple_error:;
+  __Pyx_RaiseArgtupleInvalid("IncrementCameraCoordY", 1, 2, 2, PyTuple_GET_SIZE(__pyx_args)); __PYX_ERR(0, 71, __pyx_L3_error)
+  __pyx_L3_error:;
+  __Pyx_AddTraceback("CAStar.AATC_Monitor_Viewer.Camera.IncrementCameraCoordY", __pyx_clineno, __pyx_lineno, __pyx_filename);
+  __Pyx_RefNannyFinishContext();
+  return NULL;
+  __pyx_L4_argument_unpacking_done:;
+  __pyx_r = __pyx_pf_6CAStar_19AATC_Monitor_Viewer_6Camera_10IncrementCameraCoordY(__pyx_self, __pyx_v_self, __pyx_v_Amount);
+
+  /* function exit code */
+  __Pyx_RefNannyFinishContext();
+  return __pyx_r;
+}
+
+static PyObject *__pyx_pf_6CAStar_19AATC_Monitor_Viewer_6Camera_10IncrementCameraCoordY(CYTHON_UNUSED PyObject *__pyx_self, PyObject *__pyx_v_self, PyObject *__pyx_v_Amount) {
+  PyObject *__pyx_r = NULL;
+  __Pyx_RefNannyDeclarations
+  __Pyx_RefNannySetupContext("IncrementCameraCoordY", 0);
+/* … */
+  /* function exit code */
+  __pyx_r = Py_None; __Pyx_INCREF(Py_None);
+  goto __pyx_L0;
+  __pyx_L1_error:;
+  __Pyx_XDECREF(__pyx_t_1);
+  __Pyx_XDECREF(__pyx_t_2);
+  __Pyx_XDECREF(__pyx_t_3);
+  __Pyx_XDECREF(__pyx_t_4);
+  __Pyx_XDECREF(__pyx_t_5);
+  __Pyx_AddTraceback("CAStar.AATC_Monitor_Viewer.Camera.IncrementCameraCoordY", __pyx_clineno, __pyx_lineno, __pyx_filename);
+  __pyx_r = NULL;
+  __pyx_L0:;
+  __Pyx_XGIVEREF(__pyx_r);
+  __Pyx_RefNannyFinishContext();
+  return __pyx_r;
+}
+/* … */
+  __pyx_tuple__43 = PyTuple_Pack(2, __pyx_n_s_self, __pyx_n_s_Amount); if (unlikely(!__pyx_tuple__43)) __PYX_ERR(0, 71, __pyx_L1_error)
+  __Pyx_GOTREF(__pyx_tuple__43);
+  __Pyx_GIVEREF(__pyx_tuple__43);
+/* … */
+  __pyx_t_3 = __Pyx_CyFunction_NewEx(&__pyx_mdef_6CAStar_19AATC_Monitor_Viewer_6Camera_11IncrementCameraCoordY, 0, __pyx_n_s_Camera_IncrementCameraCoordY, NULL, __pyx_n_s_CAStar_AATC_Monitor_Viewer, __pyx_d, ((PyObject *)__pyx_codeobj__44)); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 71, __pyx_L1_error)
+  __Pyx_GOTREF(__pyx_t_3);
+  if (PyObject_SetItem(__pyx_t_1, __pyx_n_s_IncrementCameraCoordY, __pyx_t_3) < 0) __PYX_ERR(0, 71, __pyx_L1_error)
+  __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
+  __pyx_codeobj__44 = (PyObject*)__Pyx_PyCode_New(2, 0, 2, 0, 0, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__43, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_AATC_Monitor_Viewer_pyx, __pyx_n_s_IncrementCameraCoordY, 71, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__44)) __PYX_ERR(0, 71, __pyx_L1_error)
+
+072:         self.CameraCoord.Set_Y( Amount+self.CameraCoord.Get_Y())
+
  __pyx_t_2 = __Pyx_PyObject_GetAttrStr(__pyx_v_self, __pyx_n_s_CameraCoord); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 72, __pyx_L1_error)
+  __Pyx_GOTREF(__pyx_t_2);
+  __pyx_t_3 = __Pyx_PyObject_GetAttrStr(__pyx_t_2, __pyx_n_s_Set_Y); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 72, __pyx_L1_error)
+  __Pyx_GOTREF(__pyx_t_3);
+  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
+  __pyx_t_4 = __Pyx_PyObject_GetAttrStr(__pyx_v_self, __pyx_n_s_CameraCoord); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 72, __pyx_L1_error)
+  __Pyx_GOTREF(__pyx_t_4);
+  __pyx_t_5 = __Pyx_PyObject_GetAttrStr(__pyx_t_4, __pyx_n_s_Get_Y); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 72, __pyx_L1_error)
+  __Pyx_GOTREF(__pyx_t_5);
+  __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
+  __pyx_t_4 = NULL;
+  if (CYTHON_UNPACK_METHODS && likely(PyMethod_Check(__pyx_t_5))) {
+    __pyx_t_4 = PyMethod_GET_SELF(__pyx_t_5);
+    if (likely(__pyx_t_4)) {
+      PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_5);
+      __Pyx_INCREF(__pyx_t_4);
+      __Pyx_INCREF(function);
+      __Pyx_DECREF_SET(__pyx_t_5, function);
+    }
+  }
+  if (__pyx_t_4) {
+    __pyx_t_2 = __Pyx_PyObject_CallOneArg(__pyx_t_5, __pyx_t_4); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 72, __pyx_L1_error)
+    __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
+  } else {
+    __pyx_t_2 = __Pyx_PyObject_CallNoArg(__pyx_t_5); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 72, __pyx_L1_error)
+  }
+  __Pyx_GOTREF(__pyx_t_2);
+  __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
+  __pyx_t_5 = PyNumber_Add(__pyx_v_Amount, __pyx_t_2); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 72, __pyx_L1_error)
+  __Pyx_GOTREF(__pyx_t_5);
+  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
+  __pyx_t_2 = NULL;
+  if (CYTHON_UNPACK_METHODS && likely(PyMethod_Check(__pyx_t_3))) {
+    __pyx_t_2 = PyMethod_GET_SELF(__pyx_t_3);
+    if (likely(__pyx_t_2)) {
+      PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_3);
+      __Pyx_INCREF(__pyx_t_2);
+      __Pyx_INCREF(function);
+      __Pyx_DECREF_SET(__pyx_t_3, function);
+    }
+  }
+  if (!__pyx_t_2) {
+    __pyx_t_1 = __Pyx_PyObject_CallOneArg(__pyx_t_3, __pyx_t_5); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 72, __pyx_L1_error)
+    __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
+    __Pyx_GOTREF(__pyx_t_1);
+  } else {
+    #if CYTHON_FAST_PYCALL
+    if (PyFunction_Check(__pyx_t_3)) {
+      PyObject *__pyx_temp[2] = {__pyx_t_2, __pyx_t_5};
+      __pyx_t_1 = __Pyx_PyFunction_FastCall(__pyx_t_3, __pyx_temp+1-1, 1+1); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 72, __pyx_L1_error)
+      __Pyx_XDECREF(__pyx_t_2); __pyx_t_2 = 0;
+      __Pyx_GOTREF(__pyx_t_1);
+      __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
+    } else
+    #endif
+    #if CYTHON_FAST_PYCCALL
+    if (__Pyx_PyFastCFunction_Check(__pyx_t_3)) {
+      PyObject *__pyx_temp[2] = {__pyx_t_2, __pyx_t_5};
+      __pyx_t_1 = __Pyx_PyCFunction_FastCall(__pyx_t_3, __pyx_temp+1-1, 1+1); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 72, __pyx_L1_error)
+      __Pyx_XDECREF(__pyx_t_2); __pyx_t_2 = 0;
+      __Pyx_GOTREF(__pyx_t_1);
+      __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
+    } else
+    #endif
+    {
+      __pyx_t_4 = PyTuple_New(1+1); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 72, __pyx_L1_error)
+      __Pyx_GOTREF(__pyx_t_4);
+      __Pyx_GIVEREF(__pyx_t_2); PyTuple_SET_ITEM(__pyx_t_4, 0, __pyx_t_2); __pyx_t_2 = NULL;
+      __Pyx_GIVEREF(__pyx_t_5);
+      PyTuple_SET_ITEM(__pyx_t_4, 0+1, __pyx_t_5);
+      __pyx_t_5 = 0;
+      __pyx_t_1 = __Pyx_PyObject_Call(__pyx_t_3, __pyx_t_4, NULL); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 72, __pyx_L1_error)
+      __Pyx_GOTREF(__pyx_t_1);
+      __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
+    }
+  }
+  __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
+  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
+
 073: 
+
+074:     def SetCameraCoords(self,CameraX,CameraY):
+
/* Python wrapper */
+static PyObject *__pyx_pw_6CAStar_19AATC_Monitor_Viewer_6Camera_13SetCameraCoords(PyObject *__pyx_self, PyObject *__pyx_args, PyObject *__pyx_kwds); /*proto*/
+static PyMethodDef __pyx_mdef_6CAStar_19AATC_Monitor_Viewer_6Camera_13SetCameraCoords = {"SetCameraCoords", (PyCFunction)__pyx_pw_6CAStar_19AATC_Monitor_Viewer_6Camera_13SetCameraCoords, METH_VARARGS|METH_KEYWORDS, 0};
+static PyObject *__pyx_pw_6CAStar_19AATC_Monitor_Viewer_6Camera_13SetCameraCoords(PyObject *__pyx_self, PyObject *__pyx_args, PyObject *__pyx_kwds) {
+  PyObject *__pyx_v_self = 0;
+  PyObject *__pyx_v_CameraX = 0;
+  PyObject *__pyx_v_CameraY = 0;
+  PyObject *__pyx_r = 0;
+  __Pyx_RefNannyDeclarations
+  __Pyx_RefNannySetupContext("SetCameraCoords (wrapper)", 0);
+  {
+    static PyObject **__pyx_pyargnames[] = {&__pyx_n_s_self,&__pyx_n_s_CameraX,&__pyx_n_s_CameraY,0};
+    PyObject* values[3] = {0,0,0};
+    if (unlikely(__pyx_kwds)) {
+      Py_ssize_t kw_args;
+      const Py_ssize_t pos_args = PyTuple_GET_SIZE(__pyx_args);
+      switch (pos_args) {
+        case  3: values[2] = PyTuple_GET_ITEM(__pyx_args, 2);
+        CYTHON_FALLTHROUGH;
+        case  2: values[1] = PyTuple_GET_ITEM(__pyx_args, 1);
+        CYTHON_FALLTHROUGH;
+        case  1: values[0] = PyTuple_GET_ITEM(__pyx_args, 0);
+        CYTHON_FALLTHROUGH;
+        case  0: break;
+        default: goto __pyx_L5_argtuple_error;
+      }
+      kw_args = PyDict_Size(__pyx_kwds);
+      switch (pos_args) {
+        case  0:
+        if (likely((values[0] = PyDict_GetItem(__pyx_kwds, __pyx_n_s_self)) != 0)) kw_args--;
+        else goto __pyx_L5_argtuple_error;
+        CYTHON_FALLTHROUGH;
+        case  1:
+        if (likely((values[1] = PyDict_GetItem(__pyx_kwds, __pyx_n_s_CameraX)) != 0)) kw_args--;
+        else {
+          __Pyx_RaiseArgtupleInvalid("SetCameraCoords", 1, 3, 3, 1); __PYX_ERR(0, 74, __pyx_L3_error)
+        }
+        CYTHON_FALLTHROUGH;
+        case  2:
+        if (likely((values[2] = PyDict_GetItem(__pyx_kwds, __pyx_n_s_CameraY)) != 0)) kw_args--;
+        else {
+          __Pyx_RaiseArgtupleInvalid("SetCameraCoords", 1, 3, 3, 2); __PYX_ERR(0, 74, __pyx_L3_error)
+        }
+      }
+      if (unlikely(kw_args > 0)) {
+        if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_pyargnames, 0, values, pos_args, "SetCameraCoords") < 0)) __PYX_ERR(0, 74, __pyx_L3_error)
+      }
+    } else if (PyTuple_GET_SIZE(__pyx_args) != 3) {
+      goto __pyx_L5_argtuple_error;
+    } else {
+      values[0] = PyTuple_GET_ITEM(__pyx_args, 0);
+      values[1] = PyTuple_GET_ITEM(__pyx_args, 1);
+      values[2] = PyTuple_GET_ITEM(__pyx_args, 2);
+    }
+    __pyx_v_self = values[0];
+    __pyx_v_CameraX = values[1];
+    __pyx_v_CameraY = values[2];
+  }
+  goto __pyx_L4_argument_unpacking_done;
+  __pyx_L5_argtuple_error:;
+  __Pyx_RaiseArgtupleInvalid("SetCameraCoords", 1, 3, 3, PyTuple_GET_SIZE(__pyx_args)); __PYX_ERR(0, 74, __pyx_L3_error)
+  __pyx_L3_error:;
+  __Pyx_AddTraceback("CAStar.AATC_Monitor_Viewer.Camera.SetCameraCoords", __pyx_clineno, __pyx_lineno, __pyx_filename);
+  __Pyx_RefNannyFinishContext();
+  return NULL;
+  __pyx_L4_argument_unpacking_done:;
+  __pyx_r = __pyx_pf_6CAStar_19AATC_Monitor_Viewer_6Camera_12SetCameraCoords(__pyx_self, __pyx_v_self, __pyx_v_CameraX, __pyx_v_CameraY);
+
+  /* function exit code */
+  __Pyx_RefNannyFinishContext();
+  return __pyx_r;
+}
+
+static PyObject *__pyx_pf_6CAStar_19AATC_Monitor_Viewer_6Camera_12SetCameraCoords(CYTHON_UNUSED PyObject *__pyx_self, PyObject *__pyx_v_self, PyObject *__pyx_v_CameraX, PyObject *__pyx_v_CameraY) {
+  PyObject *__pyx_r = NULL;
+  __Pyx_RefNannyDeclarations
+  __Pyx_RefNannySetupContext("SetCameraCoords", 0);
+/* … */
+  /* function exit code */
+  __pyx_r = Py_None; __Pyx_INCREF(Py_None);
+  goto __pyx_L0;
+  __pyx_L1_error:;
+  __Pyx_XDECREF(__pyx_t_1);
+  __Pyx_XDECREF(__pyx_t_2);
+  __Pyx_XDECREF(__pyx_t_3);
+  __Pyx_XDECREF(__pyx_t_4);
+  __Pyx_AddTraceback("CAStar.AATC_Monitor_Viewer.Camera.SetCameraCoords", __pyx_clineno, __pyx_lineno, __pyx_filename);
+  __pyx_r = NULL;
+  __pyx_L0:;
+  __Pyx_XGIVEREF(__pyx_r);
+  __Pyx_RefNannyFinishContext();
+  return __pyx_r;
+}
+/* … */
+  __pyx_tuple__45 = PyTuple_Pack(3, __pyx_n_s_self, __pyx_n_s_CameraX, __pyx_n_s_CameraY); if (unlikely(!__pyx_tuple__45)) __PYX_ERR(0, 74, __pyx_L1_error)
+  __Pyx_GOTREF(__pyx_tuple__45);
+  __Pyx_GIVEREF(__pyx_tuple__45);
+/* … */
+  __pyx_t_3 = __Pyx_CyFunction_NewEx(&__pyx_mdef_6CAStar_19AATC_Monitor_Viewer_6Camera_13SetCameraCoords, 0, __pyx_n_s_Camera_SetCameraCoords, NULL, __pyx_n_s_CAStar_AATC_Monitor_Viewer, __pyx_d, ((PyObject *)__pyx_codeobj__46)); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 74, __pyx_L1_error)
+  __Pyx_GOTREF(__pyx_t_3);
+  if (PyObject_SetItem(__pyx_t_1, __pyx_n_s_SetCameraCoords, __pyx_t_3) < 0) __PYX_ERR(0, 74, __pyx_L1_error)
+  __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
+  __pyx_codeobj__46 = (PyObject*)__Pyx_PyCode_New(3, 0, 3, 0, 0, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__45, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_AATC_Monitor_Viewer_pyx, __pyx_n_s_SetCameraCoords, 74, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__46)) __PYX_ERR(0, 74, __pyx_L1_error)
+
+075:         self.CameraCoord.Set_X( CameraX)
+
  __pyx_t_2 = __Pyx_PyObject_GetAttrStr(__pyx_v_self, __pyx_n_s_CameraCoord); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 75, __pyx_L1_error)
+  __Pyx_GOTREF(__pyx_t_2);
+  __pyx_t_3 = __Pyx_PyObject_GetAttrStr(__pyx_t_2, __pyx_n_s_Set_X); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 75, __pyx_L1_error)
+  __Pyx_GOTREF(__pyx_t_3);
+  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
+  __pyx_t_2 = NULL;
+  if (CYTHON_UNPACK_METHODS && likely(PyMethod_Check(__pyx_t_3))) {
+    __pyx_t_2 = PyMethod_GET_SELF(__pyx_t_3);
+    if (likely(__pyx_t_2)) {
+      PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_3);
+      __Pyx_INCREF(__pyx_t_2);
+      __Pyx_INCREF(function);
+      __Pyx_DECREF_SET(__pyx_t_3, function);
+    }
+  }
+  if (!__pyx_t_2) {
+    __pyx_t_1 = __Pyx_PyObject_CallOneArg(__pyx_t_3, __pyx_v_CameraX); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 75, __pyx_L1_error)
+    __Pyx_GOTREF(__pyx_t_1);
+  } else {
+    #if CYTHON_FAST_PYCALL
+    if (PyFunction_Check(__pyx_t_3)) {
+      PyObject *__pyx_temp[2] = {__pyx_t_2, __pyx_v_CameraX};
+      __pyx_t_1 = __Pyx_PyFunction_FastCall(__pyx_t_3, __pyx_temp+1-1, 1+1); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 75, __pyx_L1_error)
+      __Pyx_XDECREF(__pyx_t_2); __pyx_t_2 = 0;
+      __Pyx_GOTREF(__pyx_t_1);
+    } else
+    #endif
+    #if CYTHON_FAST_PYCCALL
+    if (__Pyx_PyFastCFunction_Check(__pyx_t_3)) {
+      PyObject *__pyx_temp[2] = {__pyx_t_2, __pyx_v_CameraX};
+      __pyx_t_1 = __Pyx_PyCFunction_FastCall(__pyx_t_3, __pyx_temp+1-1, 1+1); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 75, __pyx_L1_error)
+      __Pyx_XDECREF(__pyx_t_2); __pyx_t_2 = 0;
+      __Pyx_GOTREF(__pyx_t_1);
+    } else
+    #endif
+    {
+      __pyx_t_4 = PyTuple_New(1+1); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 75, __pyx_L1_error)
+      __Pyx_GOTREF(__pyx_t_4);
+      __Pyx_GIVEREF(__pyx_t_2); PyTuple_SET_ITEM(__pyx_t_4, 0, __pyx_t_2); __pyx_t_2 = NULL;
+      __Pyx_INCREF(__pyx_v_CameraX);
+      __Pyx_GIVEREF(__pyx_v_CameraX);
+      PyTuple_SET_ITEM(__pyx_t_4, 0+1, __pyx_v_CameraX);
+      __pyx_t_1 = __Pyx_PyObject_Call(__pyx_t_3, __pyx_t_4, NULL); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 75, __pyx_L1_error)
+      __Pyx_GOTREF(__pyx_t_1);
+      __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
+    }
+  }
+  __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
+  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
+
+076:         self.CameraCoord.Set_Y(CameraY)
+
  __pyx_t_3 = __Pyx_PyObject_GetAttrStr(__pyx_v_self, __pyx_n_s_CameraCoord); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 76, __pyx_L1_error)
+  __Pyx_GOTREF(__pyx_t_3);
+  __pyx_t_4 = __Pyx_PyObject_GetAttrStr(__pyx_t_3, __pyx_n_s_Set_Y); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 76, __pyx_L1_error)
+  __Pyx_GOTREF(__pyx_t_4);
+  __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
+  __pyx_t_3 = NULL;
+  if (CYTHON_UNPACK_METHODS && likely(PyMethod_Check(__pyx_t_4))) {
+    __pyx_t_3 = PyMethod_GET_SELF(__pyx_t_4);
+    if (likely(__pyx_t_3)) {
+      PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_4);
+      __Pyx_INCREF(__pyx_t_3);
+      __Pyx_INCREF(function);
+      __Pyx_DECREF_SET(__pyx_t_4, function);
+    }
+  }
+  if (!__pyx_t_3) {
+    __pyx_t_1 = __Pyx_PyObject_CallOneArg(__pyx_t_4, __pyx_v_CameraY); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 76, __pyx_L1_error)
+    __Pyx_GOTREF(__pyx_t_1);
+  } else {
+    #if CYTHON_FAST_PYCALL
+    if (PyFunction_Check(__pyx_t_4)) {
+      PyObject *__pyx_temp[2] = {__pyx_t_3, __pyx_v_CameraY};
+      __pyx_t_1 = __Pyx_PyFunction_FastCall(__pyx_t_4, __pyx_temp+1-1, 1+1); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 76, __pyx_L1_error)
+      __Pyx_XDECREF(__pyx_t_3); __pyx_t_3 = 0;
+      __Pyx_GOTREF(__pyx_t_1);
+    } else
+    #endif
+    #if CYTHON_FAST_PYCCALL
+    if (__Pyx_PyFastCFunction_Check(__pyx_t_4)) {
+      PyObject *__pyx_temp[2] = {__pyx_t_3, __pyx_v_CameraY};
+      __pyx_t_1 = __Pyx_PyCFunction_FastCall(__pyx_t_4, __pyx_temp+1-1, 1+1); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 76, __pyx_L1_error)
+      __Pyx_XDECREF(__pyx_t_3); __pyx_t_3 = 0;
+      __Pyx_GOTREF(__pyx_t_1);
+    } else
+    #endif
+    {
+      __pyx_t_2 = PyTuple_New(1+1); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 76, __pyx_L1_error)
+      __Pyx_GOTREF(__pyx_t_2);
+      __Pyx_GIVEREF(__pyx_t_3); PyTuple_SET_ITEM(__pyx_t_2, 0, __pyx_t_3); __pyx_t_3 = NULL;
+      __Pyx_INCREF(__pyx_v_CameraY);
+      __Pyx_GIVEREF(__pyx_v_CameraY);
+      PyTuple_SET_ITEM(__pyx_t_2, 0+1, __pyx_v_CameraY);
+      __pyx_t_1 = __Pyx_PyObject_Call(__pyx_t_4, __pyx_t_2, NULL); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 76, __pyx_L1_error)
+      __Pyx_GOTREF(__pyx_t_1);
+      __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
+    }
+  }
+  __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
+  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
+
 077: 
+
+078:     def UpdateCameraSize(self):  #Gets width of map divided by zoom level eg at zoom 1x it has whole map
+
/* Python wrapper */
+static PyObject *__pyx_pw_6CAStar_19AATC_Monitor_Viewer_6Camera_15UpdateCameraSize(PyObject *__pyx_self, PyObject *__pyx_v_self); /*proto*/
+static PyMethodDef __pyx_mdef_6CAStar_19AATC_Monitor_Viewer_6Camera_15UpdateCameraSize = {"UpdateCameraSize", (PyCFunction)__pyx_pw_6CAStar_19AATC_Monitor_Viewer_6Camera_15UpdateCameraSize, METH_O, 0};
+static PyObject *__pyx_pw_6CAStar_19AATC_Monitor_Viewer_6Camera_15UpdateCameraSize(PyObject *__pyx_self, PyObject *__pyx_v_self) {
+  PyObject *__pyx_r = 0;
+  __Pyx_RefNannyDeclarations
+  __Pyx_RefNannySetupContext("UpdateCameraSize (wrapper)", 0);
+  __pyx_r = __pyx_pf_6CAStar_19AATC_Monitor_Viewer_6Camera_14UpdateCameraSize(__pyx_self, ((PyObject *)__pyx_v_self));
+
+  /* function exit code */
+  __Pyx_RefNannyFinishContext();
+  return __pyx_r;
+}
+
+static PyObject *__pyx_pf_6CAStar_19AATC_Monitor_Viewer_6Camera_14UpdateCameraSize(CYTHON_UNUSED PyObject *__pyx_self, PyObject *__pyx_v_self) {
+  PyObject *__pyx_r = NULL;
+  __Pyx_RefNannyDeclarations
+  __Pyx_RefNannySetupContext("UpdateCameraSize", 0);
+/* … */
+  /* function exit code */
+  __pyx_r = Py_None; __Pyx_INCREF(Py_None);
+  goto __pyx_L0;
+  __pyx_L1_error:;
+  __Pyx_XDECREF(__pyx_t_1);
+  __Pyx_XDECREF(__pyx_t_2);
+  __Pyx_XDECREF(__pyx_t_3);
+  __Pyx_XDECREF(__pyx_t_4);
+  __Pyx_XDECREF(__pyx_t_5);
+  __Pyx_XDECREF(__pyx_t_6);
+  __Pyx_AddTraceback("CAStar.AATC_Monitor_Viewer.Camera.UpdateCameraSize", __pyx_clineno, __pyx_lineno, __pyx_filename);
+  __pyx_r = NULL;
+  __pyx_L0:;
+  __Pyx_XGIVEREF(__pyx_r);
+  __Pyx_RefNannyFinishContext();
+  return __pyx_r;
+}
+/* … */
+  __pyx_tuple__47 = PyTuple_Pack(1, __pyx_n_s_self); if (unlikely(!__pyx_tuple__47)) __PYX_ERR(0, 78, __pyx_L1_error)
+  __Pyx_GOTREF(__pyx_tuple__47);
+  __Pyx_GIVEREF(__pyx_tuple__47);
+/* … */
+  __pyx_t_3 = __Pyx_CyFunction_NewEx(&__pyx_mdef_6CAStar_19AATC_Monitor_Viewer_6Camera_15UpdateCameraSize, 0, __pyx_n_s_Camera_UpdateCameraSize, NULL, __pyx_n_s_CAStar_AATC_Monitor_Viewer, __pyx_d, ((PyObject *)__pyx_codeobj__48)); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 78, __pyx_L1_error)
+  __Pyx_GOTREF(__pyx_t_3);
+  if (PyObject_SetItem(__pyx_t_1, __pyx_n_s_UpdateCameraSize, __pyx_t_3) < 0) __PYX_ERR(0, 78, __pyx_L1_error)
+  __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
+  __pyx_codeobj__48 = (PyObject*)__Pyx_PyCode_New(1, 0, 1, 0, 0, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__47, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_AATC_Monitor_Viewer_pyx, __pyx_n_s_UpdateCameraSize, 78, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__48)) __PYX_ERR(0, 78, __pyx_L1_error)
+
+079:         self.CameraCoord.Set_XSize ((self.MaxCoords.Get_X() - self.MinCoords.Get_X())/self.CameraZoom)
+
  __pyx_t_2 = __Pyx_PyObject_GetAttrStr(__pyx_v_self, __pyx_n_s_CameraCoord); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 79, __pyx_L1_error)
+  __Pyx_GOTREF(__pyx_t_2);
+  __pyx_t_3 = __Pyx_PyObject_GetAttrStr(__pyx_t_2, __pyx_n_s_Set_XSize); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 79, __pyx_L1_error)
+  __Pyx_GOTREF(__pyx_t_3);
+  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
+  __pyx_t_4 = __Pyx_PyObject_GetAttrStr(__pyx_v_self, __pyx_n_s_MaxCoords); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 79, __pyx_L1_error)
+  __Pyx_GOTREF(__pyx_t_4);
+  __pyx_t_5 = __Pyx_PyObject_GetAttrStr(__pyx_t_4, __pyx_n_s_Get_X); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 79, __pyx_L1_error)
+  __Pyx_GOTREF(__pyx_t_5);
+  __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
+  __pyx_t_4 = NULL;
+  if (CYTHON_UNPACK_METHODS && likely(PyMethod_Check(__pyx_t_5))) {
+    __pyx_t_4 = PyMethod_GET_SELF(__pyx_t_5);
+    if (likely(__pyx_t_4)) {
+      PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_5);
+      __Pyx_INCREF(__pyx_t_4);
+      __Pyx_INCREF(function);
+      __Pyx_DECREF_SET(__pyx_t_5, function);
+    }
+  }
+  if (__pyx_t_4) {
+    __pyx_t_2 = __Pyx_PyObject_CallOneArg(__pyx_t_5, __pyx_t_4); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 79, __pyx_L1_error)
+    __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
+  } else {
+    __pyx_t_2 = __Pyx_PyObject_CallNoArg(__pyx_t_5); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 79, __pyx_L1_error)
+  }
+  __Pyx_GOTREF(__pyx_t_2);
+  __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
+  __pyx_t_4 = __Pyx_PyObject_GetAttrStr(__pyx_v_self, __pyx_n_s_MinCoords); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 79, __pyx_L1_error)
+  __Pyx_GOTREF(__pyx_t_4);
+  __pyx_t_6 = __Pyx_PyObject_GetAttrStr(__pyx_t_4, __pyx_n_s_Get_X); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 79, __pyx_L1_error)
+  __Pyx_GOTREF(__pyx_t_6);
+  __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
+  __pyx_t_4 = NULL;
+  if (CYTHON_UNPACK_METHODS && likely(PyMethod_Check(__pyx_t_6))) {
+    __pyx_t_4 = PyMethod_GET_SELF(__pyx_t_6);
+    if (likely(__pyx_t_4)) {
+      PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_6);
+      __Pyx_INCREF(__pyx_t_4);
+      __Pyx_INCREF(function);
+      __Pyx_DECREF_SET(__pyx_t_6, function);
+    }
+  }
+  if (__pyx_t_4) {
+    __pyx_t_5 = __Pyx_PyObject_CallOneArg(__pyx_t_6, __pyx_t_4); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 79, __pyx_L1_error)
+    __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
+  } else {
+    __pyx_t_5 = __Pyx_PyObject_CallNoArg(__pyx_t_6); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 79, __pyx_L1_error)
+  }
+  __Pyx_GOTREF(__pyx_t_5);
+  __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
+  __pyx_t_6 = PyNumber_Subtract(__pyx_t_2, __pyx_t_5); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 79, __pyx_L1_error)
+  __Pyx_GOTREF(__pyx_t_6);
+  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
+  __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
+  __pyx_t_5 = __Pyx_PyObject_GetAttrStr(__pyx_v_self, __pyx_n_s_CameraZoom); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 79, __pyx_L1_error)
+  __Pyx_GOTREF(__pyx_t_5);
+  __pyx_t_2 = __Pyx_PyNumber_Divide(__pyx_t_6, __pyx_t_5); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 79, __pyx_L1_error)
+  __Pyx_GOTREF(__pyx_t_2);
+  __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
+  __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
+  __pyx_t_5 = NULL;
+  if (CYTHON_UNPACK_METHODS && likely(PyMethod_Check(__pyx_t_3))) {
+    __pyx_t_5 = PyMethod_GET_SELF(__pyx_t_3);
+    if (likely(__pyx_t_5)) {
+      PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_3);
+      __Pyx_INCREF(__pyx_t_5);
+      __Pyx_INCREF(function);
+      __Pyx_DECREF_SET(__pyx_t_3, function);
+    }
+  }
+  if (!__pyx_t_5) {
+    __pyx_t_1 = __Pyx_PyObject_CallOneArg(__pyx_t_3, __pyx_t_2); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 79, __pyx_L1_error)
+    __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
+    __Pyx_GOTREF(__pyx_t_1);
+  } else {
+    #if CYTHON_FAST_PYCALL
+    if (PyFunction_Check(__pyx_t_3)) {
+      PyObject *__pyx_temp[2] = {__pyx_t_5, __pyx_t_2};
+      __pyx_t_1 = __Pyx_PyFunction_FastCall(__pyx_t_3, __pyx_temp+1-1, 1+1); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 79, __pyx_L1_error)
+      __Pyx_XDECREF(__pyx_t_5); __pyx_t_5 = 0;
+      __Pyx_GOTREF(__pyx_t_1);
+      __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
+    } else
+    #endif
+    #if CYTHON_FAST_PYCCALL
+    if (__Pyx_PyFastCFunction_Check(__pyx_t_3)) {
+      PyObject *__pyx_temp[2] = {__pyx_t_5, __pyx_t_2};
+      __pyx_t_1 = __Pyx_PyCFunction_FastCall(__pyx_t_3, __pyx_temp+1-1, 1+1); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 79, __pyx_L1_error)
+      __Pyx_XDECREF(__pyx_t_5); __pyx_t_5 = 0;
+      __Pyx_GOTREF(__pyx_t_1);
+      __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
+    } else
+    #endif
+    {
+      __pyx_t_6 = PyTuple_New(1+1); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 79, __pyx_L1_error)
+      __Pyx_GOTREF(__pyx_t_6);
+      __Pyx_GIVEREF(__pyx_t_5); PyTuple_SET_ITEM(__pyx_t_6, 0, __pyx_t_5); __pyx_t_5 = NULL;
+      __Pyx_GIVEREF(__pyx_t_2);
+      PyTuple_SET_ITEM(__pyx_t_6, 0+1, __pyx_t_2);
+      __pyx_t_2 = 0;
+      __pyx_t_1 = __Pyx_PyObject_Call(__pyx_t_3, __pyx_t_6, NULL); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 79, __pyx_L1_error)
+      __Pyx_GOTREF(__pyx_t_1);
+      __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
+    }
+  }
+  __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
+  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
+
+080:         self.CameraCoord.Set_YSize ((self.MaxCoords.Get_Y() - self.MinCoords.Get_Y())/self.CameraZoom)
+
  __pyx_t_3 = __Pyx_PyObject_GetAttrStr(__pyx_v_self, __pyx_n_s_CameraCoord); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 80, __pyx_L1_error)
+  __Pyx_GOTREF(__pyx_t_3);
+  __pyx_t_6 = __Pyx_PyObject_GetAttrStr(__pyx_t_3, __pyx_n_s_Set_YSize); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 80, __pyx_L1_error)
+  __Pyx_GOTREF(__pyx_t_6);
+  __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
+  __pyx_t_2 = __Pyx_PyObject_GetAttrStr(__pyx_v_self, __pyx_n_s_MaxCoords); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 80, __pyx_L1_error)
+  __Pyx_GOTREF(__pyx_t_2);
+  __pyx_t_5 = __Pyx_PyObject_GetAttrStr(__pyx_t_2, __pyx_n_s_Get_Y); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 80, __pyx_L1_error)
+  __Pyx_GOTREF(__pyx_t_5);
+  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
+  __pyx_t_2 = NULL;
+  if (CYTHON_UNPACK_METHODS && likely(PyMethod_Check(__pyx_t_5))) {
+    __pyx_t_2 = PyMethod_GET_SELF(__pyx_t_5);
+    if (likely(__pyx_t_2)) {
+      PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_5);
+      __Pyx_INCREF(__pyx_t_2);
+      __Pyx_INCREF(function);
+      __Pyx_DECREF_SET(__pyx_t_5, function);
+    }
+  }
+  if (__pyx_t_2) {
+    __pyx_t_3 = __Pyx_PyObject_CallOneArg(__pyx_t_5, __pyx_t_2); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 80, __pyx_L1_error)
+    __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
+  } else {
+    __pyx_t_3 = __Pyx_PyObject_CallNoArg(__pyx_t_5); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 80, __pyx_L1_error)
+  }
+  __Pyx_GOTREF(__pyx_t_3);
+  __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
+  __pyx_t_2 = __Pyx_PyObject_GetAttrStr(__pyx_v_self, __pyx_n_s_MinCoords); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 80, __pyx_L1_error)
+  __Pyx_GOTREF(__pyx_t_2);
+  __pyx_t_4 = __Pyx_PyObject_GetAttrStr(__pyx_t_2, __pyx_n_s_Get_Y); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 80, __pyx_L1_error)
+  __Pyx_GOTREF(__pyx_t_4);
+  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
+  __pyx_t_2 = NULL;
+  if (CYTHON_UNPACK_METHODS && likely(PyMethod_Check(__pyx_t_4))) {
+    __pyx_t_2 = PyMethod_GET_SELF(__pyx_t_4);
+    if (likely(__pyx_t_2)) {
+      PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_4);
+      __Pyx_INCREF(__pyx_t_2);
+      __Pyx_INCREF(function);
+      __Pyx_DECREF_SET(__pyx_t_4, function);
+    }
+  }
+  if (__pyx_t_2) {
+    __pyx_t_5 = __Pyx_PyObject_CallOneArg(__pyx_t_4, __pyx_t_2); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 80, __pyx_L1_error)
+    __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
+  } else {
+    __pyx_t_5 = __Pyx_PyObject_CallNoArg(__pyx_t_4); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 80, __pyx_L1_error)
+  }
+  __Pyx_GOTREF(__pyx_t_5);
+  __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
+  __pyx_t_4 = PyNumber_Subtract(__pyx_t_3, __pyx_t_5); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 80, __pyx_L1_error)
+  __Pyx_GOTREF(__pyx_t_4);
+  __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
+  __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
+  __pyx_t_5 = __Pyx_PyObject_GetAttrStr(__pyx_v_self, __pyx_n_s_CameraZoom); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 80, __pyx_L1_error)
+  __Pyx_GOTREF(__pyx_t_5);
+  __pyx_t_3 = __Pyx_PyNumber_Divide(__pyx_t_4, __pyx_t_5); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 80, __pyx_L1_error)
+  __Pyx_GOTREF(__pyx_t_3);
+  __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
+  __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
+  __pyx_t_5 = NULL;
+  if (CYTHON_UNPACK_METHODS && likely(PyMethod_Check(__pyx_t_6))) {
+    __pyx_t_5 = PyMethod_GET_SELF(__pyx_t_6);
+    if (likely(__pyx_t_5)) {
+      PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_6);
+      __Pyx_INCREF(__pyx_t_5);
+      __Pyx_INCREF(function);
+      __Pyx_DECREF_SET(__pyx_t_6, function);
+    }
+  }
+  if (!__pyx_t_5) {
+    __pyx_t_1 = __Pyx_PyObject_CallOneArg(__pyx_t_6, __pyx_t_3); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 80, __pyx_L1_error)
+    __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
+    __Pyx_GOTREF(__pyx_t_1);
+  } else {
+    #if CYTHON_FAST_PYCALL
+    if (PyFunction_Check(__pyx_t_6)) {
+      PyObject *__pyx_temp[2] = {__pyx_t_5, __pyx_t_3};
+      __pyx_t_1 = __Pyx_PyFunction_FastCall(__pyx_t_6, __pyx_temp+1-1, 1+1); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 80, __pyx_L1_error)
+      __Pyx_XDECREF(__pyx_t_5); __pyx_t_5 = 0;
+      __Pyx_GOTREF(__pyx_t_1);
+      __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
+    } else
+    #endif
+    #if CYTHON_FAST_PYCCALL
+    if (__Pyx_PyFastCFunction_Check(__pyx_t_6)) {
+      PyObject *__pyx_temp[2] = {__pyx_t_5, __pyx_t_3};
+      __pyx_t_1 = __Pyx_PyCFunction_FastCall(__pyx_t_6, __pyx_temp+1-1, 1+1); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 80, __pyx_L1_error)
+      __Pyx_XDECREF(__pyx_t_5); __pyx_t_5 = 0;
+      __Pyx_GOTREF(__pyx_t_1);
+      __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
+    } else
+    #endif
+    {
+      __pyx_t_4 = PyTuple_New(1+1); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 80, __pyx_L1_error)
+      __Pyx_GOTREF(__pyx_t_4);
+      __Pyx_GIVEREF(__pyx_t_5); PyTuple_SET_ITEM(__pyx_t_4, 0, __pyx_t_5); __pyx_t_5 = NULL;
+      __Pyx_GIVEREF(__pyx_t_3);
+      PyTuple_SET_ITEM(__pyx_t_4, 0+1, __pyx_t_3);
+      __pyx_t_3 = 0;
+      __pyx_t_1 = __Pyx_PyObject_Call(__pyx_t_6, __pyx_t_4, NULL); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 80, __pyx_L1_error)
+      __Pyx_GOTREF(__pyx_t_1);
+      __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
+    }
+  }
+  __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
+  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
+
 081: 
+
+082:     def CameraWipe(self,Colour = (0,0,0)):
+
/* Python wrapper */
+static PyObject *__pyx_pw_6CAStar_19AATC_Monitor_Viewer_6Camera_17CameraWipe(PyObject *__pyx_self, PyObject *__pyx_args, PyObject *__pyx_kwds); /*proto*/
+static PyMethodDef __pyx_mdef_6CAStar_19AATC_Monitor_Viewer_6Camera_17CameraWipe = {"CameraWipe", (PyCFunction)__pyx_pw_6CAStar_19AATC_Monitor_Viewer_6Camera_17CameraWipe, METH_VARARGS|METH_KEYWORDS, 0};
+static PyObject *__pyx_pw_6CAStar_19AATC_Monitor_Viewer_6Camera_17CameraWipe(PyObject *__pyx_self, PyObject *__pyx_args, PyObject *__pyx_kwds) {
+  PyObject *__pyx_v_self = 0;
+  PyObject *__pyx_v_Colour = 0;
+  PyObject *__pyx_r = 0;
+  __Pyx_RefNannyDeclarations
+  __Pyx_RefNannySetupContext("CameraWipe (wrapper)", 0);
+  {
+    static PyObject **__pyx_pyargnames[] = {&__pyx_n_s_self,&__pyx_n_s_Colour,0};
+    PyObject* values[2] = {0,0};
+    values[1] = ((PyObject *)((PyObject*)__pyx_tuple_));
+    if (unlikely(__pyx_kwds)) {
+      Py_ssize_t kw_args;
+      const Py_ssize_t pos_args = PyTuple_GET_SIZE(__pyx_args);
+      switch (pos_args) {
+        case  2: values[1] = PyTuple_GET_ITEM(__pyx_args, 1);
+        CYTHON_FALLTHROUGH;
+        case  1: values[0] = PyTuple_GET_ITEM(__pyx_args, 0);
+        CYTHON_FALLTHROUGH;
+        case  0: break;
+        default: goto __pyx_L5_argtuple_error;
+      }
+      kw_args = PyDict_Size(__pyx_kwds);
+      switch (pos_args) {
+        case  0:
+        if (likely((values[0] = PyDict_GetItem(__pyx_kwds, __pyx_n_s_self)) != 0)) kw_args--;
+        else goto __pyx_L5_argtuple_error;
+        CYTHON_FALLTHROUGH;
+        case  1:
+        if (kw_args > 0) {
+          PyObject* value = PyDict_GetItem(__pyx_kwds, __pyx_n_s_Colour);
+          if (value) { values[1] = value; kw_args--; }
+        }
+      }
+      if (unlikely(kw_args > 0)) {
+        if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_pyargnames, 0, values, pos_args, "CameraWipe") < 0)) __PYX_ERR(0, 82, __pyx_L3_error)
+      }
+    } else {
+      switch (PyTuple_GET_SIZE(__pyx_args)) {
+        case  2: values[1] = PyTuple_GET_ITEM(__pyx_args, 1);
+        CYTHON_FALLTHROUGH;
+        case  1: values[0] = PyTuple_GET_ITEM(__pyx_args, 0);
+        break;
+        default: goto __pyx_L5_argtuple_error;
+      }
+    }
+    __pyx_v_self = values[0];
+    __pyx_v_Colour = values[1];
+  }
+  goto __pyx_L4_argument_unpacking_done;
+  __pyx_L5_argtuple_error:;
+  __Pyx_RaiseArgtupleInvalid("CameraWipe", 0, 1, 2, PyTuple_GET_SIZE(__pyx_args)); __PYX_ERR(0, 82, __pyx_L3_error)
+  __pyx_L3_error:;
+  __Pyx_AddTraceback("CAStar.AATC_Monitor_Viewer.Camera.CameraWipe", __pyx_clineno, __pyx_lineno, __pyx_filename);
+  __Pyx_RefNannyFinishContext();
+  return NULL;
+  __pyx_L4_argument_unpacking_done:;
+  __pyx_r = __pyx_pf_6CAStar_19AATC_Monitor_Viewer_6Camera_16CameraWipe(__pyx_self, __pyx_v_self, __pyx_v_Colour);
+
+  /* function exit code */
+  __Pyx_RefNannyFinishContext();
+  return __pyx_r;
+}
+
+static PyObject *__pyx_pf_6CAStar_19AATC_Monitor_Viewer_6Camera_16CameraWipe(CYTHON_UNUSED PyObject *__pyx_self, PyObject *__pyx_v_self, PyObject *__pyx_v_Colour) {
+  PyObject *__pyx_r = NULL;
+  __Pyx_RefNannyDeclarations
+  __Pyx_RefNannySetupContext("CameraWipe", 0);
+/* … */
+  /* function exit code */
+  __pyx_r = Py_None; __Pyx_INCREF(Py_None);
+  goto __pyx_L0;
+  __pyx_L1_error:;
+  __Pyx_XDECREF(__pyx_t_1);
+  __Pyx_XDECREF(__pyx_t_2);
+  __Pyx_XDECREF(__pyx_t_3);
+  __Pyx_XDECREF(__pyx_t_4);
+  __Pyx_AddTraceback("CAStar.AATC_Monitor_Viewer.Camera.CameraWipe", __pyx_clineno, __pyx_lineno, __pyx_filename);
+  __pyx_r = NULL;
+  __pyx_L0:;
+  __Pyx_XGIVEREF(__pyx_r);
+  __Pyx_RefNannyFinishContext();
+  return __pyx_r;
+}
+/* … */
+  __pyx_tuple_ = PyTuple_Pack(3, __pyx_int_0, __pyx_int_0, __pyx_int_0); if (unlikely(!__pyx_tuple_)) __PYX_ERR(0, 82, __pyx_L1_error)
+  __Pyx_GOTREF(__pyx_tuple_);
+  __Pyx_GIVEREF(__pyx_tuple_);
+/* … */
+  __pyx_tuple__49 = PyTuple_Pack(2, __pyx_n_s_self, __pyx_n_s_Colour); if (unlikely(!__pyx_tuple__49)) __PYX_ERR(0, 82, __pyx_L1_error)
+  __Pyx_GOTREF(__pyx_tuple__49);
+  __Pyx_GIVEREF(__pyx_tuple__49);
+  __pyx_codeobj__50 = (PyObject*)__Pyx_PyCode_New(2, 0, 2, 0, 0, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__49, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_AATC_Monitor_Viewer_pyx, __pyx_n_s_CameraWipe, 82, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__50)) __PYX_ERR(0, 82, __pyx_L1_error)
+/* … */
+  __pyx_t_3 = __Pyx_CyFunction_NewEx(&__pyx_mdef_6CAStar_19AATC_Monitor_Viewer_6Camera_17CameraWipe, 0, __pyx_n_s_Camera_CameraWipe, NULL, __pyx_n_s_CAStar_AATC_Monitor_Viewer, __pyx_d, ((PyObject *)__pyx_codeobj__50)); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 82, __pyx_L1_error)
+  __Pyx_GOTREF(__pyx_t_3);
+  __Pyx_CyFunction_SetDefaultsTuple(__pyx_t_3, __pyx_tuple__51);
+  if (PyObject_SetItem(__pyx_t_1, __pyx_n_s_CameraWipe, __pyx_t_3) < 0) __PYX_ERR(0, 82, __pyx_L1_error)
+  __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
+  __pyx_tuple__51 = PyTuple_Pack(1, ((PyObject*)__pyx_tuple_)); if (unlikely(!__pyx_tuple__51)) __PYX_ERR(0, 82, __pyx_L1_error)
+  __Pyx_GOTREF(__pyx_tuple__51);
+  __Pyx_GIVEREF(__pyx_tuple__51);
+
+083:         self.gameDisplay.fill(Colour)
+
  __pyx_t_2 = __Pyx_PyObject_GetAttrStr(__pyx_v_self, __pyx_n_s_gameDisplay); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 83, __pyx_L1_error)
+  __Pyx_GOTREF(__pyx_t_2);
+  __pyx_t_3 = __Pyx_PyObject_GetAttrStr(__pyx_t_2, __pyx_n_s_fill); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 83, __pyx_L1_error)
+  __Pyx_GOTREF(__pyx_t_3);
+  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
+  __pyx_t_2 = NULL;
+  if (CYTHON_UNPACK_METHODS && likely(PyMethod_Check(__pyx_t_3))) {
+    __pyx_t_2 = PyMethod_GET_SELF(__pyx_t_3);
+    if (likely(__pyx_t_2)) {
+      PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_3);
+      __Pyx_INCREF(__pyx_t_2);
+      __Pyx_INCREF(function);
+      __Pyx_DECREF_SET(__pyx_t_3, function);
+    }
+  }
+  if (!__pyx_t_2) {
+    __pyx_t_1 = __Pyx_PyObject_CallOneArg(__pyx_t_3, __pyx_v_Colour); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 83, __pyx_L1_error)
+    __Pyx_GOTREF(__pyx_t_1);
+  } else {
+    #if CYTHON_FAST_PYCALL
+    if (PyFunction_Check(__pyx_t_3)) {
+      PyObject *__pyx_temp[2] = {__pyx_t_2, __pyx_v_Colour};
+      __pyx_t_1 = __Pyx_PyFunction_FastCall(__pyx_t_3, __pyx_temp+1-1, 1+1); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 83, __pyx_L1_error)
+      __Pyx_XDECREF(__pyx_t_2); __pyx_t_2 = 0;
+      __Pyx_GOTREF(__pyx_t_1);
+    } else
+    #endif
+    #if CYTHON_FAST_PYCCALL
+    if (__Pyx_PyFastCFunction_Check(__pyx_t_3)) {
+      PyObject *__pyx_temp[2] = {__pyx_t_2, __pyx_v_Colour};
+      __pyx_t_1 = __Pyx_PyCFunction_FastCall(__pyx_t_3, __pyx_temp+1-1, 1+1); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 83, __pyx_L1_error)
+      __Pyx_XDECREF(__pyx_t_2); __pyx_t_2 = 0;
+      __Pyx_GOTREF(__pyx_t_1);
+    } else
+    #endif
+    {
+      __pyx_t_4 = PyTuple_New(1+1); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 83, __pyx_L1_error)
+      __Pyx_GOTREF(__pyx_t_4);
+      __Pyx_GIVEREF(__pyx_t_2); PyTuple_SET_ITEM(__pyx_t_4, 0, __pyx_t_2); __pyx_t_2 = NULL;
+      __Pyx_INCREF(__pyx_v_Colour);
+      __Pyx_GIVEREF(__pyx_v_Colour);
+      PyTuple_SET_ITEM(__pyx_t_4, 0+1, __pyx_v_Colour);
+      __pyx_t_1 = __Pyx_PyObject_Call(__pyx_t_3, __pyx_t_4, NULL); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 83, __pyx_L1_error)
+      __Pyx_GOTREF(__pyx_t_1);
+      __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
+    }
+  }
+  __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
+  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
+
+084:     def ResetDrawObject(self):
+
/* Python wrapper */
+static PyObject *__pyx_pw_6CAStar_19AATC_Monitor_Viewer_6Camera_19ResetDrawObject(PyObject *__pyx_self, PyObject *__pyx_v_self); /*proto*/
+static PyMethodDef __pyx_mdef_6CAStar_19AATC_Monitor_Viewer_6Camera_19ResetDrawObject = {"ResetDrawObject", (PyCFunction)__pyx_pw_6CAStar_19AATC_Monitor_Viewer_6Camera_19ResetDrawObject, METH_O, 0};
+static PyObject *__pyx_pw_6CAStar_19AATC_Monitor_Viewer_6Camera_19ResetDrawObject(PyObject *__pyx_self, PyObject *__pyx_v_self) {
+  PyObject *__pyx_r = 0;
+  __Pyx_RefNannyDeclarations
+  __Pyx_RefNannySetupContext("ResetDrawObject (wrapper)", 0);
+  __pyx_r = __pyx_pf_6CAStar_19AATC_Monitor_Viewer_6Camera_18ResetDrawObject(__pyx_self, ((PyObject *)__pyx_v_self));
+
+  /* function exit code */
+  __Pyx_RefNannyFinishContext();
+  return __pyx_r;
+}
+
+static PyObject *__pyx_pf_6CAStar_19AATC_Monitor_Viewer_6Camera_18ResetDrawObject(CYTHON_UNUSED PyObject *__pyx_self, PyObject *__pyx_v_self) {
+  PyObject *__pyx_r = NULL;
+  __Pyx_RefNannyDeclarations
+  __Pyx_RefNannySetupContext("ResetDrawObject", 0);
+/* … */
+  /* function exit code */
+  __pyx_r = Py_None; __Pyx_INCREF(Py_None);
+  goto __pyx_L0;
+  __pyx_L1_error:;
+  __Pyx_XDECREF(__pyx_t_1);
+  __Pyx_AddTraceback("CAStar.AATC_Monitor_Viewer.Camera.ResetDrawObject", __pyx_clineno, __pyx_lineno, __pyx_filename);
+  __pyx_r = NULL;
+  __pyx_L0:;
+  __Pyx_XGIVEREF(__pyx_r);
+  __Pyx_RefNannyFinishContext();
+  return __pyx_r;
+}
+/* … */
+  __pyx_tuple__52 = PyTuple_Pack(1, __pyx_n_s_self); if (unlikely(!__pyx_tuple__52)) __PYX_ERR(0, 84, __pyx_L1_error)
+  __Pyx_GOTREF(__pyx_tuple__52);
+  __Pyx_GIVEREF(__pyx_tuple__52);
+/* … */
+  __pyx_t_3 = __Pyx_CyFunction_NewEx(&__pyx_mdef_6CAStar_19AATC_Monitor_Viewer_6Camera_19ResetDrawObject, 0, __pyx_n_s_Camera_ResetDrawObject, NULL, __pyx_n_s_CAStar_AATC_Monitor_Viewer, __pyx_d, ((PyObject *)__pyx_codeobj__53)); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 84, __pyx_L1_error)
+  __Pyx_GOTREF(__pyx_t_3);
+  if (PyObject_SetItem(__pyx_t_1, __pyx_n_s_ResetDrawObject, __pyx_t_3) < 0) __PYX_ERR(0, 84, __pyx_L1_error)
+  __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
+  __pyx_codeobj__53 = (PyObject*)__Pyx_PyCode_New(1, 0, 1, 0, 0, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__52, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_AATC_Monitor_Viewer_pyx, __pyx_n_s_ResetDrawObject, 84, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__53)) __PYX_ERR(0, 84, __pyx_L1_error)
+
+085:         self.DrawObjects = []
+
  __pyx_t_1 = PyList_New(0); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 85, __pyx_L1_error)
+  __Pyx_GOTREF(__pyx_t_1);
+  if (__Pyx_PyObject_SetAttrStr(__pyx_v_self, __pyx_n_s_DrawObjects, __pyx_t_1) < 0) __PYX_ERR(0, 85, __pyx_L1_error)
+  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
+
+086:     def AddDrawObject(self,Object,ForceDraw):
+
/* Python wrapper */
+static PyObject *__pyx_pw_6CAStar_19AATC_Monitor_Viewer_6Camera_21AddDrawObject(PyObject *__pyx_self, PyObject *__pyx_args, PyObject *__pyx_kwds); /*proto*/
+static PyMethodDef __pyx_mdef_6CAStar_19AATC_Monitor_Viewer_6Camera_21AddDrawObject = {"AddDrawObject", (PyCFunction)__pyx_pw_6CAStar_19AATC_Monitor_Viewer_6Camera_21AddDrawObject, METH_VARARGS|METH_KEYWORDS, 0};
+static PyObject *__pyx_pw_6CAStar_19AATC_Monitor_Viewer_6Camera_21AddDrawObject(PyObject *__pyx_self, PyObject *__pyx_args, PyObject *__pyx_kwds) {
+  PyObject *__pyx_v_self = 0;
+  PyObject *__pyx_v_Object = 0;
+  PyObject *__pyx_v_ForceDraw = 0;
+  PyObject *__pyx_r = 0;
+  __Pyx_RefNannyDeclarations
+  __Pyx_RefNannySetupContext("AddDrawObject (wrapper)", 0);
+  {
+    static PyObject **__pyx_pyargnames[] = {&__pyx_n_s_self,&__pyx_n_s_Object,&__pyx_n_s_ForceDraw,0};
+    PyObject* values[3] = {0,0,0};
+    if (unlikely(__pyx_kwds)) {
+      Py_ssize_t kw_args;
+      const Py_ssize_t pos_args = PyTuple_GET_SIZE(__pyx_args);
+      switch (pos_args) {
+        case  3: values[2] = PyTuple_GET_ITEM(__pyx_args, 2);
+        CYTHON_FALLTHROUGH;
+        case  2: values[1] = PyTuple_GET_ITEM(__pyx_args, 1);
+        CYTHON_FALLTHROUGH;
+        case  1: values[0] = PyTuple_GET_ITEM(__pyx_args, 0);
+        CYTHON_FALLTHROUGH;
+        case  0: break;
+        default: goto __pyx_L5_argtuple_error;
+      }
+      kw_args = PyDict_Size(__pyx_kwds);
+      switch (pos_args) {
+        case  0:
+        if (likely((values[0] = PyDict_GetItem(__pyx_kwds, __pyx_n_s_self)) != 0)) kw_args--;
+        else goto __pyx_L5_argtuple_error;
+        CYTHON_FALLTHROUGH;
+        case  1:
+        if (likely((values[1] = PyDict_GetItem(__pyx_kwds, __pyx_n_s_Object)) != 0)) kw_args--;
+        else {
+          __Pyx_RaiseArgtupleInvalid("AddDrawObject", 1, 3, 3, 1); __PYX_ERR(0, 86, __pyx_L3_error)
+        }
+        CYTHON_FALLTHROUGH;
+        case  2:
+        if (likely((values[2] = PyDict_GetItem(__pyx_kwds, __pyx_n_s_ForceDraw)) != 0)) kw_args--;
+        else {
+          __Pyx_RaiseArgtupleInvalid("AddDrawObject", 1, 3, 3, 2); __PYX_ERR(0, 86, __pyx_L3_error)
+        }
+      }
+      if (unlikely(kw_args > 0)) {
+        if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_pyargnames, 0, values, pos_args, "AddDrawObject") < 0)) __PYX_ERR(0, 86, __pyx_L3_error)
+      }
+    } else if (PyTuple_GET_SIZE(__pyx_args) != 3) {
+      goto __pyx_L5_argtuple_error;
+    } else {
+      values[0] = PyTuple_GET_ITEM(__pyx_args, 0);
+      values[1] = PyTuple_GET_ITEM(__pyx_args, 1);
+      values[2] = PyTuple_GET_ITEM(__pyx_args, 2);
+    }
+    __pyx_v_self = values[0];
+    __pyx_v_Object = values[1];
+    __pyx_v_ForceDraw = values[2];
+  }
+  goto __pyx_L4_argument_unpacking_done;
+  __pyx_L5_argtuple_error:;
+  __Pyx_RaiseArgtupleInvalid("AddDrawObject", 1, 3, 3, PyTuple_GET_SIZE(__pyx_args)); __PYX_ERR(0, 86, __pyx_L3_error)
+  __pyx_L3_error:;
+  __Pyx_AddTraceback("CAStar.AATC_Monitor_Viewer.Camera.AddDrawObject", __pyx_clineno, __pyx_lineno, __pyx_filename);
+  __Pyx_RefNannyFinishContext();
+  return NULL;
+  __pyx_L4_argument_unpacking_done:;
+  __pyx_r = __pyx_pf_6CAStar_19AATC_Monitor_Viewer_6Camera_20AddDrawObject(__pyx_self, __pyx_v_self, __pyx_v_Object, __pyx_v_ForceDraw);
+
+  /* function exit code */
+  __Pyx_RefNannyFinishContext();
+  return __pyx_r;
+}
+
+static PyObject *__pyx_pf_6CAStar_19AATC_Monitor_Viewer_6Camera_20AddDrawObject(CYTHON_UNUSED PyObject *__pyx_self, PyObject *__pyx_v_self, PyObject *__pyx_v_Object, PyObject *__pyx_v_ForceDraw) {
+  PyObject *__pyx_r = NULL;
+  __Pyx_RefNannyDeclarations
+  __Pyx_RefNannySetupContext("AddDrawObject", 0);
+/* … */
+  /* function exit code */
+  __pyx_r = Py_None; __Pyx_INCREF(Py_None);
+  goto __pyx_L0;
+  __pyx_L1_error:;
+  __Pyx_XDECREF(__pyx_t_1);
+  __Pyx_XDECREF(__pyx_t_2);
+  __Pyx_AddTraceback("CAStar.AATC_Monitor_Viewer.Camera.AddDrawObject", __pyx_clineno, __pyx_lineno, __pyx_filename);
+  __pyx_r = NULL;
+  __pyx_L0:;
+  __Pyx_XGIVEREF(__pyx_r);
+  __Pyx_RefNannyFinishContext();
+  return __pyx_r;
+}
+/* … */
+  __pyx_tuple__54 = PyTuple_Pack(3, __pyx_n_s_self, __pyx_n_s_Object, __pyx_n_s_ForceDraw); if (unlikely(!__pyx_tuple__54)) __PYX_ERR(0, 86, __pyx_L1_error)
+  __Pyx_GOTREF(__pyx_tuple__54);
+  __Pyx_GIVEREF(__pyx_tuple__54);
+/* … */
+  __pyx_t_3 = __Pyx_CyFunction_NewEx(&__pyx_mdef_6CAStar_19AATC_Monitor_Viewer_6Camera_21AddDrawObject, 0, __pyx_n_s_Camera_AddDrawObject, NULL, __pyx_n_s_CAStar_AATC_Monitor_Viewer, __pyx_d, ((PyObject *)__pyx_codeobj__55)); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 86, __pyx_L1_error)
+  __Pyx_GOTREF(__pyx_t_3);
+  if (PyObject_SetItem(__pyx_t_1, __pyx_n_s_AddDrawObject, __pyx_t_3) < 0) __PYX_ERR(0, 86, __pyx_L1_error)
+  __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
+  __pyx_codeobj__55 = (PyObject*)__Pyx_PyCode_New(3, 0, 3, 0, 0, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__54, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_AATC_Monitor_Viewer_pyx, __pyx_n_s_AddDrawObject, 86, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__55)) __PYX_ERR(0, 86, __pyx_L1_error)
+
+087:         self.DrawObjects.append({"Object":Object,"ForceDraw":ForceDraw})
+
  __pyx_t_1 = __Pyx_PyObject_GetAttrStr(__pyx_v_self, __pyx_n_s_DrawObjects); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 87, __pyx_L1_error)
+  __Pyx_GOTREF(__pyx_t_1);
+  __pyx_t_2 = PyDict_New(); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 87, __pyx_L1_error)
+  __Pyx_GOTREF(__pyx_t_2);
+  if (PyDict_SetItem(__pyx_t_2, __pyx_n_s_Object, __pyx_v_Object) < 0) __PYX_ERR(0, 87, __pyx_L1_error)
+  if (PyDict_SetItem(__pyx_t_2, __pyx_n_s_ForceDraw, __pyx_v_ForceDraw) < 0) __PYX_ERR(0, 87, __pyx_L1_error)
+  __pyx_t_3 = __Pyx_PyObject_Append(__pyx_t_1, __pyx_t_2); if (unlikely(__pyx_t_3 == -1)) __PYX_ERR(0, 87, __pyx_L1_error)
+  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
+  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
+
 088: 
+
+089:     def Get_Coord(self):
+
/* Python wrapper */
+static PyObject *__pyx_pw_6CAStar_19AATC_Monitor_Viewer_6Camera_23Get_Coord(PyObject *__pyx_self, PyObject *__pyx_v_self); /*proto*/
+static PyMethodDef __pyx_mdef_6CAStar_19AATC_Monitor_Viewer_6Camera_23Get_Coord = {"Get_Coord", (PyCFunction)__pyx_pw_6CAStar_19AATC_Monitor_Viewer_6Camera_23Get_Coord, METH_O, 0};
+static PyObject *__pyx_pw_6CAStar_19AATC_Monitor_Viewer_6Camera_23Get_Coord(PyObject *__pyx_self, PyObject *__pyx_v_self) {
+  PyObject *__pyx_r = 0;
+  __Pyx_RefNannyDeclarations
+  __Pyx_RefNannySetupContext("Get_Coord (wrapper)", 0);
+  __pyx_r = __pyx_pf_6CAStar_19AATC_Monitor_Viewer_6Camera_22Get_Coord(__pyx_self, ((PyObject *)__pyx_v_self));
+
+  /* function exit code */
+  __Pyx_RefNannyFinishContext();
+  return __pyx_r;
+}
+
+static PyObject *__pyx_pf_6CAStar_19AATC_Monitor_Viewer_6Camera_22Get_Coord(CYTHON_UNUSED PyObject *__pyx_self, PyObject *__pyx_v_self) {
+  PyObject *__pyx_r = NULL;
+  __Pyx_RefNannyDeclarations
+  __Pyx_RefNannySetupContext("Get_Coord", 0);
+/* … */
+  /* function exit code */
+  __pyx_L1_error:;
+  __Pyx_XDECREF(__pyx_t_1);
+  __Pyx_AddTraceback("CAStar.AATC_Monitor_Viewer.Camera.Get_Coord", __pyx_clineno, __pyx_lineno, __pyx_filename);
+  __pyx_r = NULL;
+  __pyx_L0:;
+  __Pyx_XGIVEREF(__pyx_r);
+  __Pyx_RefNannyFinishContext();
+  return __pyx_r;
+}
+/* … */
+  __pyx_tuple__56 = PyTuple_Pack(1, __pyx_n_s_self); if (unlikely(!__pyx_tuple__56)) __PYX_ERR(0, 89, __pyx_L1_error)
+  __Pyx_GOTREF(__pyx_tuple__56);
+  __Pyx_GIVEREF(__pyx_tuple__56);
+/* … */
+  __pyx_t_3 = __Pyx_CyFunction_NewEx(&__pyx_mdef_6CAStar_19AATC_Monitor_Viewer_6Camera_23Get_Coord, 0, __pyx_n_s_Camera_Get_Coord, NULL, __pyx_n_s_CAStar_AATC_Monitor_Viewer, __pyx_d, ((PyObject *)__pyx_codeobj__57)); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 89, __pyx_L1_error)
+  __Pyx_GOTREF(__pyx_t_3);
+  if (PyObject_SetItem(__pyx_t_1, __pyx_n_s_Get_Coord, __pyx_t_3) < 0) __PYX_ERR(0, 89, __pyx_L1_error)
+  __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
+  __pyx_codeobj__57 = (PyObject*)__Pyx_PyCode_New(1, 0, 1, 0, 0, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__56, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_AATC_Monitor_Viewer_pyx, __pyx_n_s_Get_Coord, 89, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__57)) __PYX_ERR(0, 89, __pyx_L1_error)
+
+090:         return self.CameraCoord
+
  __Pyx_XDECREF(__pyx_r);
+  __pyx_t_1 = __Pyx_PyObject_GetAttrStr(__pyx_v_self, __pyx_n_s_CameraCoord); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 90, __pyx_L1_error)
+  __Pyx_GOTREF(__pyx_t_1);
+  __pyx_r = __pyx_t_1;
+  __pyx_t_1 = 0;
+  goto __pyx_L0;
+
 091: 
+
+092:     def Draw(self):
+
/* Python wrapper */
+static PyObject *__pyx_pw_6CAStar_19AATC_Monitor_Viewer_6Camera_25Draw(PyObject *__pyx_self, PyObject *__pyx_v_self); /*proto*/
+static PyMethodDef __pyx_mdef_6CAStar_19AATC_Monitor_Viewer_6Camera_25Draw = {"Draw", (PyCFunction)__pyx_pw_6CAStar_19AATC_Monitor_Viewer_6Camera_25Draw, METH_O, 0};
+static PyObject *__pyx_pw_6CAStar_19AATC_Monitor_Viewer_6Camera_25Draw(PyObject *__pyx_self, PyObject *__pyx_v_self) {
+  PyObject *__pyx_r = 0;
+  __Pyx_RefNannyDeclarations
+  __Pyx_RefNannySetupContext("Draw (wrapper)", 0);
+  __pyx_r = __pyx_pf_6CAStar_19AATC_Monitor_Viewer_6Camera_24Draw(__pyx_self, ((PyObject *)__pyx_v_self));
+
+  /* function exit code */
+  __Pyx_RefNannyFinishContext();
+  return __pyx_r;
+}
+
+static PyObject *__pyx_pf_6CAStar_19AATC_Monitor_Viewer_6Camera_24Draw(CYTHON_UNUSED PyObject *__pyx_self, PyObject *__pyx_v_self) {
+  float __pyx_v_CameraEndX;
+  float __pyx_v_CameraEndY;
+  float __pyx_v_CameraX;
+  float __pyx_v_CameraY;
+  float __pyx_v_CameraXSize;
+  float __pyx_v_CameraYSize;
+  float __pyx_v_x;
+  float __pyx_v_y;
+  float __pyx_v_xSize;
+  float __pyx_v_ySize;
+  float __pyx_v_PosX;
+  float __pyx_v_PosY;
+  int __pyx_v_width;
+  int __pyx_v_height;
+  int __pyx_v_xpixel;
+  int __pyx_v_ypixel;
+  int __pyx_v_font_size;
+  PyObject *__pyx_v_DrawObject = NULL;
+  PyObject *__pyx_v_Object = NULL;
+  PyObject *__pyx_v_Object_Coords = NULL;
+  PyObject *__pyx_v_image = NULL;
+  PyObject *__pyx_v_font = NULL;
+  PyObject *__pyx_r = NULL;
+  __Pyx_RefNannyDeclarations
+  __Pyx_RefNannySetupContext("Draw", 0);
+/* … */
+  /* function exit code */
+  __pyx_r = Py_None; __Pyx_INCREF(Py_None);
+  goto __pyx_L0;
+  __pyx_L1_error:;
+  __Pyx_XDECREF(__pyx_t_1);
+  __Pyx_XDECREF(__pyx_t_2);
+  __Pyx_XDECREF(__pyx_t_3);
+  __Pyx_XDECREF(__pyx_t_4);
+  __Pyx_XDECREF(__pyx_t_12);
+  __Pyx_XDECREF(__pyx_t_13);
+  __Pyx_XDECREF(__pyx_t_14);
+  __Pyx_AddTraceback("CAStar.AATC_Monitor_Viewer.Camera.Draw", __pyx_clineno, __pyx_lineno, __pyx_filename);
+  __pyx_r = NULL;
+  __pyx_L0:;
+  __Pyx_XDECREF(__pyx_v_DrawObject);
+  __Pyx_XDECREF(__pyx_v_Object);
+  __Pyx_XDECREF(__pyx_v_Object_Coords);
+  __Pyx_XDECREF(__pyx_v_image);
+  __Pyx_XDECREF(__pyx_v_font);
+  __Pyx_XGIVEREF(__pyx_r);
+  __Pyx_RefNannyFinishContext();
+  return __pyx_r;
+}
+/* … */
+  __pyx_tuple__58 = PyTuple_Pack(23, __pyx_n_s_self, __pyx_n_s_CameraEndX, __pyx_n_s_CameraEndY, __pyx_n_s_CameraX, __pyx_n_s_CameraY, __pyx_n_s_CameraXSize, __pyx_n_s_CameraYSize, __pyx_n_s_x, __pyx_n_s_y, __pyx_n_s_xSize, __pyx_n_s_ySize, __pyx_n_s_PosX, __pyx_n_s_PosY, __pyx_n_s_width, __pyx_n_s_height, __pyx_n_s_xpixel, __pyx_n_s_ypixel, __pyx_n_s_font_size, __pyx_n_s_DrawObject, __pyx_n_s_Object, __pyx_n_s_Object_Coords, __pyx_n_s_image, __pyx_n_s_font); if (unlikely(!__pyx_tuple__58)) __PYX_ERR(0, 92, __pyx_L1_error)
+  __Pyx_GOTREF(__pyx_tuple__58);
+  __Pyx_GIVEREF(__pyx_tuple__58);
+/* … */
+  __pyx_t_3 = __Pyx_CyFunction_NewEx(&__pyx_mdef_6CAStar_19AATC_Monitor_Viewer_6Camera_25Draw, 0, __pyx_n_s_Camera_Draw, NULL, __pyx_n_s_CAStar_AATC_Monitor_Viewer, __pyx_d, ((PyObject *)__pyx_codeobj__59)); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 92, __pyx_L1_error)
+  __Pyx_GOTREF(__pyx_t_3);
+  if (PyObject_SetItem(__pyx_t_1, __pyx_n_s_Draw, __pyx_t_3) < 0) __PYX_ERR(0, 92, __pyx_L1_error)
+  __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
+  __pyx_codeobj__59 = (PyObject*)__Pyx_PyCode_New(1, 0, 23, 0, 0, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__58, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_AATC_Monitor_Viewer_pyx, __pyx_n_s_Draw, 92, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__59)) __PYX_ERR(0, 92, __pyx_L1_error)
+
 093:         cdef float CameraEndX,CameraEndY,CameraX,CameraY,CameraXSize,CameraYSize,x,y,xSize,ySize,PosX,PosY
+
 094:         cdef int width,height,xpixel,ypixel,font_size
+
 095: 
+
+096:         CameraEndX= self.CameraCoord.Get_X() + self.CameraCoord.Get_XSize()    #Moved to new variablt to reduce recalculation
+
  __pyx_t_2 = __Pyx_PyObject_GetAttrStr(__pyx_v_self, __pyx_n_s_CameraCoord); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 96, __pyx_L1_error)
+  __Pyx_GOTREF(__pyx_t_2);
+  __pyx_t_3 = __Pyx_PyObject_GetAttrStr(__pyx_t_2, __pyx_n_s_Get_X); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 96, __pyx_L1_error)
+  __Pyx_GOTREF(__pyx_t_3);
+  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
+  __pyx_t_2 = NULL;
+  if (CYTHON_UNPACK_METHODS && likely(PyMethod_Check(__pyx_t_3))) {
+    __pyx_t_2 = PyMethod_GET_SELF(__pyx_t_3);
+    if (likely(__pyx_t_2)) {
+      PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_3);
+      __Pyx_INCREF(__pyx_t_2);
+      __Pyx_INCREF(function);
+      __Pyx_DECREF_SET(__pyx_t_3, function);
+    }
+  }
+  if (__pyx_t_2) {
+    __pyx_t_1 = __Pyx_PyObject_CallOneArg(__pyx_t_3, __pyx_t_2); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 96, __pyx_L1_error)
+    __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
+  } else {
+    __pyx_t_1 = __Pyx_PyObject_CallNoArg(__pyx_t_3); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 96, __pyx_L1_error)
+  }
+  __Pyx_GOTREF(__pyx_t_1);
+  __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
+  __pyx_t_2 = __Pyx_PyObject_GetAttrStr(__pyx_v_self, __pyx_n_s_CameraCoord); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 96, __pyx_L1_error)
+  __Pyx_GOTREF(__pyx_t_2);
+  __pyx_t_4 = __Pyx_PyObject_GetAttrStr(__pyx_t_2, __pyx_n_s_Get_XSize); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 96, __pyx_L1_error)
+  __Pyx_GOTREF(__pyx_t_4);
+  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
+  __pyx_t_2 = NULL;
+  if (CYTHON_UNPACK_METHODS && likely(PyMethod_Check(__pyx_t_4))) {
+    __pyx_t_2 = PyMethod_GET_SELF(__pyx_t_4);
+    if (likely(__pyx_t_2)) {
+      PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_4);
+      __Pyx_INCREF(__pyx_t_2);
+      __Pyx_INCREF(function);
+      __Pyx_DECREF_SET(__pyx_t_4, function);
+    }
+  }
+  if (__pyx_t_2) {
+    __pyx_t_3 = __Pyx_PyObject_CallOneArg(__pyx_t_4, __pyx_t_2); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 96, __pyx_L1_error)
+    __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
+  } else {
+    __pyx_t_3 = __Pyx_PyObject_CallNoArg(__pyx_t_4); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 96, __pyx_L1_error)
+  }
+  __Pyx_GOTREF(__pyx_t_3);
+  __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
+  __pyx_t_4 = PyNumber_Add(__pyx_t_1, __pyx_t_3); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 96, __pyx_L1_error)
+  __Pyx_GOTREF(__pyx_t_4);
+  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
+  __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
+  __pyx_t_5 = __pyx_PyFloat_AsFloat(__pyx_t_4); if (unlikely((__pyx_t_5 == (float)-1) && PyErr_Occurred())) __PYX_ERR(0, 96, __pyx_L1_error)
+  __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
+  __pyx_v_CameraEndX = __pyx_t_5;
+
+097:         CameraEndY = self.CameraCoord.Get_Y() + self.CameraCoord.Get_YSize()
+
  __pyx_t_3 = __Pyx_PyObject_GetAttrStr(__pyx_v_self, __pyx_n_s_CameraCoord); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 97, __pyx_L1_error)
+  __Pyx_GOTREF(__pyx_t_3);
+  __pyx_t_1 = __Pyx_PyObject_GetAttrStr(__pyx_t_3, __pyx_n_s_Get_Y); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 97, __pyx_L1_error)
+  __Pyx_GOTREF(__pyx_t_1);
+  __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
+  __pyx_t_3 = NULL;
+  if (CYTHON_UNPACK_METHODS && likely(PyMethod_Check(__pyx_t_1))) {
+    __pyx_t_3 = PyMethod_GET_SELF(__pyx_t_1);
+    if (likely(__pyx_t_3)) {
+      PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_1);
+      __Pyx_INCREF(__pyx_t_3);
+      __Pyx_INCREF(function);
+      __Pyx_DECREF_SET(__pyx_t_1, function);
+    }
+  }
+  if (__pyx_t_3) {
+    __pyx_t_4 = __Pyx_PyObject_CallOneArg(__pyx_t_1, __pyx_t_3); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 97, __pyx_L1_error)
+    __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
+  } else {
+    __pyx_t_4 = __Pyx_PyObject_CallNoArg(__pyx_t_1); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 97, __pyx_L1_error)
+  }
+  __Pyx_GOTREF(__pyx_t_4);
+  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
+  __pyx_t_3 = __Pyx_PyObject_GetAttrStr(__pyx_v_self, __pyx_n_s_CameraCoord); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 97, __pyx_L1_error)
+  __Pyx_GOTREF(__pyx_t_3);
+  __pyx_t_2 = __Pyx_PyObject_GetAttrStr(__pyx_t_3, __pyx_n_s_Get_YSize); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 97, __pyx_L1_error)
+  __Pyx_GOTREF(__pyx_t_2);
+  __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
+  __pyx_t_3 = NULL;
+  if (CYTHON_UNPACK_METHODS && likely(PyMethod_Check(__pyx_t_2))) {
+    __pyx_t_3 = PyMethod_GET_SELF(__pyx_t_2);
+    if (likely(__pyx_t_3)) {
+      PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_2);
+      __Pyx_INCREF(__pyx_t_3);
+      __Pyx_INCREF(function);
+      __Pyx_DECREF_SET(__pyx_t_2, function);
+    }
+  }
+  if (__pyx_t_3) {
+    __pyx_t_1 = __Pyx_PyObject_CallOneArg(__pyx_t_2, __pyx_t_3); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 97, __pyx_L1_error)
+    __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
+  } else {
+    __pyx_t_1 = __Pyx_PyObject_CallNoArg(__pyx_t_2); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 97, __pyx_L1_error)
+  }
+  __Pyx_GOTREF(__pyx_t_1);
+  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
+  __pyx_t_2 = PyNumber_Add(__pyx_t_4, __pyx_t_1); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 97, __pyx_L1_error)
+  __Pyx_GOTREF(__pyx_t_2);
+  __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
+  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
+  __pyx_t_5 = __pyx_PyFloat_AsFloat(__pyx_t_2); if (unlikely((__pyx_t_5 == (float)-1) && PyErr_Occurred())) __PYX_ERR(0, 97, __pyx_L1_error)
+  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
+  __pyx_v_CameraEndY = __pyx_t_5;
+
+098:         CameraX = self.CameraCoord.Get_X()
+
  __pyx_t_1 = __Pyx_PyObject_GetAttrStr(__pyx_v_self, __pyx_n_s_CameraCoord); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 98, __pyx_L1_error)
+  __Pyx_GOTREF(__pyx_t_1);
+  __pyx_t_4 = __Pyx_PyObject_GetAttrStr(__pyx_t_1, __pyx_n_s_Get_X); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 98, __pyx_L1_error)
+  __Pyx_GOTREF(__pyx_t_4);
+  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
+  __pyx_t_1 = NULL;
+  if (CYTHON_UNPACK_METHODS && likely(PyMethod_Check(__pyx_t_4))) {
+    __pyx_t_1 = PyMethod_GET_SELF(__pyx_t_4);
+    if (likely(__pyx_t_1)) {
+      PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_4);
+      __Pyx_INCREF(__pyx_t_1);
+      __Pyx_INCREF(function);
+      __Pyx_DECREF_SET(__pyx_t_4, function);
+    }
+  }
+  if (__pyx_t_1) {
+    __pyx_t_2 = __Pyx_PyObject_CallOneArg(__pyx_t_4, __pyx_t_1); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 98, __pyx_L1_error)
+    __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
+  } else {
+    __pyx_t_2 = __Pyx_PyObject_CallNoArg(__pyx_t_4); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 98, __pyx_L1_error)
+  }
+  __Pyx_GOTREF(__pyx_t_2);
+  __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
+  __pyx_t_5 = __pyx_PyFloat_AsFloat(__pyx_t_2); if (unlikely((__pyx_t_5 == (float)-1) && PyErr_Occurred())) __PYX_ERR(0, 98, __pyx_L1_error)
+  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
+  __pyx_v_CameraX = __pyx_t_5;
+
+099:         CameraY = self.CameraCoord.Get_Y()
+
  __pyx_t_4 = __Pyx_PyObject_GetAttrStr(__pyx_v_self, __pyx_n_s_CameraCoord); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 99, __pyx_L1_error)
+  __Pyx_GOTREF(__pyx_t_4);
+  __pyx_t_1 = __Pyx_PyObject_GetAttrStr(__pyx_t_4, __pyx_n_s_Get_Y); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 99, __pyx_L1_error)
+  __Pyx_GOTREF(__pyx_t_1);
+  __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
+  __pyx_t_4 = NULL;
+  if (CYTHON_UNPACK_METHODS && likely(PyMethod_Check(__pyx_t_1))) {
+    __pyx_t_4 = PyMethod_GET_SELF(__pyx_t_1);
+    if (likely(__pyx_t_4)) {
+      PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_1);
+      __Pyx_INCREF(__pyx_t_4);
+      __Pyx_INCREF(function);
+      __Pyx_DECREF_SET(__pyx_t_1, function);
+    }
+  }
+  if (__pyx_t_4) {
+    __pyx_t_2 = __Pyx_PyObject_CallOneArg(__pyx_t_1, __pyx_t_4); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 99, __pyx_L1_error)
+    __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
+  } else {
+    __pyx_t_2 = __Pyx_PyObject_CallNoArg(__pyx_t_1); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 99, __pyx_L1_error)
+  }
+  __Pyx_GOTREF(__pyx_t_2);
+  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
+  __pyx_t_5 = __pyx_PyFloat_AsFloat(__pyx_t_2); if (unlikely((__pyx_t_5 == (float)-1) && PyErr_Occurred())) __PYX_ERR(0, 99, __pyx_L1_error)
+  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
+  __pyx_v_CameraY = __pyx_t_5;
+
+100:         CameraXSize = self.CameraCoord.Get_XSize()
+
  __pyx_t_1 = __Pyx_PyObject_GetAttrStr(__pyx_v_self, __pyx_n_s_CameraCoord); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 100, __pyx_L1_error)
+  __Pyx_GOTREF(__pyx_t_1);
+  __pyx_t_4 = __Pyx_PyObject_GetAttrStr(__pyx_t_1, __pyx_n_s_Get_XSize); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 100, __pyx_L1_error)
+  __Pyx_GOTREF(__pyx_t_4);
+  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
+  __pyx_t_1 = NULL;
+  if (CYTHON_UNPACK_METHODS && likely(PyMethod_Check(__pyx_t_4))) {
+    __pyx_t_1 = PyMethod_GET_SELF(__pyx_t_4);
+    if (likely(__pyx_t_1)) {
+      PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_4);
+      __Pyx_INCREF(__pyx_t_1);
+      __Pyx_INCREF(function);
+      __Pyx_DECREF_SET(__pyx_t_4, function);
+    }
+  }
+  if (__pyx_t_1) {
+    __pyx_t_2 = __Pyx_PyObject_CallOneArg(__pyx_t_4, __pyx_t_1); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 100, __pyx_L1_error)
+    __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
+  } else {
+    __pyx_t_2 = __Pyx_PyObject_CallNoArg(__pyx_t_4); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 100, __pyx_L1_error)
+  }
+  __Pyx_GOTREF(__pyx_t_2);
+  __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
+  __pyx_t_5 = __pyx_PyFloat_AsFloat(__pyx_t_2); if (unlikely((__pyx_t_5 == (float)-1) && PyErr_Occurred())) __PYX_ERR(0, 100, __pyx_L1_error)
+  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
+  __pyx_v_CameraXSize = __pyx_t_5;
+
+101:         CameraYSize = self.CameraCoord.Get_YSize()
+
  __pyx_t_4 = __Pyx_PyObject_GetAttrStr(__pyx_v_self, __pyx_n_s_CameraCoord); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 101, __pyx_L1_error)
+  __Pyx_GOTREF(__pyx_t_4);
+  __pyx_t_1 = __Pyx_PyObject_GetAttrStr(__pyx_t_4, __pyx_n_s_Get_YSize); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 101, __pyx_L1_error)
+  __Pyx_GOTREF(__pyx_t_1);
+  __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
+  __pyx_t_4 = NULL;
+  if (CYTHON_UNPACK_METHODS && likely(PyMethod_Check(__pyx_t_1))) {
+    __pyx_t_4 = PyMethod_GET_SELF(__pyx_t_1);
+    if (likely(__pyx_t_4)) {
+      PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_1);
+      __Pyx_INCREF(__pyx_t_4);
+      __Pyx_INCREF(function);
+      __Pyx_DECREF_SET(__pyx_t_1, function);
+    }
+  }
+  if (__pyx_t_4) {
+    __pyx_t_2 = __Pyx_PyObject_CallOneArg(__pyx_t_1, __pyx_t_4); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 101, __pyx_L1_error)
+    __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
+  } else {
+    __pyx_t_2 = __Pyx_PyObject_CallNoArg(__pyx_t_1); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 101, __pyx_L1_error)
+  }
+  __Pyx_GOTREF(__pyx_t_2);
+  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
+  __pyx_t_5 = __pyx_PyFloat_AsFloat(__pyx_t_2); if (unlikely((__pyx_t_5 == (float)-1) && PyErr_Occurred())) __PYX_ERR(0, 101, __pyx_L1_error)
+  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
+  __pyx_v_CameraYSize = __pyx_t_5;
+
+102:         xpixel,ypixel = self.xpixel,self.ypixel
+
  __pyx_t_2 = __Pyx_PyObject_GetAttrStr(__pyx_v_self, __pyx_n_s_xpixel); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 102, __pyx_L1_error)
+  __Pyx_GOTREF(__pyx_t_2);
+  __pyx_t_6 = __Pyx_PyInt_As_int(__pyx_t_2); if (unlikely((__pyx_t_6 == (int)-1) && PyErr_Occurred())) __PYX_ERR(0, 102, __pyx_L1_error)
+  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
+  __pyx_t_2 = __Pyx_PyObject_GetAttrStr(__pyx_v_self, __pyx_n_s_ypixel); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 102, __pyx_L1_error)
+  __Pyx_GOTREF(__pyx_t_2);
+  __pyx_t_7 = __Pyx_PyInt_As_int(__pyx_t_2); if (unlikely((__pyx_t_7 == (int)-1) && PyErr_Occurred())) __PYX_ERR(0, 102, __pyx_L1_error)
+  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
+  __pyx_v_xpixel = __pyx_t_6;
+  __pyx_v_ypixel = __pyx_t_7;
+
 103: 
+
+104:         for DrawObject in self.DrawObjects:
+
  __pyx_t_2 = __Pyx_PyObject_GetAttrStr(__pyx_v_self, __pyx_n_s_DrawObjects); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 104, __pyx_L1_error)
+  __Pyx_GOTREF(__pyx_t_2);
+  if (likely(PyList_CheckExact(__pyx_t_2)) || PyTuple_CheckExact(__pyx_t_2)) {
+    __pyx_t_1 = __pyx_t_2; __Pyx_INCREF(__pyx_t_1); __pyx_t_8 = 0;
+    __pyx_t_9 = NULL;
+  } else {
+    __pyx_t_8 = -1; __pyx_t_1 = PyObject_GetIter(__pyx_t_2); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 104, __pyx_L1_error)
+    __Pyx_GOTREF(__pyx_t_1);
+    __pyx_t_9 = Py_TYPE(__pyx_t_1)->tp_iternext; if (unlikely(!__pyx_t_9)) __PYX_ERR(0, 104, __pyx_L1_error)
+  }
+  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
+  for (;;) {
+    if (likely(!__pyx_t_9)) {
+      if (likely(PyList_CheckExact(__pyx_t_1))) {
+        if (__pyx_t_8 >= PyList_GET_SIZE(__pyx_t_1)) break;
+        #if CYTHON_ASSUME_SAFE_MACROS && !CYTHON_AVOID_BORROWED_REFS
+        __pyx_t_2 = PyList_GET_ITEM(__pyx_t_1, __pyx_t_8); __Pyx_INCREF(__pyx_t_2); __pyx_t_8++; if (unlikely(0 < 0)) __PYX_ERR(0, 104, __pyx_L1_error)
+        #else
+        __pyx_t_2 = PySequence_ITEM(__pyx_t_1, __pyx_t_8); __pyx_t_8++; if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 104, __pyx_L1_error)
+        __Pyx_GOTREF(__pyx_t_2);
+        #endif
+      } else {
+        if (__pyx_t_8 >= PyTuple_GET_SIZE(__pyx_t_1)) break;
+        #if CYTHON_ASSUME_SAFE_MACROS && !CYTHON_AVOID_BORROWED_REFS
+        __pyx_t_2 = PyTuple_GET_ITEM(__pyx_t_1, __pyx_t_8); __Pyx_INCREF(__pyx_t_2); __pyx_t_8++; if (unlikely(0 < 0)) __PYX_ERR(0, 104, __pyx_L1_error)
+        #else
+        __pyx_t_2 = PySequence_ITEM(__pyx_t_1, __pyx_t_8); __pyx_t_8++; if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 104, __pyx_L1_error)
+        __Pyx_GOTREF(__pyx_t_2);
+        #endif
+      }
+    } else {
+      __pyx_t_2 = __pyx_t_9(__pyx_t_1);
+      if (unlikely(!__pyx_t_2)) {
+        PyObject* exc_type = PyErr_Occurred();
+        if (exc_type) {
+          if (likely(exc_type == PyExc_StopIteration || PyErr_GivenExceptionMatches(exc_type, PyExc_StopIteration))) PyErr_Clear();
+          else __PYX_ERR(0, 104, __pyx_L1_error)
+        }
+        break;
+      }
+      __Pyx_GOTREF(__pyx_t_2);
+    }
+    __Pyx_XDECREF_SET(__pyx_v_DrawObject, __pyx_t_2);
+    __pyx_t_2 = 0;
+/* … */
+  }
+  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
+
+105:             Object = DrawObject["Object"]
+
    __pyx_t_2 = PyObject_GetItem(__pyx_v_DrawObject, __pyx_n_s_Object); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 105, __pyx_L1_error)
+    __Pyx_GOTREF(__pyx_t_2);
+    __Pyx_XDECREF_SET(__pyx_v_Object, __pyx_t_2);
+    __pyx_t_2 = 0;
+
+106:             Object_Coords = Object.Get_Coords()
+
    __pyx_t_4 = __Pyx_PyObject_GetAttrStr(__pyx_v_Object, __pyx_n_s_Get_Coords); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 106, __pyx_L1_error)
+    __Pyx_GOTREF(__pyx_t_4);
+    __pyx_t_3 = NULL;
+    if (CYTHON_UNPACK_METHODS && likely(PyMethod_Check(__pyx_t_4))) {
+      __pyx_t_3 = PyMethod_GET_SELF(__pyx_t_4);
+      if (likely(__pyx_t_3)) {
+        PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_4);
+        __Pyx_INCREF(__pyx_t_3);
+        __Pyx_INCREF(function);
+        __Pyx_DECREF_SET(__pyx_t_4, function);
+      }
+    }
+    if (__pyx_t_3) {
+      __pyx_t_2 = __Pyx_PyObject_CallOneArg(__pyx_t_4, __pyx_t_3); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 106, __pyx_L1_error)
+      __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
+    } else {
+      __pyx_t_2 = __Pyx_PyObject_CallNoArg(__pyx_t_4); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 106, __pyx_L1_error)
+    }
+    __Pyx_GOTREF(__pyx_t_2);
+    __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
+    __Pyx_XDECREF_SET(__pyx_v_Object_Coords, __pyx_t_2);
+    __pyx_t_2 = 0;
+
+107:             x = Object_Coords.Get_X()
+
    __pyx_t_4 = __Pyx_PyObject_GetAttrStr(__pyx_v_Object_Coords, __pyx_n_s_Get_X); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 107, __pyx_L1_error)
+    __Pyx_GOTREF(__pyx_t_4);
+    __pyx_t_3 = NULL;
+    if (CYTHON_UNPACK_METHODS && likely(PyMethod_Check(__pyx_t_4))) {
+      __pyx_t_3 = PyMethod_GET_SELF(__pyx_t_4);
+      if (likely(__pyx_t_3)) {
+        PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_4);
+        __Pyx_INCREF(__pyx_t_3);
+        __Pyx_INCREF(function);
+        __Pyx_DECREF_SET(__pyx_t_4, function);
+      }
+    }
+    if (__pyx_t_3) {
+      __pyx_t_2 = __Pyx_PyObject_CallOneArg(__pyx_t_4, __pyx_t_3); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 107, __pyx_L1_error)
+      __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
+    } else {
+      __pyx_t_2 = __Pyx_PyObject_CallNoArg(__pyx_t_4); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 107, __pyx_L1_error)
+    }
+    __Pyx_GOTREF(__pyx_t_2);
+    __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
+    __pyx_t_5 = __pyx_PyFloat_AsFloat(__pyx_t_2); if (unlikely((__pyx_t_5 == (float)-1) && PyErr_Occurred())) __PYX_ERR(0, 107, __pyx_L1_error)
+    __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
+    __pyx_v_x = __pyx_t_5;
+
+108:             y = Object_Coords.Get_Y()
+
    __pyx_t_4 = __Pyx_PyObject_GetAttrStr(__pyx_v_Object_Coords, __pyx_n_s_Get_Y); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 108, __pyx_L1_error)
+    __Pyx_GOTREF(__pyx_t_4);
+    __pyx_t_3 = NULL;
+    if (CYTHON_UNPACK_METHODS && likely(PyMethod_Check(__pyx_t_4))) {
+      __pyx_t_3 = PyMethod_GET_SELF(__pyx_t_4);
+      if (likely(__pyx_t_3)) {
+        PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_4);
+        __Pyx_INCREF(__pyx_t_3);
+        __Pyx_INCREF(function);
+        __Pyx_DECREF_SET(__pyx_t_4, function);
+      }
+    }
+    if (__pyx_t_3) {
+      __pyx_t_2 = __Pyx_PyObject_CallOneArg(__pyx_t_4, __pyx_t_3); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 108, __pyx_L1_error)
+      __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
+    } else {
+      __pyx_t_2 = __Pyx_PyObject_CallNoArg(__pyx_t_4); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 108, __pyx_L1_error)
+    }
+    __Pyx_GOTREF(__pyx_t_2);
+    __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
+    __pyx_t_5 = __pyx_PyFloat_AsFloat(__pyx_t_2); if (unlikely((__pyx_t_5 == (float)-1) && PyErr_Occurred())) __PYX_ERR(0, 108, __pyx_L1_error)
+    __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
+    __pyx_v_y = __pyx_t_5;
+
+109:             xSize = Object_Coords.Get_XSize()
+
    __pyx_t_4 = __Pyx_PyObject_GetAttrStr(__pyx_v_Object_Coords, __pyx_n_s_Get_XSize); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 109, __pyx_L1_error)
+    __Pyx_GOTREF(__pyx_t_4);
+    __pyx_t_3 = NULL;
+    if (CYTHON_UNPACK_METHODS && likely(PyMethod_Check(__pyx_t_4))) {
+      __pyx_t_3 = PyMethod_GET_SELF(__pyx_t_4);
+      if (likely(__pyx_t_3)) {
+        PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_4);
+        __Pyx_INCREF(__pyx_t_3);
+        __Pyx_INCREF(function);
+        __Pyx_DECREF_SET(__pyx_t_4, function);
+      }
+    }
+    if (__pyx_t_3) {
+      __pyx_t_2 = __Pyx_PyObject_CallOneArg(__pyx_t_4, __pyx_t_3); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 109, __pyx_L1_error)
+      __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
+    } else {
+      __pyx_t_2 = __Pyx_PyObject_CallNoArg(__pyx_t_4); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 109, __pyx_L1_error)
+    }
+    __Pyx_GOTREF(__pyx_t_2);
+    __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
+    __pyx_t_5 = __pyx_PyFloat_AsFloat(__pyx_t_2); if (unlikely((__pyx_t_5 == (float)-1) && PyErr_Occurred())) __PYX_ERR(0, 109, __pyx_L1_error)
+    __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
+    __pyx_v_xSize = __pyx_t_5;
+
+110:             ySize = Object_Coords.Get_YSize()
+
    __pyx_t_4 = __Pyx_PyObject_GetAttrStr(__pyx_v_Object_Coords, __pyx_n_s_Get_YSize); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 110, __pyx_L1_error)
+    __Pyx_GOTREF(__pyx_t_4);
+    __pyx_t_3 = NULL;
+    if (CYTHON_UNPACK_METHODS && likely(PyMethod_Check(__pyx_t_4))) {
+      __pyx_t_3 = PyMethod_GET_SELF(__pyx_t_4);
+      if (likely(__pyx_t_3)) {
+        PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_4);
+        __Pyx_INCREF(__pyx_t_3);
+        __Pyx_INCREF(function);
+        __Pyx_DECREF_SET(__pyx_t_4, function);
+      }
+    }
+    if (__pyx_t_3) {
+      __pyx_t_2 = __Pyx_PyObject_CallOneArg(__pyx_t_4, __pyx_t_3); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 110, __pyx_L1_error)
+      __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
+    } else {
+      __pyx_t_2 = __Pyx_PyObject_CallNoArg(__pyx_t_4); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 110, __pyx_L1_error)
+    }
+    __Pyx_GOTREF(__pyx_t_2);
+    __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
+    __pyx_t_5 = __pyx_PyFloat_AsFloat(__pyx_t_2); if (unlikely((__pyx_t_5 == (float)-1) && PyErr_Occurred())) __PYX_ERR(0, 110, __pyx_L1_error)
+    __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
+    __pyx_v_ySize = __pyx_t_5;
+
+111:             if ((x < CameraEndX) and ((x+xSize) > CameraX)) and \
+
    __pyx_t_11 = ((__pyx_v_x < __pyx_v_CameraEndX) != 0);
+    if (__pyx_t_11) {
+    } else {
+      __pyx_t_10 = __pyx_t_11;
+      goto __pyx_L6_bool_binop_done;
+    }
+    __pyx_t_11 = (((__pyx_v_x + __pyx_v_xSize) > __pyx_v_CameraX) != 0);
+    if (__pyx_t_11) {
+    } else {
+      __pyx_t_10 = __pyx_t_11;
+      goto __pyx_L6_bool_binop_done;
+    }
+/* … */
+    if (__pyx_t_10) {
+/* … */
+    }
+
+112:                ((y < CameraEndY) and ((y+ySize) > CameraY )) :  #If DrawObject intersects with Camera , Render, otherwise ignore
+
    __pyx_t_11 = ((__pyx_v_y < __pyx_v_CameraEndY) != 0);
+    if (__pyx_t_11) {
+    } else {
+      __pyx_t_10 = __pyx_t_11;
+      goto __pyx_L6_bool_binop_done;
+    }
+    __pyx_t_11 = (((__pyx_v_y + __pyx_v_ySize) > __pyx_v_CameraY) != 0);
+    __pyx_t_10 = __pyx_t_11;
+    __pyx_L6_bool_binop_done:;
+
 113: 
+
 114: 
+
+115:                 width,height = int(xSize/CameraXSize*xpixel) ,int(ySize/CameraYSize*ypixel)  # Would benifit from being cythonised
+
      __pyx_v_width = ((int)((__pyx_v_xSize / __pyx_v_CameraXSize) * __pyx_v_xpixel));
+      __pyx_v_height = ((int)((__pyx_v_ySize / __pyx_v_CameraYSize) * __pyx_v_ypixel));
+
+116:                 if width > 0 and height > 0:
+
      __pyx_t_11 = ((__pyx_v_width > 0) != 0);
+      if (__pyx_t_11) {
+      } else {
+        __pyx_t_10 = __pyx_t_11;
+        goto __pyx_L11_bool_binop_done;
+      }
+      __pyx_t_11 = ((__pyx_v_height > 0) != 0);
+      __pyx_t_10 = __pyx_t_11;
+      __pyx_L11_bool_binop_done:;
+      if (__pyx_t_10) {
+/* … */
+      }
+
+117:                     PosX = ((x- CameraX)/CameraXSize)* xpixel  # Would benifit from being cythonised
+
        __pyx_v_PosX = (((__pyx_v_x - __pyx_v_CameraX) / __pyx_v_CameraXSize) * __pyx_v_xpixel);
+
+118:                     PosY = ((y- CameraY)/CameraYSize)* ypixel
+
        __pyx_v_PosY = (((__pyx_v_y - __pyx_v_CameraY) / __pyx_v_CameraYSize) * __pyx_v_ypixel);
+
+119:                     width = MaxLimit(width,xpixel)
+
        __pyx_v_width = __pyx_f_6CAStar_19AATC_Monitor_Viewer_MaxLimit(__pyx_v_width, __pyx_v_xpixel);
+
+120:                     height = MaxLimit(height,ypixel)
+
        __pyx_v_height = __pyx_f_6CAStar_19AATC_Monitor_Viewer_MaxLimit(__pyx_v_height, __pyx_v_ypixel);
+
+121:                     font_size = int(100*width/xpixel)          # Would benifit from being cythonised
+
        __pyx_v_font_size = ((int)((0x64 * __pyx_v_width) / __pyx_v_xpixel));
+
+122:                     image = Object.Make_Image(width,height)
+
        __pyx_t_4 = __Pyx_PyObject_GetAttrStr(__pyx_v_Object, __pyx_n_s_Make_Image); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 122, __pyx_L1_error)
+        __Pyx_GOTREF(__pyx_t_4);
+        __pyx_t_3 = __Pyx_PyInt_From_int(__pyx_v_width); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 122, __pyx_L1_error)
+        __Pyx_GOTREF(__pyx_t_3);
+        __pyx_t_12 = __Pyx_PyInt_From_int(__pyx_v_height); if (unlikely(!__pyx_t_12)) __PYX_ERR(0, 122, __pyx_L1_error)
+        __Pyx_GOTREF(__pyx_t_12);
+        __pyx_t_13 = NULL;
+        __pyx_t_7 = 0;
+        if (CYTHON_UNPACK_METHODS && likely(PyMethod_Check(__pyx_t_4))) {
+          __pyx_t_13 = PyMethod_GET_SELF(__pyx_t_4);
+          if (likely(__pyx_t_13)) {
+            PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_4);
+            __Pyx_INCREF(__pyx_t_13);
+            __Pyx_INCREF(function);
+            __Pyx_DECREF_SET(__pyx_t_4, function);
+            __pyx_t_7 = 1;
+          }
+        }
+        #if CYTHON_FAST_PYCALL
+        if (PyFunction_Check(__pyx_t_4)) {
+          PyObject *__pyx_temp[3] = {__pyx_t_13, __pyx_t_3, __pyx_t_12};
+          __pyx_t_2 = __Pyx_PyFunction_FastCall(__pyx_t_4, __pyx_temp+1-__pyx_t_7, 2+__pyx_t_7); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 122, __pyx_L1_error)
+          __Pyx_XDECREF(__pyx_t_13); __pyx_t_13 = 0;
+          __Pyx_GOTREF(__pyx_t_2);
+          __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
+          __Pyx_DECREF(__pyx_t_12); __pyx_t_12 = 0;
+        } else
+        #endif
+        #if CYTHON_FAST_PYCCALL
+        if (__Pyx_PyFastCFunction_Check(__pyx_t_4)) {
+          PyObject *__pyx_temp[3] = {__pyx_t_13, __pyx_t_3, __pyx_t_12};
+          __pyx_t_2 = __Pyx_PyCFunction_FastCall(__pyx_t_4, __pyx_temp+1-__pyx_t_7, 2+__pyx_t_7); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 122, __pyx_L1_error)
+          __Pyx_XDECREF(__pyx_t_13); __pyx_t_13 = 0;
+          __Pyx_GOTREF(__pyx_t_2);
+          __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
+          __Pyx_DECREF(__pyx_t_12); __pyx_t_12 = 0;
+        } else
+        #endif
+        {
+          __pyx_t_14 = PyTuple_New(2+__pyx_t_7); if (unlikely(!__pyx_t_14)) __PYX_ERR(0, 122, __pyx_L1_error)
+          __Pyx_GOTREF(__pyx_t_14);
+          if (__pyx_t_13) {
+            __Pyx_GIVEREF(__pyx_t_13); PyTuple_SET_ITEM(__pyx_t_14, 0, __pyx_t_13); __pyx_t_13 = NULL;
+          }
+          __Pyx_GIVEREF(__pyx_t_3);
+          PyTuple_SET_ITEM(__pyx_t_14, 0+__pyx_t_7, __pyx_t_3);
+          __Pyx_GIVEREF(__pyx_t_12);
+          PyTuple_SET_ITEM(__pyx_t_14, 1+__pyx_t_7, __pyx_t_12);
+          __pyx_t_3 = 0;
+          __pyx_t_12 = 0;
+          __pyx_t_2 = __Pyx_PyObject_Call(__pyx_t_4, __pyx_t_14, NULL); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 122, __pyx_L1_error)
+          __Pyx_GOTREF(__pyx_t_2);
+          __Pyx_DECREF(__pyx_t_14); __pyx_t_14 = 0;
+        }
+        __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
+        __Pyx_XDECREF_SET(__pyx_v_image, __pyx_t_2);
+        __pyx_t_2 = 0;
+
+123:                     self.gameDisplay.blit(image,(PosX,PosY))
+
        __pyx_t_4 = __Pyx_PyObject_GetAttrStr(__pyx_v_self, __pyx_n_s_gameDisplay); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 123, __pyx_L1_error)
+        __Pyx_GOTREF(__pyx_t_4);
+        __pyx_t_14 = __Pyx_PyObject_GetAttrStr(__pyx_t_4, __pyx_n_s_blit); if (unlikely(!__pyx_t_14)) __PYX_ERR(0, 123, __pyx_L1_error)
+        __Pyx_GOTREF(__pyx_t_14);
+        __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
+        __pyx_t_4 = PyFloat_FromDouble(__pyx_v_PosX); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 123, __pyx_L1_error)
+        __Pyx_GOTREF(__pyx_t_4);
+        __pyx_t_12 = PyFloat_FromDouble(__pyx_v_PosY); if (unlikely(!__pyx_t_12)) __PYX_ERR(0, 123, __pyx_L1_error)
+        __Pyx_GOTREF(__pyx_t_12);
+        __pyx_t_3 = PyTuple_New(2); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 123, __pyx_L1_error)
+        __Pyx_GOTREF(__pyx_t_3);
+        __Pyx_GIVEREF(__pyx_t_4);
+        PyTuple_SET_ITEM(__pyx_t_3, 0, __pyx_t_4);
+        __Pyx_GIVEREF(__pyx_t_12);
+        PyTuple_SET_ITEM(__pyx_t_3, 1, __pyx_t_12);
+        __pyx_t_4 = 0;
+        __pyx_t_12 = 0;
+        __pyx_t_12 = NULL;
+        __pyx_t_7 = 0;
+        if (CYTHON_UNPACK_METHODS && likely(PyMethod_Check(__pyx_t_14))) {
+          __pyx_t_12 = PyMethod_GET_SELF(__pyx_t_14);
+          if (likely(__pyx_t_12)) {
+            PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_14);
+            __Pyx_INCREF(__pyx_t_12);
+            __Pyx_INCREF(function);
+            __Pyx_DECREF_SET(__pyx_t_14, function);
+            __pyx_t_7 = 1;
+          }
+        }
+        #if CYTHON_FAST_PYCALL
+        if (PyFunction_Check(__pyx_t_14)) {
+          PyObject *__pyx_temp[3] = {__pyx_t_12, __pyx_v_image, __pyx_t_3};
+          __pyx_t_2 = __Pyx_PyFunction_FastCall(__pyx_t_14, __pyx_temp+1-__pyx_t_7, 2+__pyx_t_7); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 123, __pyx_L1_error)
+          __Pyx_XDECREF(__pyx_t_12); __pyx_t_12 = 0;
+          __Pyx_GOTREF(__pyx_t_2);
+          __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
+        } else
+        #endif
+        #if CYTHON_FAST_PYCCALL
+        if (__Pyx_PyFastCFunction_Check(__pyx_t_14)) {
+          PyObject *__pyx_temp[3] = {__pyx_t_12, __pyx_v_image, __pyx_t_3};
+          __pyx_t_2 = __Pyx_PyCFunction_FastCall(__pyx_t_14, __pyx_temp+1-__pyx_t_7, 2+__pyx_t_7); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 123, __pyx_L1_error)
+          __Pyx_XDECREF(__pyx_t_12); __pyx_t_12 = 0;
+          __Pyx_GOTREF(__pyx_t_2);
+          __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
+        } else
+        #endif
+        {
+          __pyx_t_4 = PyTuple_New(2+__pyx_t_7); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 123, __pyx_L1_error)
+          __Pyx_GOTREF(__pyx_t_4);
+          if (__pyx_t_12) {
+            __Pyx_GIVEREF(__pyx_t_12); PyTuple_SET_ITEM(__pyx_t_4, 0, __pyx_t_12); __pyx_t_12 = NULL;
+          }
+          __Pyx_INCREF(__pyx_v_image);
+          __Pyx_GIVEREF(__pyx_v_image);
+          PyTuple_SET_ITEM(__pyx_t_4, 0+__pyx_t_7, __pyx_v_image);
+          __Pyx_GIVEREF(__pyx_t_3);
+          PyTuple_SET_ITEM(__pyx_t_4, 1+__pyx_t_7, __pyx_t_3);
+          __pyx_t_3 = 0;
+          __pyx_t_2 = __Pyx_PyObject_Call(__pyx_t_14, __pyx_t_4, NULL); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 123, __pyx_L1_error)
+          __Pyx_GOTREF(__pyx_t_2);
+          __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
+        }
+        __Pyx_DECREF(__pyx_t_14); __pyx_t_14 = 0;
+        __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
+
+124:                     if font_size > 5:
+
        __pyx_t_10 = ((__pyx_v_font_size > 5) != 0);
+        if (__pyx_t_10) {
+/* … */
+        }
+
+125:                         font = (None, font_size)
+
          __pyx_t_2 = __Pyx_PyInt_From_int(__pyx_v_font_size); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 125, __pyx_L1_error)
+          __Pyx_GOTREF(__pyx_t_2);
+          __pyx_t_14 = PyTuple_New(2); if (unlikely(!__pyx_t_14)) __PYX_ERR(0, 125, __pyx_L1_error)
+          __Pyx_GOTREF(__pyx_t_14);
+          __Pyx_INCREF(Py_None);
+          __Pyx_GIVEREF(Py_None);
+          PyTuple_SET_ITEM(__pyx_t_14, 0, Py_None);
+          __Pyx_GIVEREF(__pyx_t_2);
+          PyTuple_SET_ITEM(__pyx_t_14, 1, __pyx_t_2);
+          __pyx_t_2 = 0;
+          __Pyx_XDECREF_SET(__pyx_v_font, ((PyObject*)__pyx_t_14));
+          __pyx_t_14 = 0;
+
+126:                         self.gameDisplay.blit(Object.Make_Text(font) ,(PosX+width,PosY))
+
          __pyx_t_2 = __Pyx_PyObject_GetAttrStr(__pyx_v_self, __pyx_n_s_gameDisplay); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 126, __pyx_L1_error)
+          __Pyx_GOTREF(__pyx_t_2);
+          __pyx_t_4 = __Pyx_PyObject_GetAttrStr(__pyx_t_2, __pyx_n_s_blit); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 126, __pyx_L1_error)
+          __Pyx_GOTREF(__pyx_t_4);
+          __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
+          __pyx_t_3 = __Pyx_PyObject_GetAttrStr(__pyx_v_Object, __pyx_n_s_Make_Text); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 126, __pyx_L1_error)
+          __Pyx_GOTREF(__pyx_t_3);
+          __pyx_t_12 = NULL;
+          if (CYTHON_UNPACK_METHODS && likely(PyMethod_Check(__pyx_t_3))) {
+            __pyx_t_12 = PyMethod_GET_SELF(__pyx_t_3);
+            if (likely(__pyx_t_12)) {
+              PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_3);
+              __Pyx_INCREF(__pyx_t_12);
+              __Pyx_INCREF(function);
+              __Pyx_DECREF_SET(__pyx_t_3, function);
+            }
+          }
+          if (!__pyx_t_12) {
+            __pyx_t_2 = __Pyx_PyObject_CallOneArg(__pyx_t_3, __pyx_v_font); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 126, __pyx_L1_error)
+            __Pyx_GOTREF(__pyx_t_2);
+          } else {
+            #if CYTHON_FAST_PYCALL
+            if (PyFunction_Check(__pyx_t_3)) {
+              PyObject *__pyx_temp[2] = {__pyx_t_12, __pyx_v_font};
+              __pyx_t_2 = __Pyx_PyFunction_FastCall(__pyx_t_3, __pyx_temp+1-1, 1+1); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 126, __pyx_L1_error)
+              __Pyx_XDECREF(__pyx_t_12); __pyx_t_12 = 0;
+              __Pyx_GOTREF(__pyx_t_2);
+            } else
+            #endif
+            #if CYTHON_FAST_PYCCALL
+            if (__Pyx_PyFastCFunction_Check(__pyx_t_3)) {
+              PyObject *__pyx_temp[2] = {__pyx_t_12, __pyx_v_font};
+              __pyx_t_2 = __Pyx_PyCFunction_FastCall(__pyx_t_3, __pyx_temp+1-1, 1+1); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 126, __pyx_L1_error)
+              __Pyx_XDECREF(__pyx_t_12); __pyx_t_12 = 0;
+              __Pyx_GOTREF(__pyx_t_2);
+            } else
+            #endif
+            {
+              __pyx_t_13 = PyTuple_New(1+1); if (unlikely(!__pyx_t_13)) __PYX_ERR(0, 126, __pyx_L1_error)
+              __Pyx_GOTREF(__pyx_t_13);
+              __Pyx_GIVEREF(__pyx_t_12); PyTuple_SET_ITEM(__pyx_t_13, 0, __pyx_t_12); __pyx_t_12 = NULL;
+              __Pyx_INCREF(__pyx_v_font);
+              __Pyx_GIVEREF(__pyx_v_font);
+              PyTuple_SET_ITEM(__pyx_t_13, 0+1, __pyx_v_font);
+              __pyx_t_2 = __Pyx_PyObject_Call(__pyx_t_3, __pyx_t_13, NULL); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 126, __pyx_L1_error)
+              __Pyx_GOTREF(__pyx_t_2);
+              __Pyx_DECREF(__pyx_t_13); __pyx_t_13 = 0;
+            }
+          }
+          __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
+          __pyx_t_3 = PyFloat_FromDouble((__pyx_v_PosX + __pyx_v_width)); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 126, __pyx_L1_error)
+          __Pyx_GOTREF(__pyx_t_3);
+          __pyx_t_13 = PyFloat_FromDouble(__pyx_v_PosY); if (unlikely(!__pyx_t_13)) __PYX_ERR(0, 126, __pyx_L1_error)
+          __Pyx_GOTREF(__pyx_t_13);
+          __pyx_t_12 = PyTuple_New(2); if (unlikely(!__pyx_t_12)) __PYX_ERR(0, 126, __pyx_L1_error)
+          __Pyx_GOTREF(__pyx_t_12);
+          __Pyx_GIVEREF(__pyx_t_3);
+          PyTuple_SET_ITEM(__pyx_t_12, 0, __pyx_t_3);
+          __Pyx_GIVEREF(__pyx_t_13);
+          PyTuple_SET_ITEM(__pyx_t_12, 1, __pyx_t_13);
+          __pyx_t_3 = 0;
+          __pyx_t_13 = 0;
+          __pyx_t_13 = NULL;
+          __pyx_t_7 = 0;
+          if (CYTHON_UNPACK_METHODS && likely(PyMethod_Check(__pyx_t_4))) {
+            __pyx_t_13 = PyMethod_GET_SELF(__pyx_t_4);
+            if (likely(__pyx_t_13)) {
+              PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_4);
+              __Pyx_INCREF(__pyx_t_13);
+              __Pyx_INCREF(function);
+              __Pyx_DECREF_SET(__pyx_t_4, function);
+              __pyx_t_7 = 1;
+            }
+          }
+          #if CYTHON_FAST_PYCALL
+          if (PyFunction_Check(__pyx_t_4)) {
+            PyObject *__pyx_temp[3] = {__pyx_t_13, __pyx_t_2, __pyx_t_12};
+            __pyx_t_14 = __Pyx_PyFunction_FastCall(__pyx_t_4, __pyx_temp+1-__pyx_t_7, 2+__pyx_t_7); if (unlikely(!__pyx_t_14)) __PYX_ERR(0, 126, __pyx_L1_error)
+            __Pyx_XDECREF(__pyx_t_13); __pyx_t_13 = 0;
+            __Pyx_GOTREF(__pyx_t_14);
+            __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
+            __Pyx_DECREF(__pyx_t_12); __pyx_t_12 = 0;
+          } else
+          #endif
+          #if CYTHON_FAST_PYCCALL
+          if (__Pyx_PyFastCFunction_Check(__pyx_t_4)) {
+            PyObject *__pyx_temp[3] = {__pyx_t_13, __pyx_t_2, __pyx_t_12};
+            __pyx_t_14 = __Pyx_PyCFunction_FastCall(__pyx_t_4, __pyx_temp+1-__pyx_t_7, 2+__pyx_t_7); if (unlikely(!__pyx_t_14)) __PYX_ERR(0, 126, __pyx_L1_error)
+            __Pyx_XDECREF(__pyx_t_13); __pyx_t_13 = 0;
+            __Pyx_GOTREF(__pyx_t_14);
+            __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
+            __Pyx_DECREF(__pyx_t_12); __pyx_t_12 = 0;
+          } else
+          #endif
+          {
+            __pyx_t_3 = PyTuple_New(2+__pyx_t_7); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 126, __pyx_L1_error)
+            __Pyx_GOTREF(__pyx_t_3);
+            if (__pyx_t_13) {
+              __Pyx_GIVEREF(__pyx_t_13); PyTuple_SET_ITEM(__pyx_t_3, 0, __pyx_t_13); __pyx_t_13 = NULL;
+            }
+            __Pyx_GIVEREF(__pyx_t_2);
+            PyTuple_SET_ITEM(__pyx_t_3, 0+__pyx_t_7, __pyx_t_2);
+            __Pyx_GIVEREF(__pyx_t_12);
+            PyTuple_SET_ITEM(__pyx_t_3, 1+__pyx_t_7, __pyx_t_12);
+            __pyx_t_2 = 0;
+            __pyx_t_12 = 0;
+            __pyx_t_14 = __Pyx_PyObject_Call(__pyx_t_4, __pyx_t_3, NULL); if (unlikely(!__pyx_t_14)) __PYX_ERR(0, 126, __pyx_L1_error)
+            __Pyx_GOTREF(__pyx_t_14);
+            __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
+          }
+          __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
+          __Pyx_DECREF(__pyx_t_14); __pyx_t_14 = 0;
+
 127: 
+
 128: 
+
 129: 
+
 130: 
+
 131: 
+
 132: 
+
+133: class Monitor_Sprite(pygame.sprite.Sprite):
+
  __pyx_t_1 = __Pyx_GetModuleGlobalName(__pyx_n_s_pygame); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 133, __pyx_L1_error)
+  __Pyx_GOTREF(__pyx_t_1);
+  __pyx_t_3 = __Pyx_PyObject_GetAttrStr(__pyx_t_1, __pyx_n_s_sprite); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 133, __pyx_L1_error)
+  __Pyx_GOTREF(__pyx_t_3);
+  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
+  __pyx_t_1 = __Pyx_PyObject_GetAttrStr(__pyx_t_3, __pyx_n_s_Sprite); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 133, __pyx_L1_error)
+  __Pyx_GOTREF(__pyx_t_1);
+  __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
+  __pyx_t_3 = PyTuple_New(1); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 133, __pyx_L1_error)
+  __Pyx_GOTREF(__pyx_t_3);
+  __Pyx_GIVEREF(__pyx_t_1);
+  PyTuple_SET_ITEM(__pyx_t_3, 0, __pyx_t_1);
+  __pyx_t_1 = 0;
+  __pyx_t_1 = __Pyx_CalculateMetaclass(NULL, __pyx_t_3); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 133, __pyx_L1_error)
+  __Pyx_GOTREF(__pyx_t_1);
+  __pyx_t_2 = __Pyx_Py3MetaclassPrepare(__pyx_t_1, __pyx_t_3, __pyx_n_s_Monitor_Sprite, __pyx_n_s_Monitor_Sprite, (PyObject *) NULL, __pyx_n_s_CAStar_AATC_Monitor_Viewer, (PyObject *) NULL); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 133, __pyx_L1_error)
+  __Pyx_GOTREF(__pyx_t_2);
+/* … */
+  __pyx_t_4 = __Pyx_Py3ClassCreate(__pyx_t_1, __pyx_n_s_Monitor_Sprite, __pyx_t_3, __pyx_t_2, NULL, 0, 1); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 133, __pyx_L1_error)
+  __Pyx_GOTREF(__pyx_t_4);
+  if (PyDict_SetItem(__pyx_d, __pyx_n_s_Monitor_Sprite, __pyx_t_4) < 0) __PYX_ERR(0, 133, __pyx_L1_error)
+  __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
+  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
+  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
+  __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
+
+134:     def __init__(self,CoordObject,Type = "",Text = "",Colour = (255,255,255)):
+
/* Python wrapper */
+static PyObject *__pyx_pw_6CAStar_19AATC_Monitor_Viewer_14Monitor_Sprite_1__init__(PyObject *__pyx_self, PyObject *__pyx_args, PyObject *__pyx_kwds); /*proto*/
+static PyMethodDef __pyx_mdef_6CAStar_19AATC_Monitor_Viewer_14Monitor_Sprite_1__init__ = {"__init__", (PyCFunction)__pyx_pw_6CAStar_19AATC_Monitor_Viewer_14Monitor_Sprite_1__init__, METH_VARARGS|METH_KEYWORDS, 0};
+static PyObject *__pyx_pw_6CAStar_19AATC_Monitor_Viewer_14Monitor_Sprite_1__init__(PyObject *__pyx_self, PyObject *__pyx_args, PyObject *__pyx_kwds) {
+  PyObject *__pyx_v_self = 0;
+  PyObject *__pyx_v_CoordObject = 0;
+  PyObject *__pyx_v_Type = 0;
+  PyObject *__pyx_v_Text = 0;
+  PyObject *__pyx_v_Colour = 0;
+  PyObject *__pyx_r = 0;
+  __Pyx_RefNannyDeclarations
+  __Pyx_RefNannySetupContext("__init__ (wrapper)", 0);
+  {
+    static PyObject **__pyx_pyargnames[] = {&__pyx_n_s_self,&__pyx_n_s_CoordObject,&__pyx_n_s_Type,&__pyx_n_s_Text,&__pyx_n_s_Colour,0};
+    PyObject* values[5] = {0,0,0,0,0};
+    values[2] = ((PyObject *)((PyObject*)__pyx_kp_s__2));
+    values[3] = ((PyObject *)((PyObject*)__pyx_kp_s__2));
+    values[4] = ((PyObject *)((PyObject*)__pyx_tuple__3));
+    if (unlikely(__pyx_kwds)) {
+      Py_ssize_t kw_args;
+      const Py_ssize_t pos_args = PyTuple_GET_SIZE(__pyx_args);
+      switch (pos_args) {
+        case  5: values[4] = PyTuple_GET_ITEM(__pyx_args, 4);
+        CYTHON_FALLTHROUGH;
+        case  4: values[3] = PyTuple_GET_ITEM(__pyx_args, 3);
+        CYTHON_FALLTHROUGH;
+        case  3: values[2] = PyTuple_GET_ITEM(__pyx_args, 2);
+        CYTHON_FALLTHROUGH;
+        case  2: values[1] = PyTuple_GET_ITEM(__pyx_args, 1);
+        CYTHON_FALLTHROUGH;
+        case  1: values[0] = PyTuple_GET_ITEM(__pyx_args, 0);
+        CYTHON_FALLTHROUGH;
+        case  0: break;
+        default: goto __pyx_L5_argtuple_error;
+      }
+      kw_args = PyDict_Size(__pyx_kwds);
+      switch (pos_args) {
+        case  0:
+        if (likely((values[0] = PyDict_GetItem(__pyx_kwds, __pyx_n_s_self)) != 0)) kw_args--;
+        else goto __pyx_L5_argtuple_error;
+        CYTHON_FALLTHROUGH;
+        case  1:
+        if (likely((values[1] = PyDict_GetItem(__pyx_kwds, __pyx_n_s_CoordObject)) != 0)) kw_args--;
+        else {
+          __Pyx_RaiseArgtupleInvalid("__init__", 0, 2, 5, 1); __PYX_ERR(0, 134, __pyx_L3_error)
+        }
+        CYTHON_FALLTHROUGH;
+        case  2:
+        if (kw_args > 0) {
+          PyObject* value = PyDict_GetItem(__pyx_kwds, __pyx_n_s_Type);
+          if (value) { values[2] = value; kw_args--; }
+        }
+        CYTHON_FALLTHROUGH;
+        case  3:
+        if (kw_args > 0) {
+          PyObject* value = PyDict_GetItem(__pyx_kwds, __pyx_n_s_Text);
+          if (value) { values[3] = value; kw_args--; }
+        }
+        CYTHON_FALLTHROUGH;
+        case  4:
+        if (kw_args > 0) {
+          PyObject* value = PyDict_GetItem(__pyx_kwds, __pyx_n_s_Colour);
+          if (value) { values[4] = value; kw_args--; }
+        }
+      }
+      if (unlikely(kw_args > 0)) {
+        if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_pyargnames, 0, values, pos_args, "__init__") < 0)) __PYX_ERR(0, 134, __pyx_L3_error)
+      }
+    } else {
+      switch (PyTuple_GET_SIZE(__pyx_args)) {
+        case  5: values[4] = PyTuple_GET_ITEM(__pyx_args, 4);
+        CYTHON_FALLTHROUGH;
+        case  4: values[3] = PyTuple_GET_ITEM(__pyx_args, 3);
+        CYTHON_FALLTHROUGH;
+        case  3: values[2] = PyTuple_GET_ITEM(__pyx_args, 2);
+        CYTHON_FALLTHROUGH;
+        case  2: values[1] = PyTuple_GET_ITEM(__pyx_args, 1);
+        values[0] = PyTuple_GET_ITEM(__pyx_args, 0);
+        break;
+        default: goto __pyx_L5_argtuple_error;
+      }
+    }
+    __pyx_v_self = values[0];
+    __pyx_v_CoordObject = values[1];
+    __pyx_v_Type = values[2];
+    __pyx_v_Text = values[3];
+    __pyx_v_Colour = values[4];
+  }
+  goto __pyx_L4_argument_unpacking_done;
+  __pyx_L5_argtuple_error:;
+  __Pyx_RaiseArgtupleInvalid("__init__", 0, 2, 5, PyTuple_GET_SIZE(__pyx_args)); __PYX_ERR(0, 134, __pyx_L3_error)
+  __pyx_L3_error:;
+  __Pyx_AddTraceback("CAStar.AATC_Monitor_Viewer.Monitor_Sprite.__init__", __pyx_clineno, __pyx_lineno, __pyx_filename);
+  __Pyx_RefNannyFinishContext();
+  return NULL;
+  __pyx_L4_argument_unpacking_done:;
+  __pyx_r = __pyx_pf_6CAStar_19AATC_Monitor_Viewer_14Monitor_Sprite___init__(__pyx_self, __pyx_v_self, __pyx_v_CoordObject, __pyx_v_Type, __pyx_v_Text, __pyx_v_Colour);
+
+  /* function exit code */
+  __Pyx_RefNannyFinishContext();
+  return __pyx_r;
+}
+
+static PyObject *__pyx_pf_6CAStar_19AATC_Monitor_Viewer_14Monitor_Sprite___init__(CYTHON_UNUSED PyObject *__pyx_self, PyObject *__pyx_v_self, PyObject *__pyx_v_CoordObject, PyObject *__pyx_v_Type, PyObject *__pyx_v_Text, PyObject *__pyx_v_Colour) {
+  PyObject *__pyx_r = NULL;
+  __Pyx_RefNannyDeclarations
+  __Pyx_RefNannySetupContext("__init__", 0);
+/* … */
+  __pyx_tuple__3 = PyTuple_Pack(3, __pyx_int_255, __pyx_int_255, __pyx_int_255); if (unlikely(!__pyx_tuple__3)) __PYX_ERR(0, 134, __pyx_L1_error)
+  __Pyx_GOTREF(__pyx_tuple__3);
+  __Pyx_GIVEREF(__pyx_tuple__3);
+/* … */
+  /* function exit code */
+  __pyx_r = Py_None; __Pyx_INCREF(Py_None);
+  goto __pyx_L0;
+  __pyx_L1_error:;
+  __Pyx_XDECREF(__pyx_t_1);
+  __Pyx_XDECREF(__pyx_t_2);
+  __Pyx_AddTraceback("CAStar.AATC_Monitor_Viewer.Monitor_Sprite.__init__", __pyx_clineno, __pyx_lineno, __pyx_filename);
+  __pyx_r = NULL;
+  __pyx_L0:;
+  __Pyx_XGIVEREF(__pyx_r);
+  __Pyx_RefNannyFinishContext();
+  return __pyx_r;
+}
+/* … */
+  __pyx_tuple__60 = PyTuple_Pack(5, __pyx_n_s_self, __pyx_n_s_CoordObject, __pyx_n_s_Type, __pyx_n_s_Text, __pyx_n_s_Colour); if (unlikely(!__pyx_tuple__60)) __PYX_ERR(0, 134, __pyx_L1_error)
+  __Pyx_GOTREF(__pyx_tuple__60);
+  __Pyx_GIVEREF(__pyx_tuple__60);
+  __pyx_codeobj__61 = (PyObject*)__Pyx_PyCode_New(5, 0, 5, 0, 0, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__60, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_AATC_Monitor_Viewer_pyx, __pyx_n_s_init_2, 134, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__61)) __PYX_ERR(0, 134, __pyx_L1_error)
+/* … */
+  __pyx_t_4 = __Pyx_CyFunction_NewEx(&__pyx_mdef_6CAStar_19AATC_Monitor_Viewer_14Monitor_Sprite_1__init__, 0, __pyx_n_s_Monitor_Sprite___init, NULL, __pyx_n_s_CAStar_AATC_Monitor_Viewer, __pyx_d, ((PyObject *)__pyx_codeobj__61)); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 134, __pyx_L1_error)
+  __Pyx_GOTREF(__pyx_t_4);
+  __Pyx_CyFunction_SetDefaultsTuple(__pyx_t_4, __pyx_tuple__62);
+  if (PyObject_SetItem(__pyx_t_2, __pyx_n_s_init_2, __pyx_t_4) < 0) __PYX_ERR(0, 134, __pyx_L1_error)
+  __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
+  __pyx_tuple__62 = PyTuple_Pack(3, ((PyObject*)__pyx_kp_s__2), ((PyObject*)__pyx_kp_s__2), ((PyObject*)__pyx_tuple__3)); if (unlikely(!__pyx_tuple__62)) __PYX_ERR(0, 134, __pyx_L1_error)
+  __Pyx_GOTREF(__pyx_tuple__62);
+  __Pyx_GIVEREF(__pyx_tuple__62);
+
+135:         self.Coords = CoordObject
+
  if (__Pyx_PyObject_SetAttrStr(__pyx_v_self, __pyx_n_s_Coords, __pyx_v_CoordObject) < 0) __PYX_ERR(0, 135, __pyx_L1_error)
+
+136:         self.Type = Type
+
  if (__Pyx_PyObject_SetAttrStr(__pyx_v_self, __pyx_n_s_Type, __pyx_v_Type) < 0) __PYX_ERR(0, 136, __pyx_L1_error)
+
+137:         self.Text = Text
+
  if (__Pyx_PyObject_SetAttrStr(__pyx_v_self, __pyx_n_s_Text, __pyx_v_Text) < 0) __PYX_ERR(0, 137, __pyx_L1_error)
+
+138:         self.Colour = Colour
+
  if (__Pyx_PyObject_SetAttrStr(__pyx_v_self, __pyx_n_s_Colour, __pyx_v_Colour) < 0) __PYX_ERR(0, 138, __pyx_L1_error)
+
+139:         self.image = pygame.Surface((1,1))
+
  __pyx_t_1 = __Pyx_GetModuleGlobalName(__pyx_n_s_pygame); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 139, __pyx_L1_error)
+  __Pyx_GOTREF(__pyx_t_1);
+  __pyx_t_2 = __Pyx_PyObject_GetAttrStr(__pyx_t_1, __pyx_n_s_Surface); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 139, __pyx_L1_error)
+  __Pyx_GOTREF(__pyx_t_2);
+  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
+/* … */
+  __pyx_tuple__4 = PyTuple_Pack(2, __pyx_int_1, __pyx_int_1); if (unlikely(!__pyx_tuple__4)) __PYX_ERR(0, 139, __pyx_L1_error)
+  __Pyx_GOTREF(__pyx_tuple__4);
+  __Pyx_GIVEREF(__pyx_tuple__4);
+  __pyx_t_1 = __Pyx_PyObject_Call(__pyx_t_2, __pyx_tuple__5, NULL); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 139, __pyx_L1_error)
+  __Pyx_GOTREF(__pyx_t_1);
+  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
+  if (__Pyx_PyObject_SetAttrStr(__pyx_v_self, __pyx_n_s_image, __pyx_t_1) < 0) __PYX_ERR(0, 139, __pyx_L1_error)
+  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
+  __pyx_tuple__5 = PyTuple_Pack(1, __pyx_tuple__4); if (unlikely(!__pyx_tuple__5)) __PYX_ERR(0, 139, __pyx_L1_error)
+  __Pyx_GOTREF(__pyx_tuple__5);
+  __Pyx_GIVEREF(__pyx_tuple__5);
+
 140:         #self.Make_Image(2,2)     # No longer needed, is similar to that above.
+
 141: 
+
+142:     def Make_Image(self, int width, int height):
+
/* Python wrapper */
+static PyObject *__pyx_pw_6CAStar_19AATC_Monitor_Viewer_14Monitor_Sprite_3Make_Image(PyObject *__pyx_self, PyObject *__pyx_args, PyObject *__pyx_kwds); /*proto*/
+static PyMethodDef __pyx_mdef_6CAStar_19AATC_Monitor_Viewer_14Monitor_Sprite_3Make_Image = {"Make_Image", (PyCFunction)__pyx_pw_6CAStar_19AATC_Monitor_Viewer_14Monitor_Sprite_3Make_Image, METH_VARARGS|METH_KEYWORDS, 0};
+static PyObject *__pyx_pw_6CAStar_19AATC_Monitor_Viewer_14Monitor_Sprite_3Make_Image(PyObject *__pyx_self, PyObject *__pyx_args, PyObject *__pyx_kwds) {
+  PyObject *__pyx_v_self = 0;
+  int __pyx_v_width;
+  int __pyx_v_height;
+  PyObject *__pyx_r = 0;
+  __Pyx_RefNannyDeclarations
+  __Pyx_RefNannySetupContext("Make_Image (wrapper)", 0);
+  {
+    static PyObject **__pyx_pyargnames[] = {&__pyx_n_s_self,&__pyx_n_s_width,&__pyx_n_s_height,0};
+    PyObject* values[3] = {0,0,0};
+    if (unlikely(__pyx_kwds)) {
+      Py_ssize_t kw_args;
+      const Py_ssize_t pos_args = PyTuple_GET_SIZE(__pyx_args);
+      switch (pos_args) {
+        case  3: values[2] = PyTuple_GET_ITEM(__pyx_args, 2);
+        CYTHON_FALLTHROUGH;
+        case  2: values[1] = PyTuple_GET_ITEM(__pyx_args, 1);
+        CYTHON_FALLTHROUGH;
+        case  1: values[0] = PyTuple_GET_ITEM(__pyx_args, 0);
+        CYTHON_FALLTHROUGH;
+        case  0: break;
+        default: goto __pyx_L5_argtuple_error;
+      }
+      kw_args = PyDict_Size(__pyx_kwds);
+      switch (pos_args) {
+        case  0:
+        if (likely((values[0] = PyDict_GetItem(__pyx_kwds, __pyx_n_s_self)) != 0)) kw_args--;
+        else goto __pyx_L5_argtuple_error;
+        CYTHON_FALLTHROUGH;
+        case  1:
+        if (likely((values[1] = PyDict_GetItem(__pyx_kwds, __pyx_n_s_width)) != 0)) kw_args--;
+        else {
+          __Pyx_RaiseArgtupleInvalid("Make_Image", 1, 3, 3, 1); __PYX_ERR(0, 142, __pyx_L3_error)
+        }
+        CYTHON_FALLTHROUGH;
+        case  2:
+        if (likely((values[2] = PyDict_GetItem(__pyx_kwds, __pyx_n_s_height)) != 0)) kw_args--;
+        else {
+          __Pyx_RaiseArgtupleInvalid("Make_Image", 1, 3, 3, 2); __PYX_ERR(0, 142, __pyx_L3_error)
+        }
+      }
+      if (unlikely(kw_args > 0)) {
+        if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_pyargnames, 0, values, pos_args, "Make_Image") < 0)) __PYX_ERR(0, 142, __pyx_L3_error)
+      }
+    } else if (PyTuple_GET_SIZE(__pyx_args) != 3) {
+      goto __pyx_L5_argtuple_error;
+    } else {
+      values[0] = PyTuple_GET_ITEM(__pyx_args, 0);
+      values[1] = PyTuple_GET_ITEM(__pyx_args, 1);
+      values[2] = PyTuple_GET_ITEM(__pyx_args, 2);
+    }
+    __pyx_v_self = values[0];
+    __pyx_v_width = __Pyx_PyInt_As_int(values[1]); if (unlikely((__pyx_v_width == (int)-1) && PyErr_Occurred())) __PYX_ERR(0, 142, __pyx_L3_error)
+    __pyx_v_height = __Pyx_PyInt_As_int(values[2]); if (unlikely((__pyx_v_height == (int)-1) && PyErr_Occurred())) __PYX_ERR(0, 142, __pyx_L3_error)
+  }
+  goto __pyx_L4_argument_unpacking_done;
+  __pyx_L5_argtuple_error:;
+  __Pyx_RaiseArgtupleInvalid("Make_Image", 1, 3, 3, PyTuple_GET_SIZE(__pyx_args)); __PYX_ERR(0, 142, __pyx_L3_error)
+  __pyx_L3_error:;
+  __Pyx_AddTraceback("CAStar.AATC_Monitor_Viewer.Monitor_Sprite.Make_Image", __pyx_clineno, __pyx_lineno, __pyx_filename);
+  __Pyx_RefNannyFinishContext();
+  return NULL;
+  __pyx_L4_argument_unpacking_done:;
+  __pyx_r = __pyx_pf_6CAStar_19AATC_Monitor_Viewer_14Monitor_Sprite_2Make_Image(__pyx_self, __pyx_v_self, __pyx_v_width, __pyx_v_height);
+
+  /* function exit code */
+  __Pyx_RefNannyFinishContext();
+  return __pyx_r;
+}
+
+static PyObject *__pyx_pf_6CAStar_19AATC_Monitor_Viewer_14Monitor_Sprite_2Make_Image(CYTHON_UNUSED PyObject *__pyx_self, PyObject *__pyx_v_self, int __pyx_v_width, int __pyx_v_height) {
+  PyObject *__pyx_r = NULL;
+  __Pyx_RefNannyDeclarations
+  __Pyx_RefNannySetupContext("Make_Image", 0);
+/* … */
+  /* function exit code */
+  __pyx_L1_error:;
+  __Pyx_XDECREF(__pyx_t_1);
+  __Pyx_XDECREF(__pyx_t_2);
+  __Pyx_XDECREF(__pyx_t_3);
+  __Pyx_XDECREF(__pyx_t_4);
+  __Pyx_XDECREF(__pyx_t_6);
+  __Pyx_XDECREF(__pyx_t_7);
+  __Pyx_XDECREF(__pyx_t_9);
+  __Pyx_AddTraceback("CAStar.AATC_Monitor_Viewer.Monitor_Sprite.Make_Image", __pyx_clineno, __pyx_lineno, __pyx_filename);
+  __pyx_r = NULL;
+  __pyx_L0:;
+  __Pyx_XGIVEREF(__pyx_r);
+  __Pyx_RefNannyFinishContext();
+  return __pyx_r;
+}
+/* … */
+  __pyx_tuple__63 = PyTuple_Pack(3, __pyx_n_s_self, __pyx_n_s_width, __pyx_n_s_height); if (unlikely(!__pyx_tuple__63)) __PYX_ERR(0, 142, __pyx_L1_error)
+  __Pyx_GOTREF(__pyx_tuple__63);
+  __Pyx_GIVEREF(__pyx_tuple__63);
+/* … */
+  __pyx_t_4 = __Pyx_CyFunction_NewEx(&__pyx_mdef_6CAStar_19AATC_Monitor_Viewer_14Monitor_Sprite_3Make_Image, 0, __pyx_n_s_Monitor_Sprite_Make_Image, NULL, __pyx_n_s_CAStar_AATC_Monitor_Viewer, __pyx_d, ((PyObject *)__pyx_codeobj__64)); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 142, __pyx_L1_error)
+  __Pyx_GOTREF(__pyx_t_4);
+  if (PyObject_SetItem(__pyx_t_2, __pyx_n_s_Make_Image, __pyx_t_4) < 0) __PYX_ERR(0, 142, __pyx_L1_error)
+  __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
+  __pyx_codeobj__64 = (PyObject*)__Pyx_PyCode_New(3, 0, 3, 0, 0, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__63, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_AATC_Monitor_Viewer_pyx, __pyx_n_s_Make_Image, 142, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__64)) __PYX_ERR(0, 142, __pyx_L1_error)
+
+143:         if self.image.get_size() != (width,height):  #If new image does not match with previous
+
  __pyx_t_2 = __Pyx_PyObject_GetAttrStr(__pyx_v_self, __pyx_n_s_image); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 143, __pyx_L1_error)
+  __Pyx_GOTREF(__pyx_t_2);
+  __pyx_t_3 = __Pyx_PyObject_GetAttrStr(__pyx_t_2, __pyx_n_s_get_size); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 143, __pyx_L1_error)
+  __Pyx_GOTREF(__pyx_t_3);
+  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
+  __pyx_t_2 = NULL;
+  if (CYTHON_UNPACK_METHODS && likely(PyMethod_Check(__pyx_t_3))) {
+    __pyx_t_2 = PyMethod_GET_SELF(__pyx_t_3);
+    if (likely(__pyx_t_2)) {
+      PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_3);
+      __Pyx_INCREF(__pyx_t_2);
+      __Pyx_INCREF(function);
+      __Pyx_DECREF_SET(__pyx_t_3, function);
+    }
+  }
+  if (__pyx_t_2) {
+    __pyx_t_1 = __Pyx_PyObject_CallOneArg(__pyx_t_3, __pyx_t_2); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 143, __pyx_L1_error)
+    __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
+  } else {
+    __pyx_t_1 = __Pyx_PyObject_CallNoArg(__pyx_t_3); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 143, __pyx_L1_error)
+  }
+  __Pyx_GOTREF(__pyx_t_1);
+  __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
+  __pyx_t_3 = __Pyx_PyInt_From_int(__pyx_v_width); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 143, __pyx_L1_error)
+  __Pyx_GOTREF(__pyx_t_3);
+  __pyx_t_2 = __Pyx_PyInt_From_int(__pyx_v_height); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 143, __pyx_L1_error)
+  __Pyx_GOTREF(__pyx_t_2);
+  __pyx_t_4 = PyTuple_New(2); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 143, __pyx_L1_error)
+  __Pyx_GOTREF(__pyx_t_4);
+  __Pyx_GIVEREF(__pyx_t_3);
+  PyTuple_SET_ITEM(__pyx_t_4, 0, __pyx_t_3);
+  __Pyx_GIVEREF(__pyx_t_2);
+  PyTuple_SET_ITEM(__pyx_t_4, 1, __pyx_t_2);
+  __pyx_t_3 = 0;
+  __pyx_t_2 = 0;
+  __pyx_t_2 = PyObject_RichCompare(__pyx_t_1, __pyx_t_4, Py_NE); __Pyx_XGOTREF(__pyx_t_2); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 143, __pyx_L1_error)
+  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
+  __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
+  __pyx_t_5 = __Pyx_PyObject_IsTrue(__pyx_t_2); if (unlikely(__pyx_t_5 < 0)) __PYX_ERR(0, 143, __pyx_L1_error)
+  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
+  if (__pyx_t_5) {
+/* … */
+  }
+
+144:             self.image = GetImage(width,height,self.Colour)
+
    __pyx_t_4 = __Pyx_GetModuleGlobalName(__pyx_n_s_GetImage); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 144, __pyx_L1_error)
+    __Pyx_GOTREF(__pyx_t_4);
+    __pyx_t_1 = __Pyx_PyInt_From_int(__pyx_v_width); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 144, __pyx_L1_error)
+    __Pyx_GOTREF(__pyx_t_1);
+    __pyx_t_3 = __Pyx_PyInt_From_int(__pyx_v_height); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 144, __pyx_L1_error)
+    __Pyx_GOTREF(__pyx_t_3);
+    __pyx_t_6 = __Pyx_PyObject_GetAttrStr(__pyx_v_self, __pyx_n_s_Colour); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 144, __pyx_L1_error)
+    __Pyx_GOTREF(__pyx_t_6);
+    __pyx_t_7 = NULL;
+    __pyx_t_8 = 0;
+    if (CYTHON_UNPACK_METHODS && unlikely(PyMethod_Check(__pyx_t_4))) {
+      __pyx_t_7 = PyMethod_GET_SELF(__pyx_t_4);
+      if (likely(__pyx_t_7)) {
+        PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_4);
+        __Pyx_INCREF(__pyx_t_7);
+        __Pyx_INCREF(function);
+        __Pyx_DECREF_SET(__pyx_t_4, function);
+        __pyx_t_8 = 1;
+      }
+    }
+    #if CYTHON_FAST_PYCALL
+    if (PyFunction_Check(__pyx_t_4)) {
+      PyObject *__pyx_temp[4] = {__pyx_t_7, __pyx_t_1, __pyx_t_3, __pyx_t_6};
+      __pyx_t_2 = __Pyx_PyFunction_FastCall(__pyx_t_4, __pyx_temp+1-__pyx_t_8, 3+__pyx_t_8); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 144, __pyx_L1_error)
+      __Pyx_XDECREF(__pyx_t_7); __pyx_t_7 = 0;
+      __Pyx_GOTREF(__pyx_t_2);
+      __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
+      __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
+      __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
+    } else
+    #endif
+    #if CYTHON_FAST_PYCCALL
+    if (__Pyx_PyFastCFunction_Check(__pyx_t_4)) {
+      PyObject *__pyx_temp[4] = {__pyx_t_7, __pyx_t_1, __pyx_t_3, __pyx_t_6};
+      __pyx_t_2 = __Pyx_PyCFunction_FastCall(__pyx_t_4, __pyx_temp+1-__pyx_t_8, 3+__pyx_t_8); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 144, __pyx_L1_error)
+      __Pyx_XDECREF(__pyx_t_7); __pyx_t_7 = 0;
+      __Pyx_GOTREF(__pyx_t_2);
+      __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
+      __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
+      __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
+    } else
+    #endif
+    {
+      __pyx_t_9 = PyTuple_New(3+__pyx_t_8); if (unlikely(!__pyx_t_9)) __PYX_ERR(0, 144, __pyx_L1_error)
+      __Pyx_GOTREF(__pyx_t_9);
+      if (__pyx_t_7) {
+        __Pyx_GIVEREF(__pyx_t_7); PyTuple_SET_ITEM(__pyx_t_9, 0, __pyx_t_7); __pyx_t_7 = NULL;
+      }
+      __Pyx_GIVEREF(__pyx_t_1);
+      PyTuple_SET_ITEM(__pyx_t_9, 0+__pyx_t_8, __pyx_t_1);
+      __Pyx_GIVEREF(__pyx_t_3);
+      PyTuple_SET_ITEM(__pyx_t_9, 1+__pyx_t_8, __pyx_t_3);
+      __Pyx_GIVEREF(__pyx_t_6);
+      PyTuple_SET_ITEM(__pyx_t_9, 2+__pyx_t_8, __pyx_t_6);
+      __pyx_t_1 = 0;
+      __pyx_t_3 = 0;
+      __pyx_t_6 = 0;
+      __pyx_t_2 = __Pyx_PyObject_Call(__pyx_t_4, __pyx_t_9, NULL); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 144, __pyx_L1_error)
+      __Pyx_GOTREF(__pyx_t_2);
+      __Pyx_DECREF(__pyx_t_9); __pyx_t_9 = 0;
+    }
+    __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
+    if (__Pyx_PyObject_SetAttrStr(__pyx_v_self, __pyx_n_s_image, __pyx_t_2) < 0) __PYX_ERR(0, 144, __pyx_L1_error)
+    __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
+
 145: 
+
+146:         return self.image
+
  __Pyx_XDECREF(__pyx_r);
+  __pyx_t_2 = __Pyx_PyObject_GetAttrStr(__pyx_v_self, __pyx_n_s_image); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 146, __pyx_L1_error)
+  __Pyx_GOTREF(__pyx_t_2);
+  __pyx_r = __pyx_t_2;
+  __pyx_t_2 = 0;
+  goto __pyx_L0;
+
 147: ##            self.image = pygame.Surface((width,height)).convert()
+
 148: ##            self.image.fill(self.Colour)
+
 149: 
+
+150:     def Make_Text(self,font):
+
/* Python wrapper */
+static PyObject *__pyx_pw_6CAStar_19AATC_Monitor_Viewer_14Monitor_Sprite_5Make_Text(PyObject *__pyx_self, PyObject *__pyx_args, PyObject *__pyx_kwds); /*proto*/
+static PyMethodDef __pyx_mdef_6CAStar_19AATC_Monitor_Viewer_14Monitor_Sprite_5Make_Text = {"Make_Text", (PyCFunction)__pyx_pw_6CAStar_19AATC_Monitor_Viewer_14Monitor_Sprite_5Make_Text, METH_VARARGS|METH_KEYWORDS, 0};
+static PyObject *__pyx_pw_6CAStar_19AATC_Monitor_Viewer_14Monitor_Sprite_5Make_Text(PyObject *__pyx_self, PyObject *__pyx_args, PyObject *__pyx_kwds) {
+  PyObject *__pyx_v_self = 0;
+  PyObject *__pyx_v_font = 0;
+  PyObject *__pyx_r = 0;
+  __Pyx_RefNannyDeclarations
+  __Pyx_RefNannySetupContext("Make_Text (wrapper)", 0);
+  {
+    static PyObject **__pyx_pyargnames[] = {&__pyx_n_s_self,&__pyx_n_s_font,0};
+    PyObject* values[2] = {0,0};
+    if (unlikely(__pyx_kwds)) {
+      Py_ssize_t kw_args;
+      const Py_ssize_t pos_args = PyTuple_GET_SIZE(__pyx_args);
+      switch (pos_args) {
+        case  2: values[1] = PyTuple_GET_ITEM(__pyx_args, 1);
+        CYTHON_FALLTHROUGH;
+        case  1: values[0] = PyTuple_GET_ITEM(__pyx_args, 0);
+        CYTHON_FALLTHROUGH;
+        case  0: break;
+        default: goto __pyx_L5_argtuple_error;
+      }
+      kw_args = PyDict_Size(__pyx_kwds);
+      switch (pos_args) {
+        case  0:
+        if (likely((values[0] = PyDict_GetItem(__pyx_kwds, __pyx_n_s_self)) != 0)) kw_args--;
+        else goto __pyx_L5_argtuple_error;
+        CYTHON_FALLTHROUGH;
+        case  1:
+        if (likely((values[1] = PyDict_GetItem(__pyx_kwds, __pyx_n_s_font)) != 0)) kw_args--;
+        else {
+          __Pyx_RaiseArgtupleInvalid("Make_Text", 1, 2, 2, 1); __PYX_ERR(0, 150, __pyx_L3_error)
+        }
+      }
+      if (unlikely(kw_args > 0)) {
+        if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_pyargnames, 0, values, pos_args, "Make_Text") < 0)) __PYX_ERR(0, 150, __pyx_L3_error)
+      }
+    } else if (PyTuple_GET_SIZE(__pyx_args) != 2) {
+      goto __pyx_L5_argtuple_error;
+    } else {
+      values[0] = PyTuple_GET_ITEM(__pyx_args, 0);
+      values[1] = PyTuple_GET_ITEM(__pyx_args, 1);
+    }
+    __pyx_v_self = values[0];
+    __pyx_v_font = values[1];
+  }
+  goto __pyx_L4_argument_unpacking_done;
+  __pyx_L5_argtuple_error:;
+  __Pyx_RaiseArgtupleInvalid("Make_Text", 1, 2, 2, PyTuple_GET_SIZE(__pyx_args)); __PYX_ERR(0, 150, __pyx_L3_error)
+  __pyx_L3_error:;
+  __Pyx_AddTraceback("CAStar.AATC_Monitor_Viewer.Monitor_Sprite.Make_Text", __pyx_clineno, __pyx_lineno, __pyx_filename);
+  __Pyx_RefNannyFinishContext();
+  return NULL;
+  __pyx_L4_argument_unpacking_done:;
+  __pyx_r = __pyx_pf_6CAStar_19AATC_Monitor_Viewer_14Monitor_Sprite_4Make_Text(__pyx_self, __pyx_v_self, __pyx_v_font);
+
+  /* function exit code */
+  __Pyx_RefNannyFinishContext();
+  return __pyx_r;
+}
+
+static PyObject *__pyx_pf_6CAStar_19AATC_Monitor_Viewer_14Monitor_Sprite_4Make_Text(CYTHON_UNUSED PyObject *__pyx_self, PyObject *__pyx_v_self, PyObject *__pyx_v_font) {
+  PyObject *__pyx_v_text = NULL;
+  PyObject *__pyx_r = NULL;
+  __Pyx_RefNannyDeclarations
+  __Pyx_RefNannySetupContext("Make_Text", 0);
+/* … */
+  /* function exit code */
+  __pyx_L1_error:;
+  __Pyx_XDECREF(__pyx_t_1);
+  __Pyx_XDECREF(__pyx_t_2);
+  __Pyx_XDECREF(__pyx_t_3);
+  __Pyx_XDECREF(__pyx_t_4);
+  __Pyx_XDECREF(__pyx_t_5);
+  __Pyx_AddTraceback("CAStar.AATC_Monitor_Viewer.Monitor_Sprite.Make_Text", __pyx_clineno, __pyx_lineno, __pyx_filename);
+  __pyx_r = NULL;
+  __pyx_L0:;
+  __Pyx_XDECREF(__pyx_v_text);
+  __Pyx_XGIVEREF(__pyx_r);
+  __Pyx_RefNannyFinishContext();
+  return __pyx_r;
+}
+/* … */
+  __pyx_tuple__65 = PyTuple_Pack(3, __pyx_n_s_self, __pyx_n_s_font, __pyx_n_s_text); if (unlikely(!__pyx_tuple__65)) __PYX_ERR(0, 150, __pyx_L1_error)
+  __Pyx_GOTREF(__pyx_tuple__65);
+  __Pyx_GIVEREF(__pyx_tuple__65);
+/* … */
+  __pyx_t_4 = __Pyx_CyFunction_NewEx(&__pyx_mdef_6CAStar_19AATC_Monitor_Viewer_14Monitor_Sprite_5Make_Text, 0, __pyx_n_s_Monitor_Sprite_Make_Text, NULL, __pyx_n_s_CAStar_AATC_Monitor_Viewer, __pyx_d, ((PyObject *)__pyx_codeobj__66)); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 150, __pyx_L1_error)
+  __Pyx_GOTREF(__pyx_t_4);
+  if (PyObject_SetItem(__pyx_t_2, __pyx_n_s_Make_Text, __pyx_t_4) < 0) __PYX_ERR(0, 150, __pyx_L1_error)
+  __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
+  __pyx_codeobj__66 = (PyObject*)__Pyx_PyCode_New(2, 0, 3, 0, 0, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__65, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_AATC_Monitor_Viewer_pyx, __pyx_n_s_Make_Text, 150, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__66)) __PYX_ERR(0, 150, __pyx_L1_error)
+
+151:         text = str((self.Coords.Get_X(),self.Coords.Get_Y(),self.Coords.Get_Z())) +" " +self.Text + " "+ self.Type
+
  __pyx_t_2 = __Pyx_PyObject_GetAttrStr(__pyx_v_self, __pyx_n_s_Coords); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 151, __pyx_L1_error)
+  __Pyx_GOTREF(__pyx_t_2);
+  __pyx_t_3 = __Pyx_PyObject_GetAttrStr(__pyx_t_2, __pyx_n_s_Get_X); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 151, __pyx_L1_error)
+  __Pyx_GOTREF(__pyx_t_3);
+  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
+  __pyx_t_2 = NULL;
+  if (CYTHON_UNPACK_METHODS && likely(PyMethod_Check(__pyx_t_3))) {
+    __pyx_t_2 = PyMethod_GET_SELF(__pyx_t_3);
+    if (likely(__pyx_t_2)) {
+      PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_3);
+      __Pyx_INCREF(__pyx_t_2);
+      __Pyx_INCREF(function);
+      __Pyx_DECREF_SET(__pyx_t_3, function);
+    }
+  }
+  if (__pyx_t_2) {
+    __pyx_t_1 = __Pyx_PyObject_CallOneArg(__pyx_t_3, __pyx_t_2); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 151, __pyx_L1_error)
+    __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
+  } else {
+    __pyx_t_1 = __Pyx_PyObject_CallNoArg(__pyx_t_3); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 151, __pyx_L1_error)
+  }
+  __Pyx_GOTREF(__pyx_t_1);
+  __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
+  __pyx_t_2 = __Pyx_PyObject_GetAttrStr(__pyx_v_self, __pyx_n_s_Coords); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 151, __pyx_L1_error)
+  __Pyx_GOTREF(__pyx_t_2);
+  __pyx_t_4 = __Pyx_PyObject_GetAttrStr(__pyx_t_2, __pyx_n_s_Get_Y); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 151, __pyx_L1_error)
+  __Pyx_GOTREF(__pyx_t_4);
+  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
+  __pyx_t_2 = NULL;
+  if (CYTHON_UNPACK_METHODS && likely(PyMethod_Check(__pyx_t_4))) {
+    __pyx_t_2 = PyMethod_GET_SELF(__pyx_t_4);
+    if (likely(__pyx_t_2)) {
+      PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_4);
+      __Pyx_INCREF(__pyx_t_2);
+      __Pyx_INCREF(function);
+      __Pyx_DECREF_SET(__pyx_t_4, function);
+    }
+  }
+  if (__pyx_t_2) {
+    __pyx_t_3 = __Pyx_PyObject_CallOneArg(__pyx_t_4, __pyx_t_2); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 151, __pyx_L1_error)
+    __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
+  } else {
+    __pyx_t_3 = __Pyx_PyObject_CallNoArg(__pyx_t_4); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 151, __pyx_L1_error)
+  }
+  __Pyx_GOTREF(__pyx_t_3);
+  __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
+  __pyx_t_2 = __Pyx_PyObject_GetAttrStr(__pyx_v_self, __pyx_n_s_Coords); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 151, __pyx_L1_error)
+  __Pyx_GOTREF(__pyx_t_2);
+  __pyx_t_5 = __Pyx_PyObject_GetAttrStr(__pyx_t_2, __pyx_n_s_Get_Z); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 151, __pyx_L1_error)
+  __Pyx_GOTREF(__pyx_t_5);
+  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
+  __pyx_t_2 = NULL;
+  if (CYTHON_UNPACK_METHODS && likely(PyMethod_Check(__pyx_t_5))) {
+    __pyx_t_2 = PyMethod_GET_SELF(__pyx_t_5);
+    if (likely(__pyx_t_2)) {
+      PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_5);
+      __Pyx_INCREF(__pyx_t_2);
+      __Pyx_INCREF(function);
+      __Pyx_DECREF_SET(__pyx_t_5, function);
+    }
+  }
+  if (__pyx_t_2) {
+    __pyx_t_4 = __Pyx_PyObject_CallOneArg(__pyx_t_5, __pyx_t_2); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 151, __pyx_L1_error)
+    __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
+  } else {
+    __pyx_t_4 = __Pyx_PyObject_CallNoArg(__pyx_t_5); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 151, __pyx_L1_error)
+  }
+  __Pyx_GOTREF(__pyx_t_4);
+  __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
+  __pyx_t_5 = PyTuple_New(3); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 151, __pyx_L1_error)
+  __Pyx_GOTREF(__pyx_t_5);
+  __Pyx_GIVEREF(__pyx_t_1);
+  PyTuple_SET_ITEM(__pyx_t_5, 0, __pyx_t_1);
+  __Pyx_GIVEREF(__pyx_t_3);
+  PyTuple_SET_ITEM(__pyx_t_5, 1, __pyx_t_3);
+  __Pyx_GIVEREF(__pyx_t_4);
+  PyTuple_SET_ITEM(__pyx_t_5, 2, __pyx_t_4);
+  __pyx_t_1 = 0;
+  __pyx_t_3 = 0;
+  __pyx_t_4 = 0;
+  __pyx_t_4 = PyTuple_New(1); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 151, __pyx_L1_error)
+  __Pyx_GOTREF(__pyx_t_4);
+  __Pyx_GIVEREF(__pyx_t_5);
+  PyTuple_SET_ITEM(__pyx_t_4, 0, __pyx_t_5);
+  __pyx_t_5 = 0;
+  __pyx_t_5 = __Pyx_PyObject_Call(((PyObject *)(&PyString_Type)), __pyx_t_4, NULL); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 151, __pyx_L1_error)
+  __Pyx_GOTREF(__pyx_t_5);
+  __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
+  __pyx_t_4 = PyNumber_Add(__pyx_t_5, __pyx_kp_s__6); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 151, __pyx_L1_error)
+  __Pyx_GOTREF(__pyx_t_4);
+  __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
+  __pyx_t_5 = __Pyx_PyObject_GetAttrStr(__pyx_v_self, __pyx_n_s_Text); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 151, __pyx_L1_error)
+  __Pyx_GOTREF(__pyx_t_5);
+  __pyx_t_3 = PyNumber_Add(__pyx_t_4, __pyx_t_5); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 151, __pyx_L1_error)
+  __Pyx_GOTREF(__pyx_t_3);
+  __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
+  __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
+  __pyx_t_5 = PyNumber_Add(__pyx_t_3, __pyx_kp_s__6); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 151, __pyx_L1_error)
+  __Pyx_GOTREF(__pyx_t_5);
+  __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
+  __pyx_t_3 = __Pyx_PyObject_GetAttrStr(__pyx_v_self, __pyx_n_s_Type); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 151, __pyx_L1_error)
+  __Pyx_GOTREF(__pyx_t_3);
+  __pyx_t_4 = PyNumber_Add(__pyx_t_5, __pyx_t_3); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 151, __pyx_L1_error)
+  __Pyx_GOTREF(__pyx_t_4);
+  __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
+  __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
+  __pyx_v_text = __pyx_t_4;
+  __pyx_t_4 = 0;
+
+152:         return GetText(text,font,False,self.Colour)
+
  __Pyx_XDECREF(__pyx_r);
+  __pyx_t_3 = __Pyx_GetModuleGlobalName(__pyx_n_s_GetText); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 152, __pyx_L1_error)
+  __Pyx_GOTREF(__pyx_t_3);
+  __pyx_t_5 = __Pyx_PyObject_GetAttrStr(__pyx_v_self, __pyx_n_s_Colour); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 152, __pyx_L1_error)
+  __Pyx_GOTREF(__pyx_t_5);
+  __pyx_t_1 = NULL;
+  __pyx_t_6 = 0;
+  if (CYTHON_UNPACK_METHODS && unlikely(PyMethod_Check(__pyx_t_3))) {
+    __pyx_t_1 = PyMethod_GET_SELF(__pyx_t_3);
+    if (likely(__pyx_t_1)) {
+      PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_3);
+      __Pyx_INCREF(__pyx_t_1);
+      __Pyx_INCREF(function);
+      __Pyx_DECREF_SET(__pyx_t_3, function);
+      __pyx_t_6 = 1;
+    }
+  }
+  #if CYTHON_FAST_PYCALL
+  if (PyFunction_Check(__pyx_t_3)) {
+    PyObject *__pyx_temp[5] = {__pyx_t_1, __pyx_v_text, __pyx_v_font, Py_False, __pyx_t_5};
+    __pyx_t_4 = __Pyx_PyFunction_FastCall(__pyx_t_3, __pyx_temp+1-__pyx_t_6, 4+__pyx_t_6); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 152, __pyx_L1_error)
+    __Pyx_XDECREF(__pyx_t_1); __pyx_t_1 = 0;
+    __Pyx_GOTREF(__pyx_t_4);
+    __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
+  } else
+  #endif
+  #if CYTHON_FAST_PYCCALL
+  if (__Pyx_PyFastCFunction_Check(__pyx_t_3)) {
+    PyObject *__pyx_temp[5] = {__pyx_t_1, __pyx_v_text, __pyx_v_font, Py_False, __pyx_t_5};
+    __pyx_t_4 = __Pyx_PyCFunction_FastCall(__pyx_t_3, __pyx_temp+1-__pyx_t_6, 4+__pyx_t_6); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 152, __pyx_L1_error)
+    __Pyx_XDECREF(__pyx_t_1); __pyx_t_1 = 0;
+    __Pyx_GOTREF(__pyx_t_4);
+    __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
+  } else
+  #endif
+  {
+    __pyx_t_2 = PyTuple_New(4+__pyx_t_6); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 152, __pyx_L1_error)
+    __Pyx_GOTREF(__pyx_t_2);
+    if (__pyx_t_1) {
+      __Pyx_GIVEREF(__pyx_t_1); PyTuple_SET_ITEM(__pyx_t_2, 0, __pyx_t_1); __pyx_t_1 = NULL;
+    }
+    __Pyx_INCREF(__pyx_v_text);
+    __Pyx_GIVEREF(__pyx_v_text);
+    PyTuple_SET_ITEM(__pyx_t_2, 0+__pyx_t_6, __pyx_v_text);
+    __Pyx_INCREF(__pyx_v_font);
+    __Pyx_GIVEREF(__pyx_v_font);
+    PyTuple_SET_ITEM(__pyx_t_2, 1+__pyx_t_6, __pyx_v_font);
+    __Pyx_INCREF(Py_False);
+    __Pyx_GIVEREF(Py_False);
+    PyTuple_SET_ITEM(__pyx_t_2, 2+__pyx_t_6, Py_False);
+    __Pyx_GIVEREF(__pyx_t_5);
+    PyTuple_SET_ITEM(__pyx_t_2, 3+__pyx_t_6, __pyx_t_5);
+    __pyx_t_5 = 0;
+    __pyx_t_4 = __Pyx_PyObject_Call(__pyx_t_3, __pyx_t_2, NULL); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 152, __pyx_L1_error)
+    __Pyx_GOTREF(__pyx_t_4);
+    __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
+  }
+  __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
+  __pyx_r = __pyx_t_4;
+  __pyx_t_4 = 0;
+  goto __pyx_L0;
+
 153: 
+
+154:     def Get_Coords(self):
+
/* Python wrapper */
+static PyObject *__pyx_pw_6CAStar_19AATC_Monitor_Viewer_14Monitor_Sprite_7Get_Coords(PyObject *__pyx_self, PyObject *__pyx_v_self); /*proto*/
+static PyMethodDef __pyx_mdef_6CAStar_19AATC_Monitor_Viewer_14Monitor_Sprite_7Get_Coords = {"Get_Coords", (PyCFunction)__pyx_pw_6CAStar_19AATC_Monitor_Viewer_14Monitor_Sprite_7Get_Coords, METH_O, 0};
+static PyObject *__pyx_pw_6CAStar_19AATC_Monitor_Viewer_14Monitor_Sprite_7Get_Coords(PyObject *__pyx_self, PyObject *__pyx_v_self) {
+  PyObject *__pyx_r = 0;
+  __Pyx_RefNannyDeclarations
+  __Pyx_RefNannySetupContext("Get_Coords (wrapper)", 0);
+  __pyx_r = __pyx_pf_6CAStar_19AATC_Monitor_Viewer_14Monitor_Sprite_6Get_Coords(__pyx_self, ((PyObject *)__pyx_v_self));
+
+  /* function exit code */
+  __Pyx_RefNannyFinishContext();
+  return __pyx_r;
+}
+
+static PyObject *__pyx_pf_6CAStar_19AATC_Monitor_Viewer_14Monitor_Sprite_6Get_Coords(CYTHON_UNUSED PyObject *__pyx_self, PyObject *__pyx_v_self) {
+  PyObject *__pyx_r = NULL;
+  __Pyx_RefNannyDeclarations
+  __Pyx_RefNannySetupContext("Get_Coords", 0);
+/* … */
+  /* function exit code */
+  __pyx_L1_error:;
+  __Pyx_XDECREF(__pyx_t_1);
+  __Pyx_AddTraceback("CAStar.AATC_Monitor_Viewer.Monitor_Sprite.Get_Coords", __pyx_clineno, __pyx_lineno, __pyx_filename);
+  __pyx_r = NULL;
+  __pyx_L0:;
+  __Pyx_XGIVEREF(__pyx_r);
+  __Pyx_RefNannyFinishContext();
+  return __pyx_r;
+}
+/* … */
+  __pyx_tuple__67 = PyTuple_Pack(1, __pyx_n_s_self); if (unlikely(!__pyx_tuple__67)) __PYX_ERR(0, 154, __pyx_L1_error)
+  __Pyx_GOTREF(__pyx_tuple__67);
+  __Pyx_GIVEREF(__pyx_tuple__67);
+/* … */
+  __pyx_t_4 = __Pyx_CyFunction_NewEx(&__pyx_mdef_6CAStar_19AATC_Monitor_Viewer_14Monitor_Sprite_7Get_Coords, 0, __pyx_n_s_Monitor_Sprite_Get_Coords, NULL, __pyx_n_s_CAStar_AATC_Monitor_Viewer, __pyx_d, ((PyObject *)__pyx_codeobj__68)); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 154, __pyx_L1_error)
+  __Pyx_GOTREF(__pyx_t_4);
+  if (PyObject_SetItem(__pyx_t_2, __pyx_n_s_Get_Coords, __pyx_t_4) < 0) __PYX_ERR(0, 154, __pyx_L1_error)
+  __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
+  __pyx_codeobj__68 = (PyObject*)__Pyx_PyCode_New(1, 0, 1, 0, 0, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__67, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_AATC_Monitor_Viewer_pyx, __pyx_n_s_Get_Coords, 154, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__68)) __PYX_ERR(0, 154, __pyx_L1_error)
+
+155:         return self.Coords
+
  __Pyx_XDECREF(__pyx_r);
+  __pyx_t_1 = __Pyx_PyObject_GetAttrStr(__pyx_v_self, __pyx_n_s_Coords); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 155, __pyx_L1_error)
+  __Pyx_GOTREF(__pyx_t_1);
+  __pyx_r = __pyx_t_1;
+  __pyx_t_1 = 0;
+  goto __pyx_L0;
+
 156: ##
+
 157: ##    def Make_CoordsText(self,font):
+
 158: ##        self.CoordsText = GetText(str((self.Coords.x,self.Coords.y,self.Coords.z)),font,False,self.Colour)
+
 159: ##        #self.CoordsText = font.render(str((self.Coords.x,self.Coords.y,self.Coords.z)),False,self.Colour)
+
 160: ##
+
 161: ##    def Make_Text(self,font):
+
 162: ##        self.DrawnText = GetText(self.Text,font,False,self.Colour)
+
 163: ##        #self.DrawnText = font.render(self.Text,False,self.Colour)
+
 164: ##
+
 165: ##    def Make_Type(self,font):
+
 166: ##        self.DrawnType = GetText(self.Type,font,False,self.Colour)
+
 167: ##        #self.DrawnType = font.render(self.Type,False,self.Colour)
+
 168: 
+
 169: 
+
+170: def MakeDroneSprites(Message,RawDroneList):
+
/* Python wrapper */
+static PyObject *__pyx_pw_6CAStar_19AATC_Monitor_Viewer_7MakeDroneSprites(PyObject *__pyx_self, PyObject *__pyx_args, PyObject *__pyx_kwds); /*proto*/
+static PyMethodDef __pyx_mdef_6CAStar_19AATC_Monitor_Viewer_7MakeDroneSprites = {"MakeDroneSprites", (PyCFunction)__pyx_pw_6CAStar_19AATC_Monitor_Viewer_7MakeDroneSprites, METH_VARARGS|METH_KEYWORDS, 0};
+static PyObject *__pyx_pw_6CAStar_19AATC_Monitor_Viewer_7MakeDroneSprites(PyObject *__pyx_self, PyObject *__pyx_args, PyObject *__pyx_kwds) {
+  PyObject *__pyx_v_Message = 0;
+  PyObject *__pyx_v_RawDroneList = 0;
+  PyObject *__pyx_r = 0;
+  __Pyx_RefNannyDeclarations
+  __Pyx_RefNannySetupContext("MakeDroneSprites (wrapper)", 0);
+  {
+    static PyObject **__pyx_pyargnames[] = {&__pyx_n_s_Message,&__pyx_n_s_RawDroneList,0};
+    PyObject* values[2] = {0,0};
+    if (unlikely(__pyx_kwds)) {
+      Py_ssize_t kw_args;
+      const Py_ssize_t pos_args = PyTuple_GET_SIZE(__pyx_args);
+      switch (pos_args) {
+        case  2: values[1] = PyTuple_GET_ITEM(__pyx_args, 1);
+        CYTHON_FALLTHROUGH;
+        case  1: values[0] = PyTuple_GET_ITEM(__pyx_args, 0);
+        CYTHON_FALLTHROUGH;
+        case  0: break;
+        default: goto __pyx_L5_argtuple_error;
+      }
+      kw_args = PyDict_Size(__pyx_kwds);
+      switch (pos_args) {
+        case  0:
+        if (likely((values[0] = PyDict_GetItem(__pyx_kwds, __pyx_n_s_Message)) != 0)) kw_args--;
+        else goto __pyx_L5_argtuple_error;
+        CYTHON_FALLTHROUGH;
+        case  1:
+        if (likely((values[1] = PyDict_GetItem(__pyx_kwds, __pyx_n_s_RawDroneList)) != 0)) kw_args--;
+        else {
+          __Pyx_RaiseArgtupleInvalid("MakeDroneSprites", 1, 2, 2, 1); __PYX_ERR(0, 170, __pyx_L3_error)
+        }
+      }
+      if (unlikely(kw_args > 0)) {
+        if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_pyargnames, 0, values, pos_args, "MakeDroneSprites") < 0)) __PYX_ERR(0, 170, __pyx_L3_error)
+      }
+    } else if (PyTuple_GET_SIZE(__pyx_args) != 2) {
+      goto __pyx_L5_argtuple_error;
+    } else {
+      values[0] = PyTuple_GET_ITEM(__pyx_args, 0);
+      values[1] = PyTuple_GET_ITEM(__pyx_args, 1);
+    }
+    __pyx_v_Message = values[0];
+    __pyx_v_RawDroneList = values[1];
+  }
+  goto __pyx_L4_argument_unpacking_done;
+  __pyx_L5_argtuple_error:;
+  __Pyx_RaiseArgtupleInvalid("MakeDroneSprites", 1, 2, 2, PyTuple_GET_SIZE(__pyx_args)); __PYX_ERR(0, 170, __pyx_L3_error)
+  __pyx_L3_error:;
+  __Pyx_AddTraceback("CAStar.AATC_Monitor_Viewer.MakeDroneSprites", __pyx_clineno, __pyx_lineno, __pyx_filename);
+  __Pyx_RefNannyFinishContext();
+  return NULL;
+  __pyx_L4_argument_unpacking_done:;
+  __pyx_r = __pyx_pf_6CAStar_19AATC_Monitor_Viewer_6MakeDroneSprites(__pyx_self, __pyx_v_Message, __pyx_v_RawDroneList);
+
+  /* function exit code */
+  __Pyx_RefNannyFinishContext();
+  return __pyx_r;
+}
+
+static PyObject *__pyx_pf_6CAStar_19AATC_Monitor_Viewer_6MakeDroneSprites(CYTHON_UNUSED PyObject *__pyx_self, PyObject *__pyx_v_Message, PyObject *__pyx_v_RawDroneList) {
+  PyObject *__pyx_v_DroneList = NULL;
+  PyObject *__pyx_v_Columns = NULL;
+  PyObject *__pyx_v_CoordIndex = NULL;
+  PyObject *__pyx_v_DroneIDIndex = NULL;
+  PyObject *__pyx_v_UserIDIndex = NULL;
+  PyObject *__pyx_v_DroneNameIndex = NULL;
+  PyObject *__pyx_v_BatteryIndex = NULL;
+  PyObject *__pyx_v_Drone = NULL;
+  PyObject *__pyx_v_LastCoords = NULL;
+  PyObject *__pyx_v_Coord = NULL;
+  PyObject *__pyx_v_Text = NULL;
+  __pyx_ctuple_long__and_long__and_long __pyx_v_Colour;
+  PyObject *__pyx_v_Sprite = NULL;
+  PyObject *__pyx_r = NULL;
+  __Pyx_RefNannyDeclarations
+  __Pyx_RefNannySetupContext("MakeDroneSprites", 0);
+/* … */
+  /* function exit code */
+  __pyx_L1_error:;
+  __Pyx_XDECREF(__pyx_t_1);
+  __Pyx_XDECREF(__pyx_t_2);
+  __Pyx_XDECREF(__pyx_t_3);
+  __Pyx_XDECREF(__pyx_t_4);
+  __Pyx_XDECREF(__pyx_t_7);
+  __Pyx_XDECREF(__pyx_t_8);
+  __Pyx_XDECREF(__pyx_t_9);
+  __Pyx_XDECREF(__pyx_t_11);
+  __Pyx_AddTraceback("CAStar.AATC_Monitor_Viewer.MakeDroneSprites", __pyx_clineno, __pyx_lineno, __pyx_filename);
+  __pyx_r = NULL;
+  __pyx_L0:;
+  __Pyx_XDECREF(__pyx_v_DroneList);
+  __Pyx_XDECREF(__pyx_v_Columns);
+  __Pyx_XDECREF(__pyx_v_CoordIndex);
+  __Pyx_XDECREF(__pyx_v_DroneIDIndex);
+  __Pyx_XDECREF(__pyx_v_UserIDIndex);
+  __Pyx_XDECREF(__pyx_v_DroneNameIndex);
+  __Pyx_XDECREF(__pyx_v_BatteryIndex);
+  __Pyx_XDECREF(__pyx_v_Drone);
+  __Pyx_XDECREF(__pyx_v_LastCoords);
+  __Pyx_XDECREF(__pyx_v_Coord);
+  __Pyx_XDECREF(__pyx_v_Text);
+  __Pyx_XDECREF(__pyx_v_Sprite);
+  __Pyx_XGIVEREF(__pyx_r);
+  __Pyx_RefNannyFinishContext();
+  return __pyx_r;
+}
+/* … */
+  __pyx_tuple__69 = PyTuple_Pack(15, __pyx_n_s_Message, __pyx_n_s_RawDroneList, __pyx_n_s_DroneList, __pyx_n_s_Columns, __pyx_n_s_CoordIndex, __pyx_n_s_DroneIDIndex, __pyx_n_s_UserIDIndex, __pyx_n_s_DroneNameIndex, __pyx_n_s_BatteryIndex, __pyx_n_s_Drone, __pyx_n_s_LastCoords, __pyx_n_s_Coord, __pyx_n_s_Text, __pyx_n_s_Colour, __pyx_n_s_Sprite); if (unlikely(!__pyx_tuple__69)) __PYX_ERR(0, 170, __pyx_L1_error)
+  __Pyx_GOTREF(__pyx_tuple__69);
+  __Pyx_GIVEREF(__pyx_tuple__69);
+/* … */
+  __pyx_t_3 = PyCFunction_NewEx(&__pyx_mdef_6CAStar_19AATC_Monitor_Viewer_7MakeDroneSprites, NULL, __pyx_n_s_CAStar_AATC_Monitor_Viewer); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 170, __pyx_L1_error)
+  __Pyx_GOTREF(__pyx_t_3);
+  if (PyDict_SetItem(__pyx_d, __pyx_n_s_MakeDroneSprites, __pyx_t_3) < 0) __PYX_ERR(0, 170, __pyx_L1_error)
+  __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
+  __pyx_codeobj__70 = (PyObject*)__Pyx_PyCode_New(2, 0, 15, 0, 0, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__69, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_AATC_Monitor_Viewer_pyx, __pyx_n_s_MakeDroneSprites, 170, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__70)) __PYX_ERR(0, 170, __pyx_L1_error)
+
+171:     DroneList = []
+
  __pyx_t_1 = PyList_New(0); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 171, __pyx_L1_error)
+  __Pyx_GOTREF(__pyx_t_1);
+  __pyx_v_DroneList = ((PyObject*)__pyx_t_1);
+  __pyx_t_1 = 0;
+
+172:     Columns = ast.literal_eval(Message)
+
  __pyx_t_2 = __Pyx_GetModuleGlobalName(__pyx_n_s_ast); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 172, __pyx_L1_error)
+  __Pyx_GOTREF(__pyx_t_2);
+  __pyx_t_3 = __Pyx_PyObject_GetAttrStr(__pyx_t_2, __pyx_n_s_literal_eval); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 172, __pyx_L1_error)
+  __Pyx_GOTREF(__pyx_t_3);
+  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
+  __pyx_t_2 = NULL;
+  if (CYTHON_UNPACK_METHODS && unlikely(PyMethod_Check(__pyx_t_3))) {
+    __pyx_t_2 = PyMethod_GET_SELF(__pyx_t_3);
+    if (likely(__pyx_t_2)) {
+      PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_3);
+      __Pyx_INCREF(__pyx_t_2);
+      __Pyx_INCREF(function);
+      __Pyx_DECREF_SET(__pyx_t_3, function);
+    }
+  }
+  if (!__pyx_t_2) {
+    __pyx_t_1 = __Pyx_PyObject_CallOneArg(__pyx_t_3, __pyx_v_Message); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 172, __pyx_L1_error)
+    __Pyx_GOTREF(__pyx_t_1);
+  } else {
+    #if CYTHON_FAST_PYCALL
+    if (PyFunction_Check(__pyx_t_3)) {
+      PyObject *__pyx_temp[2] = {__pyx_t_2, __pyx_v_Message};
+      __pyx_t_1 = __Pyx_PyFunction_FastCall(__pyx_t_3, __pyx_temp+1-1, 1+1); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 172, __pyx_L1_error)
+      __Pyx_XDECREF(__pyx_t_2); __pyx_t_2 = 0;
+      __Pyx_GOTREF(__pyx_t_1);
+    } else
+    #endif
+    #if CYTHON_FAST_PYCCALL
+    if (__Pyx_PyFastCFunction_Check(__pyx_t_3)) {
+      PyObject *__pyx_temp[2] = {__pyx_t_2, __pyx_v_Message};
+      __pyx_t_1 = __Pyx_PyCFunction_FastCall(__pyx_t_3, __pyx_temp+1-1, 1+1); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 172, __pyx_L1_error)
+      __Pyx_XDECREF(__pyx_t_2); __pyx_t_2 = 0;
+      __Pyx_GOTREF(__pyx_t_1);
+    } else
+    #endif
+    {
+      __pyx_t_4 = PyTuple_New(1+1); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 172, __pyx_L1_error)
+      __Pyx_GOTREF(__pyx_t_4);
+      __Pyx_GIVEREF(__pyx_t_2); PyTuple_SET_ITEM(__pyx_t_4, 0, __pyx_t_2); __pyx_t_2 = NULL;
+      __Pyx_INCREF(__pyx_v_Message);
+      __Pyx_GIVEREF(__pyx_v_Message);
+      PyTuple_SET_ITEM(__pyx_t_4, 0+1, __pyx_v_Message);
+      __pyx_t_1 = __Pyx_PyObject_Call(__pyx_t_3, __pyx_t_4, NULL); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 172, __pyx_L1_error)
+      __Pyx_GOTREF(__pyx_t_1);
+      __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
+    }
+  }
+  __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
+  __pyx_v_Columns = __pyx_t_1;
+  __pyx_t_1 = 0;
+
+173:     CoordIndex = Columns.index("LastCoords")
+
  __pyx_t_1 = __Pyx_PyObject_GetAttrStr(__pyx_v_Columns, __pyx_n_s_index); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 173, __pyx_L1_error)
+  __Pyx_GOTREF(__pyx_t_1);
+  __pyx_t_3 = __Pyx_PyObject_Call(__pyx_t_1, __pyx_tuple__7, NULL); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 173, __pyx_L1_error)
+  __Pyx_GOTREF(__pyx_t_3);
+  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
+  __pyx_v_CoordIndex = __pyx_t_3;
+  __pyx_t_3 = 0;
+/* … */
+  __pyx_tuple__7 = PyTuple_Pack(1, __pyx_n_s_LastCoords); if (unlikely(!__pyx_tuple__7)) __PYX_ERR(0, 173, __pyx_L1_error)
+  __Pyx_GOTREF(__pyx_tuple__7);
+  __Pyx_GIVEREF(__pyx_tuple__7);
+
+174:     DroneIDIndex = Columns.index("DroneID")
+
  __pyx_t_3 = __Pyx_PyObject_GetAttrStr(__pyx_v_Columns, __pyx_n_s_index); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 174, __pyx_L1_error)
+  __Pyx_GOTREF(__pyx_t_3);
+  __pyx_t_1 = __Pyx_PyObject_Call(__pyx_t_3, __pyx_tuple__8, NULL); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 174, __pyx_L1_error)
+  __Pyx_GOTREF(__pyx_t_1);
+  __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
+  __pyx_v_DroneIDIndex = __pyx_t_1;
+  __pyx_t_1 = 0;
+/* … */
+  __pyx_tuple__8 = PyTuple_Pack(1, __pyx_n_s_DroneID); if (unlikely(!__pyx_tuple__8)) __PYX_ERR(0, 174, __pyx_L1_error)
+  __Pyx_GOTREF(__pyx_tuple__8);
+  __Pyx_GIVEREF(__pyx_tuple__8);
+
+175:     UserIDIndex = Columns.index("UserID")
+
  __pyx_t_1 = __Pyx_PyObject_GetAttrStr(__pyx_v_Columns, __pyx_n_s_index); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 175, __pyx_L1_error)
+  __Pyx_GOTREF(__pyx_t_1);
+  __pyx_t_3 = __Pyx_PyObject_Call(__pyx_t_1, __pyx_tuple__9, NULL); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 175, __pyx_L1_error)
+  __Pyx_GOTREF(__pyx_t_3);
+  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
+  __pyx_v_UserIDIndex = __pyx_t_3;
+  __pyx_t_3 = 0;
+/* … */
+  __pyx_tuple__9 = PyTuple_Pack(1, __pyx_n_s_UserID); if (unlikely(!__pyx_tuple__9)) __PYX_ERR(0, 175, __pyx_L1_error)
+  __Pyx_GOTREF(__pyx_tuple__9);
+  __Pyx_GIVEREF(__pyx_tuple__9);
+
+176:     DroneNameIndex = Columns.index("DroneName")
+
  __pyx_t_3 = __Pyx_PyObject_GetAttrStr(__pyx_v_Columns, __pyx_n_s_index); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 176, __pyx_L1_error)
+  __Pyx_GOTREF(__pyx_t_3);
+  __pyx_t_1 = __Pyx_PyObject_Call(__pyx_t_3, __pyx_tuple__10, NULL); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 176, __pyx_L1_error)
+  __Pyx_GOTREF(__pyx_t_1);
+  __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
+  __pyx_v_DroneNameIndex = __pyx_t_1;
+  __pyx_t_1 = 0;
+/* … */
+  __pyx_tuple__10 = PyTuple_Pack(1, __pyx_n_s_DroneName); if (unlikely(!__pyx_tuple__10)) __PYX_ERR(0, 176, __pyx_L1_error)
+  __Pyx_GOTREF(__pyx_tuple__10);
+  __Pyx_GIVEREF(__pyx_tuple__10);
+
+177:     BatteryIndex = Columns.index("LastBattery")
+
  __pyx_t_1 = __Pyx_PyObject_GetAttrStr(__pyx_v_Columns, __pyx_n_s_index); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 177, __pyx_L1_error)
+  __Pyx_GOTREF(__pyx_t_1);
+  __pyx_t_3 = __Pyx_PyObject_Call(__pyx_t_1, __pyx_tuple__11, NULL); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 177, __pyx_L1_error)
+  __Pyx_GOTREF(__pyx_t_3);
+  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
+  __pyx_v_BatteryIndex = __pyx_t_3;
+  __pyx_t_3 = 0;
+/* … */
+  __pyx_tuple__11 = PyTuple_Pack(1, __pyx_n_s_LastBattery); if (unlikely(!__pyx_tuple__11)) __PYX_ERR(0, 177, __pyx_L1_error)
+  __Pyx_GOTREF(__pyx_tuple__11);
+  __Pyx_GIVEREF(__pyx_tuple__11);
+
+178:     for Drone in RawDroneList:
+
  if (likely(PyList_CheckExact(__pyx_v_RawDroneList)) || PyTuple_CheckExact(__pyx_v_RawDroneList)) {
+    __pyx_t_3 = __pyx_v_RawDroneList; __Pyx_INCREF(__pyx_t_3); __pyx_t_5 = 0;
+    __pyx_t_6 = NULL;
+  } else {
+    __pyx_t_5 = -1; __pyx_t_3 = PyObject_GetIter(__pyx_v_RawDroneList); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 178, __pyx_L1_error)
+    __Pyx_GOTREF(__pyx_t_3);
+    __pyx_t_6 = Py_TYPE(__pyx_t_3)->tp_iternext; if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 178, __pyx_L1_error)
+  }
+  for (;;) {
+    if (likely(!__pyx_t_6)) {
+      if (likely(PyList_CheckExact(__pyx_t_3))) {
+        if (__pyx_t_5 >= PyList_GET_SIZE(__pyx_t_3)) break;
+        #if CYTHON_ASSUME_SAFE_MACROS && !CYTHON_AVOID_BORROWED_REFS
+        __pyx_t_1 = PyList_GET_ITEM(__pyx_t_3, __pyx_t_5); __Pyx_INCREF(__pyx_t_1); __pyx_t_5++; if (unlikely(0 < 0)) __PYX_ERR(0, 178, __pyx_L1_error)
+        #else
+        __pyx_t_1 = PySequence_ITEM(__pyx_t_3, __pyx_t_5); __pyx_t_5++; if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 178, __pyx_L1_error)
+        __Pyx_GOTREF(__pyx_t_1);
+        #endif
+      } else {
+        if (__pyx_t_5 >= PyTuple_GET_SIZE(__pyx_t_3)) break;
+        #if CYTHON_ASSUME_SAFE_MACROS && !CYTHON_AVOID_BORROWED_REFS
+        __pyx_t_1 = PyTuple_GET_ITEM(__pyx_t_3, __pyx_t_5); __Pyx_INCREF(__pyx_t_1); __pyx_t_5++; if (unlikely(0 < 0)) __PYX_ERR(0, 178, __pyx_L1_error)
+        #else
+        __pyx_t_1 = PySequence_ITEM(__pyx_t_3, __pyx_t_5); __pyx_t_5++; if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 178, __pyx_L1_error)
+        __Pyx_GOTREF(__pyx_t_1);
+        #endif
+      }
+    } else {
+      __pyx_t_1 = __pyx_t_6(__pyx_t_3);
+      if (unlikely(!__pyx_t_1)) {
+        PyObject* exc_type = PyErr_Occurred();
+        if (exc_type) {
+          if (likely(exc_type == PyExc_StopIteration || PyErr_GivenExceptionMatches(exc_type, PyExc_StopIteration))) PyErr_Clear();
+          else __PYX_ERR(0, 178, __pyx_L1_error)
+        }
+        break;
+      }
+      __Pyx_GOTREF(__pyx_t_1);
+    }
+    __Pyx_XDECREF_SET(__pyx_v_Drone, __pyx_t_1);
+    __pyx_t_1 = 0;
+/* … */
+  }
+  __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
+
+179:         LastCoords = ast.literal_eval(Drone[CoordIndex])
+
    __pyx_t_4 = __Pyx_GetModuleGlobalName(__pyx_n_s_ast); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 179, __pyx_L1_error)
+    __Pyx_GOTREF(__pyx_t_4);
+    __pyx_t_2 = __Pyx_PyObject_GetAttrStr(__pyx_t_4, __pyx_n_s_literal_eval); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 179, __pyx_L1_error)
+    __Pyx_GOTREF(__pyx_t_2);
+    __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
+    __pyx_t_4 = PyObject_GetItem(__pyx_v_Drone, __pyx_v_CoordIndex); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 179, __pyx_L1_error)
+    __Pyx_GOTREF(__pyx_t_4);
+    __pyx_t_7 = NULL;
+    if (CYTHON_UNPACK_METHODS && unlikely(PyMethod_Check(__pyx_t_2))) {
+      __pyx_t_7 = PyMethod_GET_SELF(__pyx_t_2);
+      if (likely(__pyx_t_7)) {
+        PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_2);
+        __Pyx_INCREF(__pyx_t_7);
+        __Pyx_INCREF(function);
+        __Pyx_DECREF_SET(__pyx_t_2, function);
+      }
+    }
+    if (!__pyx_t_7) {
+      __pyx_t_1 = __Pyx_PyObject_CallOneArg(__pyx_t_2, __pyx_t_4); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 179, __pyx_L1_error)
+      __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
+      __Pyx_GOTREF(__pyx_t_1);
+    } else {
+      #if CYTHON_FAST_PYCALL
+      if (PyFunction_Check(__pyx_t_2)) {
+        PyObject *__pyx_temp[2] = {__pyx_t_7, __pyx_t_4};
+        __pyx_t_1 = __Pyx_PyFunction_FastCall(__pyx_t_2, __pyx_temp+1-1, 1+1); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 179, __pyx_L1_error)
+        __Pyx_XDECREF(__pyx_t_7); __pyx_t_7 = 0;
+        __Pyx_GOTREF(__pyx_t_1);
+        __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
+      } else
+      #endif
+      #if CYTHON_FAST_PYCCALL
+      if (__Pyx_PyFastCFunction_Check(__pyx_t_2)) {
+        PyObject *__pyx_temp[2] = {__pyx_t_7, __pyx_t_4};
+        __pyx_t_1 = __Pyx_PyCFunction_FastCall(__pyx_t_2, __pyx_temp+1-1, 1+1); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 179, __pyx_L1_error)
+        __Pyx_XDECREF(__pyx_t_7); __pyx_t_7 = 0;
+        __Pyx_GOTREF(__pyx_t_1);
+        __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
+      } else
+      #endif
+      {
+        __pyx_t_8 = PyTuple_New(1+1); if (unlikely(!__pyx_t_8)) __PYX_ERR(0, 179, __pyx_L1_error)
+        __Pyx_GOTREF(__pyx_t_8);
+        __Pyx_GIVEREF(__pyx_t_7); PyTuple_SET_ITEM(__pyx_t_8, 0, __pyx_t_7); __pyx_t_7 = NULL;
+        __Pyx_GIVEREF(__pyx_t_4);
+        PyTuple_SET_ITEM(__pyx_t_8, 0+1, __pyx_t_4);
+        __pyx_t_4 = 0;
+        __pyx_t_1 = __Pyx_PyObject_Call(__pyx_t_2, __pyx_t_8, NULL); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 179, __pyx_L1_error)
+        __Pyx_GOTREF(__pyx_t_1);
+        __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0;
+      }
+    }
+    __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
+    __Pyx_XDECREF_SET(__pyx_v_LastCoords, __pyx_t_1);
+    __pyx_t_1 = 0;
+
+180:         Coord = AATC_Coordinate.Coordinate(LastCoords[0],LastCoords[1],LastCoords[2],0.001,0.001,0.00001)
+
    __pyx_t_2 = __Pyx_GetModuleGlobalName(__pyx_n_s_AATC_Coordinate); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 180, __pyx_L1_error)
+    __Pyx_GOTREF(__pyx_t_2);
+    __pyx_t_8 = __Pyx_PyObject_GetAttrStr(__pyx_t_2, __pyx_n_s_Coordinate); if (unlikely(!__pyx_t_8)) __PYX_ERR(0, 180, __pyx_L1_error)
+    __Pyx_GOTREF(__pyx_t_8);
+    __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
+    __pyx_t_2 = __Pyx_GetItemInt(__pyx_v_LastCoords, 0, long, 1, __Pyx_PyInt_From_long, 0, 0, 0); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 180, __pyx_L1_error)
+    __Pyx_GOTREF(__pyx_t_2);
+    __pyx_t_4 = __Pyx_GetItemInt(__pyx_v_LastCoords, 1, long, 1, __Pyx_PyInt_From_long, 0, 0, 0); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 180, __pyx_L1_error)
+    __Pyx_GOTREF(__pyx_t_4);
+    __pyx_t_7 = __Pyx_GetItemInt(__pyx_v_LastCoords, 2, long, 1, __Pyx_PyInt_From_long, 0, 0, 0); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 180, __pyx_L1_error)
+    __Pyx_GOTREF(__pyx_t_7);
+    __pyx_t_9 = NULL;
+    __pyx_t_10 = 0;
+    if (CYTHON_UNPACK_METHODS && unlikely(PyMethod_Check(__pyx_t_8))) {
+      __pyx_t_9 = PyMethod_GET_SELF(__pyx_t_8);
+      if (likely(__pyx_t_9)) {
+        PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_8);
+        __Pyx_INCREF(__pyx_t_9);
+        __Pyx_INCREF(function);
+        __Pyx_DECREF_SET(__pyx_t_8, function);
+        __pyx_t_10 = 1;
+      }
+    }
+    #if CYTHON_FAST_PYCALL
+    if (PyFunction_Check(__pyx_t_8)) {
+      PyObject *__pyx_temp[7] = {__pyx_t_9, __pyx_t_2, __pyx_t_4, __pyx_t_7, __pyx_float_0_001, __pyx_float_0_001, __pyx_float_0_00001};
+      __pyx_t_1 = __Pyx_PyFunction_FastCall(__pyx_t_8, __pyx_temp+1-__pyx_t_10, 6+__pyx_t_10); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 180, __pyx_L1_error)
+      __Pyx_XDECREF(__pyx_t_9); __pyx_t_9 = 0;
+      __Pyx_GOTREF(__pyx_t_1);
+      __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
+      __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
+      __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
+    } else
+    #endif
+    #if CYTHON_FAST_PYCCALL
+    if (__Pyx_PyFastCFunction_Check(__pyx_t_8)) {
+      PyObject *__pyx_temp[7] = {__pyx_t_9, __pyx_t_2, __pyx_t_4, __pyx_t_7, __pyx_float_0_001, __pyx_float_0_001, __pyx_float_0_00001};
+      __pyx_t_1 = __Pyx_PyCFunction_FastCall(__pyx_t_8, __pyx_temp+1-__pyx_t_10, 6+__pyx_t_10); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 180, __pyx_L1_error)
+      __Pyx_XDECREF(__pyx_t_9); __pyx_t_9 = 0;
+      __Pyx_GOTREF(__pyx_t_1);
+      __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
+      __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
+      __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
+    } else
+    #endif
+    {
+      __pyx_t_11 = PyTuple_New(6+__pyx_t_10); if (unlikely(!__pyx_t_11)) __PYX_ERR(0, 180, __pyx_L1_error)
+      __Pyx_GOTREF(__pyx_t_11);
+      if (__pyx_t_9) {
+        __Pyx_GIVEREF(__pyx_t_9); PyTuple_SET_ITEM(__pyx_t_11, 0, __pyx_t_9); __pyx_t_9 = NULL;
+      }
+      __Pyx_GIVEREF(__pyx_t_2);
+      PyTuple_SET_ITEM(__pyx_t_11, 0+__pyx_t_10, __pyx_t_2);
+      __Pyx_GIVEREF(__pyx_t_4);
+      PyTuple_SET_ITEM(__pyx_t_11, 1+__pyx_t_10, __pyx_t_4);
+      __Pyx_GIVEREF(__pyx_t_7);
+      PyTuple_SET_ITEM(__pyx_t_11, 2+__pyx_t_10, __pyx_t_7);
+      __Pyx_INCREF(__pyx_float_0_001);
+      __Pyx_GIVEREF(__pyx_float_0_001);
+      PyTuple_SET_ITEM(__pyx_t_11, 3+__pyx_t_10, __pyx_float_0_001);
+      __Pyx_INCREF(__pyx_float_0_001);
+      __Pyx_GIVEREF(__pyx_float_0_001);
+      PyTuple_SET_ITEM(__pyx_t_11, 4+__pyx_t_10, __pyx_float_0_001);
+      __Pyx_INCREF(__pyx_float_0_00001);
+      __Pyx_GIVEREF(__pyx_float_0_00001);
+      PyTuple_SET_ITEM(__pyx_t_11, 5+__pyx_t_10, __pyx_float_0_00001);
+      __pyx_t_2 = 0;
+      __pyx_t_4 = 0;
+      __pyx_t_7 = 0;
+      __pyx_t_1 = __Pyx_PyObject_Call(__pyx_t_8, __pyx_t_11, NULL); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 180, __pyx_L1_error)
+      __Pyx_GOTREF(__pyx_t_1);
+      __Pyx_DECREF(__pyx_t_11); __pyx_t_11 = 0;
+    }
+    __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0;
+    __Pyx_XDECREF_SET(__pyx_v_Coord, __pyx_t_1);
+    __pyx_t_1 = 0;
+
+181:         Text = "D:"+str(Drone[DroneIDIndex]) +" U:"+str(Drone[UserIDIndex]) +" N:"+str(Drone[DroneNameIndex])+" B:"+str(Drone[BatteryIndex])
+
    __pyx_t_1 = PyObject_GetItem(__pyx_v_Drone, __pyx_v_DroneIDIndex); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 181, __pyx_L1_error)
+    __Pyx_GOTREF(__pyx_t_1);
+    __pyx_t_8 = PyTuple_New(1); if (unlikely(!__pyx_t_8)) __PYX_ERR(0, 181, __pyx_L1_error)
+    __Pyx_GOTREF(__pyx_t_8);
+    __Pyx_GIVEREF(__pyx_t_1);
+    PyTuple_SET_ITEM(__pyx_t_8, 0, __pyx_t_1);
+    __pyx_t_1 = 0;
+    __pyx_t_1 = __Pyx_PyObject_Call(((PyObject *)(&PyString_Type)), __pyx_t_8, NULL); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 181, __pyx_L1_error)
+    __Pyx_GOTREF(__pyx_t_1);
+    __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0;
+    __pyx_t_8 = PyNumber_Add(__pyx_kp_s_D, __pyx_t_1); if (unlikely(!__pyx_t_8)) __PYX_ERR(0, 181, __pyx_L1_error)
+    __Pyx_GOTREF(__pyx_t_8);
+    __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
+    __pyx_t_1 = PyNumber_Add(__pyx_t_8, __pyx_kp_s_U); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 181, __pyx_L1_error)
+    __Pyx_GOTREF(__pyx_t_1);
+    __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0;
+    __pyx_t_8 = PyObject_GetItem(__pyx_v_Drone, __pyx_v_UserIDIndex); if (unlikely(!__pyx_t_8)) __PYX_ERR(0, 181, __pyx_L1_error)
+    __Pyx_GOTREF(__pyx_t_8);
+    __pyx_t_11 = PyTuple_New(1); if (unlikely(!__pyx_t_11)) __PYX_ERR(0, 181, __pyx_L1_error)
+    __Pyx_GOTREF(__pyx_t_11);
+    __Pyx_GIVEREF(__pyx_t_8);
+    PyTuple_SET_ITEM(__pyx_t_11, 0, __pyx_t_8);
+    __pyx_t_8 = 0;
+    __pyx_t_8 = __Pyx_PyObject_Call(((PyObject *)(&PyString_Type)), __pyx_t_11, NULL); if (unlikely(!__pyx_t_8)) __PYX_ERR(0, 181, __pyx_L1_error)
+    __Pyx_GOTREF(__pyx_t_8);
+    __Pyx_DECREF(__pyx_t_11); __pyx_t_11 = 0;
+    __pyx_t_11 = PyNumber_Add(__pyx_t_1, __pyx_t_8); if (unlikely(!__pyx_t_11)) __PYX_ERR(0, 181, __pyx_L1_error)
+    __Pyx_GOTREF(__pyx_t_11);
+    __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
+    __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0;
+    __pyx_t_8 = PyNumber_Add(__pyx_t_11, __pyx_kp_s_N); if (unlikely(!__pyx_t_8)) __PYX_ERR(0, 181, __pyx_L1_error)
+    __Pyx_GOTREF(__pyx_t_8);
+    __Pyx_DECREF(__pyx_t_11); __pyx_t_11 = 0;
+    __pyx_t_11 = PyObject_GetItem(__pyx_v_Drone, __pyx_v_DroneNameIndex); if (unlikely(!__pyx_t_11)) __PYX_ERR(0, 181, __pyx_L1_error)
+    __Pyx_GOTREF(__pyx_t_11);
+    __pyx_t_1 = PyTuple_New(1); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 181, __pyx_L1_error)
+    __Pyx_GOTREF(__pyx_t_1);
+    __Pyx_GIVEREF(__pyx_t_11);
+    PyTuple_SET_ITEM(__pyx_t_1, 0, __pyx_t_11);
+    __pyx_t_11 = 0;
+    __pyx_t_11 = __Pyx_PyObject_Call(((PyObject *)(&PyString_Type)), __pyx_t_1, NULL); if (unlikely(!__pyx_t_11)) __PYX_ERR(0, 181, __pyx_L1_error)
+    __Pyx_GOTREF(__pyx_t_11);
+    __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
+    __pyx_t_1 = PyNumber_Add(__pyx_t_8, __pyx_t_11); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 181, __pyx_L1_error)
+    __Pyx_GOTREF(__pyx_t_1);
+    __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0;
+    __Pyx_DECREF(__pyx_t_11); __pyx_t_11 = 0;
+    __pyx_t_11 = PyNumber_Add(__pyx_t_1, __pyx_kp_s_B); if (unlikely(!__pyx_t_11)) __PYX_ERR(0, 181, __pyx_L1_error)
+    __Pyx_GOTREF(__pyx_t_11);
+    __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
+    __pyx_t_1 = PyObject_GetItem(__pyx_v_Drone, __pyx_v_BatteryIndex); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 181, __pyx_L1_error)
+    __Pyx_GOTREF(__pyx_t_1);
+    __pyx_t_8 = PyTuple_New(1); if (unlikely(!__pyx_t_8)) __PYX_ERR(0, 181, __pyx_L1_error)
+    __Pyx_GOTREF(__pyx_t_8);
+    __Pyx_GIVEREF(__pyx_t_1);
+    PyTuple_SET_ITEM(__pyx_t_8, 0, __pyx_t_1);
+    __pyx_t_1 = 0;
+    __pyx_t_1 = __Pyx_PyObject_Call(((PyObject *)(&PyString_Type)), __pyx_t_8, NULL); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 181, __pyx_L1_error)
+    __Pyx_GOTREF(__pyx_t_1);
+    __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0;
+    __pyx_t_8 = PyNumber_Add(__pyx_t_11, __pyx_t_1); if (unlikely(!__pyx_t_8)) __PYX_ERR(0, 181, __pyx_L1_error)
+    __Pyx_GOTREF(__pyx_t_8);
+    __Pyx_DECREF(__pyx_t_11); __pyx_t_11 = 0;
+    __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
+    __Pyx_XDECREF_SET(__pyx_v_Text, __pyx_t_8);
+    __pyx_t_8 = 0;
+
+182:         Colour = (255,255,255)
+
    __pyx_t_12.f0 = 0xFF;
+    __pyx_t_12.f1 = 0xFF;
+    __pyx_t_12.f2 = 0xFF;
+    __pyx_v_Colour = __pyx_t_12;
+
+183:         Sprite = Monitor_Sprite(Coord,"Drone",Text,Colour)
+
    __pyx_t_1 = __Pyx_GetModuleGlobalName(__pyx_n_s_Monitor_Sprite); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 183, __pyx_L1_error)
+    __Pyx_GOTREF(__pyx_t_1);
+    __pyx_t_11 = __pyx_convert__to_py___pyx_ctuple_long__and_long__and_long(__pyx_v_Colour); if (unlikely(!__pyx_t_11)) __PYX_ERR(0, 183, __pyx_L1_error)
+    __Pyx_GOTREF(__pyx_t_11);
+    __pyx_t_7 = NULL;
+    __pyx_t_10 = 0;
+    if (CYTHON_UNPACK_METHODS && unlikely(PyMethod_Check(__pyx_t_1))) {
+      __pyx_t_7 = PyMethod_GET_SELF(__pyx_t_1);
+      if (likely(__pyx_t_7)) {
+        PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_1);
+        __Pyx_INCREF(__pyx_t_7);
+        __Pyx_INCREF(function);
+        __Pyx_DECREF_SET(__pyx_t_1, function);
+        __pyx_t_10 = 1;
+      }
+    }
+    #if CYTHON_FAST_PYCALL
+    if (PyFunction_Check(__pyx_t_1)) {
+      PyObject *__pyx_temp[5] = {__pyx_t_7, __pyx_v_Coord, __pyx_n_s_Drone, __pyx_v_Text, __pyx_t_11};
+      __pyx_t_8 = __Pyx_PyFunction_FastCall(__pyx_t_1, __pyx_temp+1-__pyx_t_10, 4+__pyx_t_10); if (unlikely(!__pyx_t_8)) __PYX_ERR(0, 183, __pyx_L1_error)
+      __Pyx_XDECREF(__pyx_t_7); __pyx_t_7 = 0;
+      __Pyx_GOTREF(__pyx_t_8);
+      __Pyx_DECREF(__pyx_t_11); __pyx_t_11 = 0;
+    } else
+    #endif
+    #if CYTHON_FAST_PYCCALL
+    if (__Pyx_PyFastCFunction_Check(__pyx_t_1)) {
+      PyObject *__pyx_temp[5] = {__pyx_t_7, __pyx_v_Coord, __pyx_n_s_Drone, __pyx_v_Text, __pyx_t_11};
+      __pyx_t_8 = __Pyx_PyCFunction_FastCall(__pyx_t_1, __pyx_temp+1-__pyx_t_10, 4+__pyx_t_10); if (unlikely(!__pyx_t_8)) __PYX_ERR(0, 183, __pyx_L1_error)
+      __Pyx_XDECREF(__pyx_t_7); __pyx_t_7 = 0;
+      __Pyx_GOTREF(__pyx_t_8);
+      __Pyx_DECREF(__pyx_t_11); __pyx_t_11 = 0;
+    } else
+    #endif
+    {
+      __pyx_t_4 = PyTuple_New(4+__pyx_t_10); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 183, __pyx_L1_error)
+      __Pyx_GOTREF(__pyx_t_4);
+      if (__pyx_t_7) {
+        __Pyx_GIVEREF(__pyx_t_7); PyTuple_SET_ITEM(__pyx_t_4, 0, __pyx_t_7); __pyx_t_7 = NULL;
+      }
+      __Pyx_INCREF(__pyx_v_Coord);
+      __Pyx_GIVEREF(__pyx_v_Coord);
+      PyTuple_SET_ITEM(__pyx_t_4, 0+__pyx_t_10, __pyx_v_Coord);
+      __Pyx_INCREF(__pyx_n_s_Drone);
+      __Pyx_GIVEREF(__pyx_n_s_Drone);
+      PyTuple_SET_ITEM(__pyx_t_4, 1+__pyx_t_10, __pyx_n_s_Drone);
+      __Pyx_INCREF(__pyx_v_Text);
+      __Pyx_GIVEREF(__pyx_v_Text);
+      PyTuple_SET_ITEM(__pyx_t_4, 2+__pyx_t_10, __pyx_v_Text);
+      __Pyx_GIVEREF(__pyx_t_11);
+      PyTuple_SET_ITEM(__pyx_t_4, 3+__pyx_t_10, __pyx_t_11);
+      __pyx_t_11 = 0;
+      __pyx_t_8 = __Pyx_PyObject_Call(__pyx_t_1, __pyx_t_4, NULL); if (unlikely(!__pyx_t_8)) __PYX_ERR(0, 183, __pyx_L1_error)
+      __Pyx_GOTREF(__pyx_t_8);
+      __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
+    }
+    __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
+    __Pyx_XDECREF_SET(__pyx_v_Sprite, __pyx_t_8);
+    __pyx_t_8 = 0;
+
+184:         DroneList.append(Sprite)
+
    __pyx_t_13 = __Pyx_PyList_Append(__pyx_v_DroneList, __pyx_v_Sprite); if (unlikely(__pyx_t_13 == -1)) __PYX_ERR(0, 184, __pyx_L1_error)
+
+185:     return DroneList
+
  __Pyx_XDECREF(__pyx_r);
+  __Pyx_INCREF(__pyx_v_DroneList);
+  __pyx_r = __pyx_v_DroneList;
+  goto __pyx_L0;
+
 186: 
+
+187: def MakeFlightSprites(Message,RawFlightList):
+
/* Python wrapper */
+static PyObject *__pyx_pw_6CAStar_19AATC_Monitor_Viewer_9MakeFlightSprites(PyObject *__pyx_self, PyObject *__pyx_args, PyObject *__pyx_kwds); /*proto*/
+static PyMethodDef __pyx_mdef_6CAStar_19AATC_Monitor_Viewer_9MakeFlightSprites = {"MakeFlightSprites", (PyCFunction)__pyx_pw_6CAStar_19AATC_Monitor_Viewer_9MakeFlightSprites, METH_VARARGS|METH_KEYWORDS, 0};
+static PyObject *__pyx_pw_6CAStar_19AATC_Monitor_Viewer_9MakeFlightSprites(PyObject *__pyx_self, PyObject *__pyx_args, PyObject *__pyx_kwds) {
+  PyObject *__pyx_v_Message = 0;
+  PyObject *__pyx_v_RawFlightList = 0;
+  PyObject *__pyx_r = 0;
+  __Pyx_RefNannyDeclarations
+  __Pyx_RefNannySetupContext("MakeFlightSprites (wrapper)", 0);
+  {
+    static PyObject **__pyx_pyargnames[] = {&__pyx_n_s_Message,&__pyx_n_s_RawFlightList,0};
+    PyObject* values[2] = {0,0};
+    if (unlikely(__pyx_kwds)) {
+      Py_ssize_t kw_args;
+      const Py_ssize_t pos_args = PyTuple_GET_SIZE(__pyx_args);
+      switch (pos_args) {
+        case  2: values[1] = PyTuple_GET_ITEM(__pyx_args, 1);
+        CYTHON_FALLTHROUGH;
+        case  1: values[0] = PyTuple_GET_ITEM(__pyx_args, 0);
+        CYTHON_FALLTHROUGH;
+        case  0: break;
+        default: goto __pyx_L5_argtuple_error;
+      }
+      kw_args = PyDict_Size(__pyx_kwds);
+      switch (pos_args) {
+        case  0:
+        if (likely((values[0] = PyDict_GetItem(__pyx_kwds, __pyx_n_s_Message)) != 0)) kw_args--;
+        else goto __pyx_L5_argtuple_error;
+        CYTHON_FALLTHROUGH;
+        case  1:
+        if (likely((values[1] = PyDict_GetItem(__pyx_kwds, __pyx_n_s_RawFlightList)) != 0)) kw_args--;
+        else {
+          __Pyx_RaiseArgtupleInvalid("MakeFlightSprites", 1, 2, 2, 1); __PYX_ERR(0, 187, __pyx_L3_error)
+        }
+      }
+      if (unlikely(kw_args > 0)) {
+        if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_pyargnames, 0, values, pos_args, "MakeFlightSprites") < 0)) __PYX_ERR(0, 187, __pyx_L3_error)
+      }
+    } else if (PyTuple_GET_SIZE(__pyx_args) != 2) {
+      goto __pyx_L5_argtuple_error;
+    } else {
+      values[0] = PyTuple_GET_ITEM(__pyx_args, 0);
+      values[1] = PyTuple_GET_ITEM(__pyx_args, 1);
+    }
+    __pyx_v_Message = values[0];
+    __pyx_v_RawFlightList = values[1];
+  }
+  goto __pyx_L4_argument_unpacking_done;
+  __pyx_L5_argtuple_error:;
+  __Pyx_RaiseArgtupleInvalid("MakeFlightSprites", 1, 2, 2, PyTuple_GET_SIZE(__pyx_args)); __PYX_ERR(0, 187, __pyx_L3_error)
+  __pyx_L3_error:;
+  __Pyx_AddTraceback("CAStar.AATC_Monitor_Viewer.MakeFlightSprites", __pyx_clineno, __pyx_lineno, __pyx_filename);
+  __Pyx_RefNannyFinishContext();
+  return NULL;
+  __pyx_L4_argument_unpacking_done:;
+  __pyx_r = __pyx_pf_6CAStar_19AATC_Monitor_Viewer_8MakeFlightSprites(__pyx_self, __pyx_v_Message, __pyx_v_RawFlightList);
+
+  /* function exit code */
+  __Pyx_RefNannyFinishContext();
+  return __pyx_r;
+}
+
+static PyObject *__pyx_pf_6CAStar_19AATC_Monitor_Viewer_8MakeFlightSprites(CYTHON_UNUSED PyObject *__pyx_self, PyObject *__pyx_v_Message, PyObject *__pyx_v_RawFlightList) {
+  PyObject *__pyx_v_FlightList = NULL;
+  PyObject *__pyx_v_Columns = NULL;
+  PyObject *__pyx_v_FlightIDIndex = NULL;
+  PyObject *__pyx_v_DroneIDIndex = NULL;
+  PyObject *__pyx_v_StartCoordsIndex = NULL;
+  PyObject *__pyx_v_EndCoordsIndex = NULL;
+  PyObject *__pyx_v_StartTimeIndex = NULL;
+  PyObject *__pyx_v_ETAIndex = NULL;
+  CYTHON_UNUSED PyObject *__pyx_v_EndTimeIndex = NULL;
+  CYTHON_UNUSED PyObject *__pyx_v_DistanceIndex = NULL;
+  PyObject *__pyx_v_Flight = NULL;
+  PyObject *__pyx_v_Coords = NULL;
+  PyObject *__pyx_v_Coord = NULL;
+  PyObject *__pyx_v_Text = NULL;
+  __pyx_ctuple_long__and_long__and_long __pyx_v_Colour;
+  PyObject *__pyx_r = NULL;
+  __Pyx_RefNannyDeclarations
+  __Pyx_RefNannySetupContext("MakeFlightSprites", 0);
+/* … */
+  /* function exit code */
+  __pyx_L1_error:;
+  __Pyx_XDECREF(__pyx_t_1);
+  __Pyx_XDECREF(__pyx_t_2);
+  __Pyx_XDECREF(__pyx_t_3);
+  __Pyx_XDECREF(__pyx_t_4);
+  __Pyx_XDECREF(__pyx_t_7);
+  __Pyx_XDECREF(__pyx_t_8);
+  __Pyx_XDECREF(__pyx_t_9);
+  __Pyx_XDECREF(__pyx_t_11);
+  __Pyx_AddTraceback("CAStar.AATC_Monitor_Viewer.MakeFlightSprites", __pyx_clineno, __pyx_lineno, __pyx_filename);
+  __pyx_r = NULL;
+  __pyx_L0:;
+  __Pyx_XDECREF(__pyx_v_FlightList);
+  __Pyx_XDECREF(__pyx_v_Columns);
+  __Pyx_XDECREF(__pyx_v_FlightIDIndex);
+  __Pyx_XDECREF(__pyx_v_DroneIDIndex);
+  __Pyx_XDECREF(__pyx_v_StartCoordsIndex);
+  __Pyx_XDECREF(__pyx_v_EndCoordsIndex);
+  __Pyx_XDECREF(__pyx_v_StartTimeIndex);
+  __Pyx_XDECREF(__pyx_v_ETAIndex);
+  __Pyx_XDECREF(__pyx_v_EndTimeIndex);
+  __Pyx_XDECREF(__pyx_v_DistanceIndex);
+  __Pyx_XDECREF(__pyx_v_Flight);
+  __Pyx_XDECREF(__pyx_v_Coords);
+  __Pyx_XDECREF(__pyx_v_Coord);
+  __Pyx_XDECREF(__pyx_v_Text);
+  __Pyx_XGIVEREF(__pyx_r);
+  __Pyx_RefNannyFinishContext();
+  return __pyx_r;
+}
+/* … */
+  __pyx_tuple__71 = PyTuple_Pack(17, __pyx_n_s_Message, __pyx_n_s_RawFlightList, __pyx_n_s_FlightList, __pyx_n_s_Columns, __pyx_n_s_FlightIDIndex, __pyx_n_s_DroneIDIndex, __pyx_n_s_StartCoordsIndex, __pyx_n_s_EndCoordsIndex, __pyx_n_s_StartTimeIndex, __pyx_n_s_ETAIndex, __pyx_n_s_EndTimeIndex, __pyx_n_s_DistanceIndex, __pyx_n_s_Flight, __pyx_n_s_Coords, __pyx_n_s_Coord, __pyx_n_s_Text, __pyx_n_s_Colour); if (unlikely(!__pyx_tuple__71)) __PYX_ERR(0, 187, __pyx_L1_error)
+  __Pyx_GOTREF(__pyx_tuple__71);
+  __Pyx_GIVEREF(__pyx_tuple__71);
+/* … */
+  __pyx_t_3 = PyCFunction_NewEx(&__pyx_mdef_6CAStar_19AATC_Monitor_Viewer_9MakeFlightSprites, NULL, __pyx_n_s_CAStar_AATC_Monitor_Viewer); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 187, __pyx_L1_error)
+  __Pyx_GOTREF(__pyx_t_3);
+  if (PyDict_SetItem(__pyx_d, __pyx_n_s_MakeFlightSprites, __pyx_t_3) < 0) __PYX_ERR(0, 187, __pyx_L1_error)
+  __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
+  __pyx_codeobj__72 = (PyObject*)__Pyx_PyCode_New(2, 0, 17, 0, 0, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__71, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_AATC_Monitor_Viewer_pyx, __pyx_n_s_MakeFlightSprites, 187, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__72)) __PYX_ERR(0, 187, __pyx_L1_error)
+
+188:     FlightList = []
+
  __pyx_t_1 = PyList_New(0); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 188, __pyx_L1_error)
+  __Pyx_GOTREF(__pyx_t_1);
+  __pyx_v_FlightList = ((PyObject*)__pyx_t_1);
+  __pyx_t_1 = 0;
+
+189:     Columns = ast.literal_eval(Message)
+
  __pyx_t_2 = __Pyx_GetModuleGlobalName(__pyx_n_s_ast); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 189, __pyx_L1_error)
+  __Pyx_GOTREF(__pyx_t_2);
+  __pyx_t_3 = __Pyx_PyObject_GetAttrStr(__pyx_t_2, __pyx_n_s_literal_eval); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 189, __pyx_L1_error)
+  __Pyx_GOTREF(__pyx_t_3);
+  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
+  __pyx_t_2 = NULL;
+  if (CYTHON_UNPACK_METHODS && unlikely(PyMethod_Check(__pyx_t_3))) {
+    __pyx_t_2 = PyMethod_GET_SELF(__pyx_t_3);
+    if (likely(__pyx_t_2)) {
+      PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_3);
+      __Pyx_INCREF(__pyx_t_2);
+      __Pyx_INCREF(function);
+      __Pyx_DECREF_SET(__pyx_t_3, function);
+    }
+  }
+  if (!__pyx_t_2) {
+    __pyx_t_1 = __Pyx_PyObject_CallOneArg(__pyx_t_3, __pyx_v_Message); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 189, __pyx_L1_error)
+    __Pyx_GOTREF(__pyx_t_1);
+  } else {
+    #if CYTHON_FAST_PYCALL
+    if (PyFunction_Check(__pyx_t_3)) {
+      PyObject *__pyx_temp[2] = {__pyx_t_2, __pyx_v_Message};
+      __pyx_t_1 = __Pyx_PyFunction_FastCall(__pyx_t_3, __pyx_temp+1-1, 1+1); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 189, __pyx_L1_error)
+      __Pyx_XDECREF(__pyx_t_2); __pyx_t_2 = 0;
+      __Pyx_GOTREF(__pyx_t_1);
+    } else
+    #endif
+    #if CYTHON_FAST_PYCCALL
+    if (__Pyx_PyFastCFunction_Check(__pyx_t_3)) {
+      PyObject *__pyx_temp[2] = {__pyx_t_2, __pyx_v_Message};
+      __pyx_t_1 = __Pyx_PyCFunction_FastCall(__pyx_t_3, __pyx_temp+1-1, 1+1); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 189, __pyx_L1_error)
+      __Pyx_XDECREF(__pyx_t_2); __pyx_t_2 = 0;
+      __Pyx_GOTREF(__pyx_t_1);
+    } else
+    #endif
+    {
+      __pyx_t_4 = PyTuple_New(1+1); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 189, __pyx_L1_error)
+      __Pyx_GOTREF(__pyx_t_4);
+      __Pyx_GIVEREF(__pyx_t_2); PyTuple_SET_ITEM(__pyx_t_4, 0, __pyx_t_2); __pyx_t_2 = NULL;
+      __Pyx_INCREF(__pyx_v_Message);
+      __Pyx_GIVEREF(__pyx_v_Message);
+      PyTuple_SET_ITEM(__pyx_t_4, 0+1, __pyx_v_Message);
+      __pyx_t_1 = __Pyx_PyObject_Call(__pyx_t_3, __pyx_t_4, NULL); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 189, __pyx_L1_error)
+      __Pyx_GOTREF(__pyx_t_1);
+      __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
+    }
+  }
+  __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
+  __pyx_v_Columns = __pyx_t_1;
+  __pyx_t_1 = 0;
+
+190:     FlightIDIndex = Columns.index("FlightID")
+
  __pyx_t_1 = __Pyx_PyObject_GetAttrStr(__pyx_v_Columns, __pyx_n_s_index); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 190, __pyx_L1_error)
+  __Pyx_GOTREF(__pyx_t_1);
+  __pyx_t_3 = __Pyx_PyObject_Call(__pyx_t_1, __pyx_tuple__12, NULL); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 190, __pyx_L1_error)
+  __Pyx_GOTREF(__pyx_t_3);
+  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
+  __pyx_v_FlightIDIndex = __pyx_t_3;
+  __pyx_t_3 = 0;
+/* … */
+  __pyx_tuple__12 = PyTuple_Pack(1, __pyx_n_s_FlightID); if (unlikely(!__pyx_tuple__12)) __PYX_ERR(0, 190, __pyx_L1_error)
+  __Pyx_GOTREF(__pyx_tuple__12);
+  __Pyx_GIVEREF(__pyx_tuple__12);
+
+191:     DroneIDIndex = Columns.index("DroneID")
+
  __pyx_t_3 = __Pyx_PyObject_GetAttrStr(__pyx_v_Columns, __pyx_n_s_index); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 191, __pyx_L1_error)
+  __Pyx_GOTREF(__pyx_t_3);
+  __pyx_t_1 = __Pyx_PyObject_Call(__pyx_t_3, __pyx_tuple__13, NULL); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 191, __pyx_L1_error)
+  __Pyx_GOTREF(__pyx_t_1);
+  __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
+  __pyx_v_DroneIDIndex = __pyx_t_1;
+  __pyx_t_1 = 0;
+/* … */
+  __pyx_tuple__13 = PyTuple_Pack(1, __pyx_n_s_DroneID); if (unlikely(!__pyx_tuple__13)) __PYX_ERR(0, 191, __pyx_L1_error)
+  __Pyx_GOTREF(__pyx_tuple__13);
+  __Pyx_GIVEREF(__pyx_tuple__13);
+
+192:     StartCoordsIndex = Columns.index("StartCoords")
+
  __pyx_t_1 = __Pyx_PyObject_GetAttrStr(__pyx_v_Columns, __pyx_n_s_index); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 192, __pyx_L1_error)
+  __Pyx_GOTREF(__pyx_t_1);
+  __pyx_t_3 = __Pyx_PyObject_Call(__pyx_t_1, __pyx_tuple__14, NULL); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 192, __pyx_L1_error)
+  __Pyx_GOTREF(__pyx_t_3);
+  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
+  __pyx_v_StartCoordsIndex = __pyx_t_3;
+  __pyx_t_3 = 0;
+/* … */
+  __pyx_tuple__14 = PyTuple_Pack(1, __pyx_n_s_StartCoords); if (unlikely(!__pyx_tuple__14)) __PYX_ERR(0, 192, __pyx_L1_error)
+  __Pyx_GOTREF(__pyx_tuple__14);
+  __Pyx_GIVEREF(__pyx_tuple__14);
+
+193:     EndCoordsIndex = Columns.index("EndCoords")
+
  __pyx_t_3 = __Pyx_PyObject_GetAttrStr(__pyx_v_Columns, __pyx_n_s_index); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 193, __pyx_L1_error)
+  __Pyx_GOTREF(__pyx_t_3);
+  __pyx_t_1 = __Pyx_PyObject_Call(__pyx_t_3, __pyx_tuple__15, NULL); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 193, __pyx_L1_error)
+  __Pyx_GOTREF(__pyx_t_1);
+  __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
+  __pyx_v_EndCoordsIndex = __pyx_t_1;
+  __pyx_t_1 = 0;
+/* … */
+  __pyx_tuple__15 = PyTuple_Pack(1, __pyx_n_s_EndCoords); if (unlikely(!__pyx_tuple__15)) __PYX_ERR(0, 193, __pyx_L1_error)
+  __Pyx_GOTREF(__pyx_tuple__15);
+  __Pyx_GIVEREF(__pyx_tuple__15);
+
+194:     StartTimeIndex = Columns.index("StartTime")
+
  __pyx_t_1 = __Pyx_PyObject_GetAttrStr(__pyx_v_Columns, __pyx_n_s_index); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 194, __pyx_L1_error)
+  __Pyx_GOTREF(__pyx_t_1);
+  __pyx_t_3 = __Pyx_PyObject_Call(__pyx_t_1, __pyx_tuple__16, NULL); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 194, __pyx_L1_error)
+  __Pyx_GOTREF(__pyx_t_3);
+  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
+  __pyx_v_StartTimeIndex = __pyx_t_3;
+  __pyx_t_3 = 0;
+/* … */
+  __pyx_tuple__16 = PyTuple_Pack(1, __pyx_n_s_StartTime); if (unlikely(!__pyx_tuple__16)) __PYX_ERR(0, 194, __pyx_L1_error)
+  __Pyx_GOTREF(__pyx_tuple__16);
+  __Pyx_GIVEREF(__pyx_tuple__16);
+
+195:     ETAIndex = Columns.index("ETA")
+
  __pyx_t_3 = __Pyx_PyObject_GetAttrStr(__pyx_v_Columns, __pyx_n_s_index); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 195, __pyx_L1_error)
+  __Pyx_GOTREF(__pyx_t_3);
+  __pyx_t_1 = __Pyx_PyObject_Call(__pyx_t_3, __pyx_tuple__17, NULL); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 195, __pyx_L1_error)
+  __Pyx_GOTREF(__pyx_t_1);
+  __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
+  __pyx_v_ETAIndex = __pyx_t_1;
+  __pyx_t_1 = 0;
+/* … */
+  __pyx_tuple__17 = PyTuple_Pack(1, __pyx_n_s_ETA); if (unlikely(!__pyx_tuple__17)) __PYX_ERR(0, 195, __pyx_L1_error)
+  __Pyx_GOTREF(__pyx_tuple__17);
+  __Pyx_GIVEREF(__pyx_tuple__17);
+
+196:     EndTimeIndex = Columns.index("EndTime")
+
  __pyx_t_1 = __Pyx_PyObject_GetAttrStr(__pyx_v_Columns, __pyx_n_s_index); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 196, __pyx_L1_error)
+  __Pyx_GOTREF(__pyx_t_1);
+  __pyx_t_3 = __Pyx_PyObject_Call(__pyx_t_1, __pyx_tuple__18, NULL); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 196, __pyx_L1_error)
+  __Pyx_GOTREF(__pyx_t_3);
+  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
+  __pyx_v_EndTimeIndex = __pyx_t_3;
+  __pyx_t_3 = 0;
+/* … */
+  __pyx_tuple__18 = PyTuple_Pack(1, __pyx_n_s_EndTime); if (unlikely(!__pyx_tuple__18)) __PYX_ERR(0, 196, __pyx_L1_error)
+  __Pyx_GOTREF(__pyx_tuple__18);
+  __Pyx_GIVEREF(__pyx_tuple__18);
+
+197:     DistanceIndex = Columns.index("Distance")
+
  __pyx_t_3 = __Pyx_PyObject_GetAttrStr(__pyx_v_Columns, __pyx_n_s_index); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 197, __pyx_L1_error)
+  __Pyx_GOTREF(__pyx_t_3);
+  __pyx_t_1 = __Pyx_PyObject_Call(__pyx_t_3, __pyx_tuple__19, NULL); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 197, __pyx_L1_error)
+  __Pyx_GOTREF(__pyx_t_1);
+  __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
+  __pyx_v_DistanceIndex = __pyx_t_1;
+  __pyx_t_1 = 0;
+/* … */
+  __pyx_tuple__19 = PyTuple_Pack(1, __pyx_n_s_Distance); if (unlikely(!__pyx_tuple__19)) __PYX_ERR(0, 197, __pyx_L1_error)
+  __Pyx_GOTREF(__pyx_tuple__19);
+  __Pyx_GIVEREF(__pyx_tuple__19);
+
+198:     for Flight in RawFlightList:
+
  if (likely(PyList_CheckExact(__pyx_v_RawFlightList)) || PyTuple_CheckExact(__pyx_v_RawFlightList)) {
+    __pyx_t_1 = __pyx_v_RawFlightList; __Pyx_INCREF(__pyx_t_1); __pyx_t_5 = 0;
+    __pyx_t_6 = NULL;
+  } else {
+    __pyx_t_5 = -1; __pyx_t_1 = PyObject_GetIter(__pyx_v_RawFlightList); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 198, __pyx_L1_error)
+    __Pyx_GOTREF(__pyx_t_1);
+    __pyx_t_6 = Py_TYPE(__pyx_t_1)->tp_iternext; if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 198, __pyx_L1_error)
+  }
+  for (;;) {
+    if (likely(!__pyx_t_6)) {
+      if (likely(PyList_CheckExact(__pyx_t_1))) {
+        if (__pyx_t_5 >= PyList_GET_SIZE(__pyx_t_1)) break;
+        #if CYTHON_ASSUME_SAFE_MACROS && !CYTHON_AVOID_BORROWED_REFS
+        __pyx_t_3 = PyList_GET_ITEM(__pyx_t_1, __pyx_t_5); __Pyx_INCREF(__pyx_t_3); __pyx_t_5++; if (unlikely(0 < 0)) __PYX_ERR(0, 198, __pyx_L1_error)
+        #else
+        __pyx_t_3 = PySequence_ITEM(__pyx_t_1, __pyx_t_5); __pyx_t_5++; if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 198, __pyx_L1_error)
+        __Pyx_GOTREF(__pyx_t_3);
+        #endif
+      } else {
+        if (__pyx_t_5 >= PyTuple_GET_SIZE(__pyx_t_1)) break;
+        #if CYTHON_ASSUME_SAFE_MACROS && !CYTHON_AVOID_BORROWED_REFS
+        __pyx_t_3 = PyTuple_GET_ITEM(__pyx_t_1, __pyx_t_5); __Pyx_INCREF(__pyx_t_3); __pyx_t_5++; if (unlikely(0 < 0)) __PYX_ERR(0, 198, __pyx_L1_error)
+        #else
+        __pyx_t_3 = PySequence_ITEM(__pyx_t_1, __pyx_t_5); __pyx_t_5++; if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 198, __pyx_L1_error)
+        __Pyx_GOTREF(__pyx_t_3);
+        #endif
+      }
+    } else {
+      __pyx_t_3 = __pyx_t_6(__pyx_t_1);
+      if (unlikely(!__pyx_t_3)) {
+        PyObject* exc_type = PyErr_Occurred();
+        if (exc_type) {
+          if (likely(exc_type == PyExc_StopIteration || PyErr_GivenExceptionMatches(exc_type, PyExc_StopIteration))) PyErr_Clear();
+          else __PYX_ERR(0, 198, __pyx_L1_error)
+        }
+        break;
+      }
+      __Pyx_GOTREF(__pyx_t_3);
+    }
+    __Pyx_XDECREF_SET(__pyx_v_Flight, __pyx_t_3);
+    __pyx_t_3 = 0;
+/* … */
+  }
+  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
+
 199:         #Start Sprite
+
+200:         Coords = ast.literal_eval(Flight[StartCoordsIndex])
+
    __pyx_t_4 = __Pyx_GetModuleGlobalName(__pyx_n_s_ast); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 200, __pyx_L1_error)
+    __Pyx_GOTREF(__pyx_t_4);
+    __pyx_t_2 = __Pyx_PyObject_GetAttrStr(__pyx_t_4, __pyx_n_s_literal_eval); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 200, __pyx_L1_error)
+    __Pyx_GOTREF(__pyx_t_2);
+    __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
+    __pyx_t_4 = PyObject_GetItem(__pyx_v_Flight, __pyx_v_StartCoordsIndex); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 200, __pyx_L1_error)
+    __Pyx_GOTREF(__pyx_t_4);
+    __pyx_t_7 = NULL;
+    if (CYTHON_UNPACK_METHODS && unlikely(PyMethod_Check(__pyx_t_2))) {
+      __pyx_t_7 = PyMethod_GET_SELF(__pyx_t_2);
+      if (likely(__pyx_t_7)) {
+        PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_2);
+        __Pyx_INCREF(__pyx_t_7);
+        __Pyx_INCREF(function);
+        __Pyx_DECREF_SET(__pyx_t_2, function);
+      }
+    }
+    if (!__pyx_t_7) {
+      __pyx_t_3 = __Pyx_PyObject_CallOneArg(__pyx_t_2, __pyx_t_4); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 200, __pyx_L1_error)
+      __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
+      __Pyx_GOTREF(__pyx_t_3);
+    } else {
+      #if CYTHON_FAST_PYCALL
+      if (PyFunction_Check(__pyx_t_2)) {
+        PyObject *__pyx_temp[2] = {__pyx_t_7, __pyx_t_4};
+        __pyx_t_3 = __Pyx_PyFunction_FastCall(__pyx_t_2, __pyx_temp+1-1, 1+1); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 200, __pyx_L1_error)
+        __Pyx_XDECREF(__pyx_t_7); __pyx_t_7 = 0;
+        __Pyx_GOTREF(__pyx_t_3);
+        __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
+      } else
+      #endif
+      #if CYTHON_FAST_PYCCALL
+      if (__Pyx_PyFastCFunction_Check(__pyx_t_2)) {
+        PyObject *__pyx_temp[2] = {__pyx_t_7, __pyx_t_4};
+        __pyx_t_3 = __Pyx_PyCFunction_FastCall(__pyx_t_2, __pyx_temp+1-1, 1+1); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 200, __pyx_L1_error)
+        __Pyx_XDECREF(__pyx_t_7); __pyx_t_7 = 0;
+        __Pyx_GOTREF(__pyx_t_3);
+        __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
+      } else
+      #endif
+      {
+        __pyx_t_8 = PyTuple_New(1+1); if (unlikely(!__pyx_t_8)) __PYX_ERR(0, 200, __pyx_L1_error)
+        __Pyx_GOTREF(__pyx_t_8);
+        __Pyx_GIVEREF(__pyx_t_7); PyTuple_SET_ITEM(__pyx_t_8, 0, __pyx_t_7); __pyx_t_7 = NULL;
+        __Pyx_GIVEREF(__pyx_t_4);
+        PyTuple_SET_ITEM(__pyx_t_8, 0+1, __pyx_t_4);
+        __pyx_t_4 = 0;
+        __pyx_t_3 = __Pyx_PyObject_Call(__pyx_t_2, __pyx_t_8, NULL); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 200, __pyx_L1_error)
+        __Pyx_GOTREF(__pyx_t_3);
+        __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0;
+      }
+    }
+    __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
+    __Pyx_XDECREF_SET(__pyx_v_Coords, __pyx_t_3);
+    __pyx_t_3 = 0;
+
+201:         Coord = AATC_Coordinate.Coordinate(Coords[0],Coords[1],Coords[2],0.0001,0.0001,0.00001)
+
    __pyx_t_2 = __Pyx_GetModuleGlobalName(__pyx_n_s_AATC_Coordinate); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 201, __pyx_L1_error)
+    __Pyx_GOTREF(__pyx_t_2);
+    __pyx_t_8 = __Pyx_PyObject_GetAttrStr(__pyx_t_2, __pyx_n_s_Coordinate); if (unlikely(!__pyx_t_8)) __PYX_ERR(0, 201, __pyx_L1_error)
+    __Pyx_GOTREF(__pyx_t_8);
+    __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
+    __pyx_t_2 = __Pyx_GetItemInt(__pyx_v_Coords, 0, long, 1, __Pyx_PyInt_From_long, 0, 0, 0); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 201, __pyx_L1_error)
+    __Pyx_GOTREF(__pyx_t_2);
+    __pyx_t_4 = __Pyx_GetItemInt(__pyx_v_Coords, 1, long, 1, __Pyx_PyInt_From_long, 0, 0, 0); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 201, __pyx_L1_error)
+    __Pyx_GOTREF(__pyx_t_4);
+    __pyx_t_7 = __Pyx_GetItemInt(__pyx_v_Coords, 2, long, 1, __Pyx_PyInt_From_long, 0, 0, 0); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 201, __pyx_L1_error)
+    __Pyx_GOTREF(__pyx_t_7);
+    __pyx_t_9 = NULL;
+    __pyx_t_10 = 0;
+    if (CYTHON_UNPACK_METHODS && unlikely(PyMethod_Check(__pyx_t_8))) {
+      __pyx_t_9 = PyMethod_GET_SELF(__pyx_t_8);
+      if (likely(__pyx_t_9)) {
+        PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_8);
+        __Pyx_INCREF(__pyx_t_9);
+        __Pyx_INCREF(function);
+        __Pyx_DECREF_SET(__pyx_t_8, function);
+        __pyx_t_10 = 1;
+      }
+    }
+    #if CYTHON_FAST_PYCALL
+    if (PyFunction_Check(__pyx_t_8)) {
+      PyObject *__pyx_temp[7] = {__pyx_t_9, __pyx_t_2, __pyx_t_4, __pyx_t_7, __pyx_float_0_0001, __pyx_float_0_0001, __pyx_float_0_00001};
+      __pyx_t_3 = __Pyx_PyFunction_FastCall(__pyx_t_8, __pyx_temp+1-__pyx_t_10, 6+__pyx_t_10); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 201, __pyx_L1_error)
+      __Pyx_XDECREF(__pyx_t_9); __pyx_t_9 = 0;
+      __Pyx_GOTREF(__pyx_t_3);
+      __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
+      __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
+      __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
+    } else
+    #endif
+    #if CYTHON_FAST_PYCCALL
+    if (__Pyx_PyFastCFunction_Check(__pyx_t_8)) {
+      PyObject *__pyx_temp[7] = {__pyx_t_9, __pyx_t_2, __pyx_t_4, __pyx_t_7, __pyx_float_0_0001, __pyx_float_0_0001, __pyx_float_0_00001};
+      __pyx_t_3 = __Pyx_PyCFunction_FastCall(__pyx_t_8, __pyx_temp+1-__pyx_t_10, 6+__pyx_t_10); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 201, __pyx_L1_error)
+      __Pyx_XDECREF(__pyx_t_9); __pyx_t_9 = 0;
+      __Pyx_GOTREF(__pyx_t_3);
+      __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
+      __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
+      __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
+    } else
+    #endif
+    {
+      __pyx_t_11 = PyTuple_New(6+__pyx_t_10); if (unlikely(!__pyx_t_11)) __PYX_ERR(0, 201, __pyx_L1_error)
+      __Pyx_GOTREF(__pyx_t_11);
+      if (__pyx_t_9) {
+        __Pyx_GIVEREF(__pyx_t_9); PyTuple_SET_ITEM(__pyx_t_11, 0, __pyx_t_9); __pyx_t_9 = NULL;
+      }
+      __Pyx_GIVEREF(__pyx_t_2);
+      PyTuple_SET_ITEM(__pyx_t_11, 0+__pyx_t_10, __pyx_t_2);
+      __Pyx_GIVEREF(__pyx_t_4);
+      PyTuple_SET_ITEM(__pyx_t_11, 1+__pyx_t_10, __pyx_t_4);
+      __Pyx_GIVEREF(__pyx_t_7);
+      PyTuple_SET_ITEM(__pyx_t_11, 2+__pyx_t_10, __pyx_t_7);
+      __Pyx_INCREF(__pyx_float_0_0001);
+      __Pyx_GIVEREF(__pyx_float_0_0001);
+      PyTuple_SET_ITEM(__pyx_t_11, 3+__pyx_t_10, __pyx_float_0_0001);
+      __Pyx_INCREF(__pyx_float_0_0001);
+      __Pyx_GIVEREF(__pyx_float_0_0001);
+      PyTuple_SET_ITEM(__pyx_t_11, 4+__pyx_t_10, __pyx_float_0_0001);
+      __Pyx_INCREF(__pyx_float_0_00001);
+      __Pyx_GIVEREF(__pyx_float_0_00001);
+      PyTuple_SET_ITEM(__pyx_t_11, 5+__pyx_t_10, __pyx_float_0_00001);
+      __pyx_t_2 = 0;
+      __pyx_t_4 = 0;
+      __pyx_t_7 = 0;
+      __pyx_t_3 = __Pyx_PyObject_Call(__pyx_t_8, __pyx_t_11, NULL); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 201, __pyx_L1_error)
+      __Pyx_GOTREF(__pyx_t_3);
+      __Pyx_DECREF(__pyx_t_11); __pyx_t_11 = 0;
+    }
+    __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0;
+    __Pyx_XDECREF_SET(__pyx_v_Coord, __pyx_t_3);
+    __pyx_t_3 = 0;
+
+202:         Text = "F:"+ str(Flight[FlightIDIndex])+" D:"+ str(Flight[DroneIDIndex])+ "ST:"+str(Flight[StartTimeIndex])
+
    __pyx_t_3 = PyObject_GetItem(__pyx_v_Flight, __pyx_v_FlightIDIndex); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 202, __pyx_L1_error)
+    __Pyx_GOTREF(__pyx_t_3);
+    __pyx_t_8 = PyTuple_New(1); if (unlikely(!__pyx_t_8)) __PYX_ERR(0, 202, __pyx_L1_error)
+    __Pyx_GOTREF(__pyx_t_8);
+    __Pyx_GIVEREF(__pyx_t_3);
+    PyTuple_SET_ITEM(__pyx_t_8, 0, __pyx_t_3);
+    __pyx_t_3 = 0;
+    __pyx_t_3 = __Pyx_PyObject_Call(((PyObject *)(&PyString_Type)), __pyx_t_8, NULL); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 202, __pyx_L1_error)
+    __Pyx_GOTREF(__pyx_t_3);
+    __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0;
+    __pyx_t_8 = PyNumber_Add(__pyx_kp_s_F, __pyx_t_3); if (unlikely(!__pyx_t_8)) __PYX_ERR(0, 202, __pyx_L1_error)
+    __Pyx_GOTREF(__pyx_t_8);
+    __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
+    __pyx_t_3 = PyNumber_Add(__pyx_t_8, __pyx_kp_s_D_2); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 202, __pyx_L1_error)
+    __Pyx_GOTREF(__pyx_t_3);
+    __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0;
+    __pyx_t_8 = PyObject_GetItem(__pyx_v_Flight, __pyx_v_DroneIDIndex); if (unlikely(!__pyx_t_8)) __PYX_ERR(0, 202, __pyx_L1_error)
+    __Pyx_GOTREF(__pyx_t_8);
+    __pyx_t_11 = PyTuple_New(1); if (unlikely(!__pyx_t_11)) __PYX_ERR(0, 202, __pyx_L1_error)
+    __Pyx_GOTREF(__pyx_t_11);
+    __Pyx_GIVEREF(__pyx_t_8);
+    PyTuple_SET_ITEM(__pyx_t_11, 0, __pyx_t_8);
+    __pyx_t_8 = 0;
+    __pyx_t_8 = __Pyx_PyObject_Call(((PyObject *)(&PyString_Type)), __pyx_t_11, NULL); if (unlikely(!__pyx_t_8)) __PYX_ERR(0, 202, __pyx_L1_error)
+    __Pyx_GOTREF(__pyx_t_8);
+    __Pyx_DECREF(__pyx_t_11); __pyx_t_11 = 0;
+    __pyx_t_11 = PyNumber_Add(__pyx_t_3, __pyx_t_8); if (unlikely(!__pyx_t_11)) __PYX_ERR(0, 202, __pyx_L1_error)
+    __Pyx_GOTREF(__pyx_t_11);
+    __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
+    __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0;
+    __pyx_t_8 = PyNumber_Add(__pyx_t_11, __pyx_kp_s_ST); if (unlikely(!__pyx_t_8)) __PYX_ERR(0, 202, __pyx_L1_error)
+    __Pyx_GOTREF(__pyx_t_8);
+    __Pyx_DECREF(__pyx_t_11); __pyx_t_11 = 0;
+    __pyx_t_11 = PyObject_GetItem(__pyx_v_Flight, __pyx_v_StartTimeIndex); if (unlikely(!__pyx_t_11)) __PYX_ERR(0, 202, __pyx_L1_error)
+    __Pyx_GOTREF(__pyx_t_11);
+    __pyx_t_3 = PyTuple_New(1); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 202, __pyx_L1_error)
+    __Pyx_GOTREF(__pyx_t_3);
+    __Pyx_GIVEREF(__pyx_t_11);
+    PyTuple_SET_ITEM(__pyx_t_3, 0, __pyx_t_11);
+    __pyx_t_11 = 0;
+    __pyx_t_11 = __Pyx_PyObject_Call(((PyObject *)(&PyString_Type)), __pyx_t_3, NULL); if (unlikely(!__pyx_t_11)) __PYX_ERR(0, 202, __pyx_L1_error)
+    __Pyx_GOTREF(__pyx_t_11);
+    __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
+    __pyx_t_3 = PyNumber_Add(__pyx_t_8, __pyx_t_11); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 202, __pyx_L1_error)
+    __Pyx_GOTREF(__pyx_t_3);
+    __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0;
+    __Pyx_DECREF(__pyx_t_11); __pyx_t_11 = 0;
+    __Pyx_XDECREF_SET(__pyx_v_Text, __pyx_t_3);
+    __pyx_t_3 = 0;
+
+203:         Colour = (0,0,255)
+
    __pyx_t_12.f0 = 0;
+    __pyx_t_12.f1 = 0;
+    __pyx_t_12.f2 = 0xFF;
+    __pyx_v_Colour = __pyx_t_12;
+
+204:         FlightList.append(Monitor_Sprite(Coord,"StartPoint",Text,Colour))
+
    __pyx_t_11 = __Pyx_GetModuleGlobalName(__pyx_n_s_Monitor_Sprite); if (unlikely(!__pyx_t_11)) __PYX_ERR(0, 204, __pyx_L1_error)
+    __Pyx_GOTREF(__pyx_t_11);
+    __pyx_t_8 = __pyx_convert__to_py___pyx_ctuple_long__and_long__and_long(__pyx_v_Colour); if (unlikely(!__pyx_t_8)) __PYX_ERR(0, 204, __pyx_L1_error)
+    __Pyx_GOTREF(__pyx_t_8);
+    __pyx_t_7 = NULL;
+    __pyx_t_10 = 0;
+    if (CYTHON_UNPACK_METHODS && unlikely(PyMethod_Check(__pyx_t_11))) {
+      __pyx_t_7 = PyMethod_GET_SELF(__pyx_t_11);
+      if (likely(__pyx_t_7)) {
+        PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_11);
+        __Pyx_INCREF(__pyx_t_7);
+        __Pyx_INCREF(function);
+        __Pyx_DECREF_SET(__pyx_t_11, function);
+        __pyx_t_10 = 1;
+      }
+    }
+    #if CYTHON_FAST_PYCALL
+    if (PyFunction_Check(__pyx_t_11)) {
+      PyObject *__pyx_temp[5] = {__pyx_t_7, __pyx_v_Coord, __pyx_n_s_StartPoint, __pyx_v_Text, __pyx_t_8};
+      __pyx_t_3 = __Pyx_PyFunction_FastCall(__pyx_t_11, __pyx_temp+1-__pyx_t_10, 4+__pyx_t_10); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 204, __pyx_L1_error)
+      __Pyx_XDECREF(__pyx_t_7); __pyx_t_7 = 0;
+      __Pyx_GOTREF(__pyx_t_3);
+      __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0;
+    } else
+    #endif
+    #if CYTHON_FAST_PYCCALL
+    if (__Pyx_PyFastCFunction_Check(__pyx_t_11)) {
+      PyObject *__pyx_temp[5] = {__pyx_t_7, __pyx_v_Coord, __pyx_n_s_StartPoint, __pyx_v_Text, __pyx_t_8};
+      __pyx_t_3 = __Pyx_PyCFunction_FastCall(__pyx_t_11, __pyx_temp+1-__pyx_t_10, 4+__pyx_t_10); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 204, __pyx_L1_error)
+      __Pyx_XDECREF(__pyx_t_7); __pyx_t_7 = 0;
+      __Pyx_GOTREF(__pyx_t_3);
+      __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0;
+    } else
+    #endif
+    {
+      __pyx_t_4 = PyTuple_New(4+__pyx_t_10); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 204, __pyx_L1_error)
+      __Pyx_GOTREF(__pyx_t_4);
+      if (__pyx_t_7) {
+        __Pyx_GIVEREF(__pyx_t_7); PyTuple_SET_ITEM(__pyx_t_4, 0, __pyx_t_7); __pyx_t_7 = NULL;
+      }
+      __Pyx_INCREF(__pyx_v_Coord);
+      __Pyx_GIVEREF(__pyx_v_Coord);
+      PyTuple_SET_ITEM(__pyx_t_4, 0+__pyx_t_10, __pyx_v_Coord);
+      __Pyx_INCREF(__pyx_n_s_StartPoint);
+      __Pyx_GIVEREF(__pyx_n_s_StartPoint);
+      PyTuple_SET_ITEM(__pyx_t_4, 1+__pyx_t_10, __pyx_n_s_StartPoint);
+      __Pyx_INCREF(__pyx_v_Text);
+      __Pyx_GIVEREF(__pyx_v_Text);
+      PyTuple_SET_ITEM(__pyx_t_4, 2+__pyx_t_10, __pyx_v_Text);
+      __Pyx_GIVEREF(__pyx_t_8);
+      PyTuple_SET_ITEM(__pyx_t_4, 3+__pyx_t_10, __pyx_t_8);
+      __pyx_t_8 = 0;
+      __pyx_t_3 = __Pyx_PyObject_Call(__pyx_t_11, __pyx_t_4, NULL); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 204, __pyx_L1_error)
+      __Pyx_GOTREF(__pyx_t_3);
+      __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
+    }
+    __Pyx_DECREF(__pyx_t_11); __pyx_t_11 = 0;
+    __pyx_t_13 = __Pyx_PyList_Append(__pyx_v_FlightList, __pyx_t_3); if (unlikely(__pyx_t_13 == -1)) __PYX_ERR(0, 204, __pyx_L1_error)
+    __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
+
 205: 
+
 206:         #End Sprite
+
+207:         Coords = ast.literal_eval(Flight[EndCoordsIndex])
+
    __pyx_t_11 = __Pyx_GetModuleGlobalName(__pyx_n_s_ast); if (unlikely(!__pyx_t_11)) __PYX_ERR(0, 207, __pyx_L1_error)
+    __Pyx_GOTREF(__pyx_t_11);
+    __pyx_t_4 = __Pyx_PyObject_GetAttrStr(__pyx_t_11, __pyx_n_s_literal_eval); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 207, __pyx_L1_error)
+    __Pyx_GOTREF(__pyx_t_4);
+    __Pyx_DECREF(__pyx_t_11); __pyx_t_11 = 0;
+    __pyx_t_11 = PyObject_GetItem(__pyx_v_Flight, __pyx_v_EndCoordsIndex); if (unlikely(!__pyx_t_11)) __PYX_ERR(0, 207, __pyx_L1_error)
+    __Pyx_GOTREF(__pyx_t_11);
+    __pyx_t_8 = NULL;
+    if (CYTHON_UNPACK_METHODS && unlikely(PyMethod_Check(__pyx_t_4))) {
+      __pyx_t_8 = PyMethod_GET_SELF(__pyx_t_4);
+      if (likely(__pyx_t_8)) {
+        PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_4);
+        __Pyx_INCREF(__pyx_t_8);
+        __Pyx_INCREF(function);
+        __Pyx_DECREF_SET(__pyx_t_4, function);
+      }
+    }
+    if (!__pyx_t_8) {
+      __pyx_t_3 = __Pyx_PyObject_CallOneArg(__pyx_t_4, __pyx_t_11); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 207, __pyx_L1_error)
+      __Pyx_DECREF(__pyx_t_11); __pyx_t_11 = 0;
+      __Pyx_GOTREF(__pyx_t_3);
+    } else {
+      #if CYTHON_FAST_PYCALL
+      if (PyFunction_Check(__pyx_t_4)) {
+        PyObject *__pyx_temp[2] = {__pyx_t_8, __pyx_t_11};
+        __pyx_t_3 = __Pyx_PyFunction_FastCall(__pyx_t_4, __pyx_temp+1-1, 1+1); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 207, __pyx_L1_error)
+        __Pyx_XDECREF(__pyx_t_8); __pyx_t_8 = 0;
+        __Pyx_GOTREF(__pyx_t_3);
+        __Pyx_DECREF(__pyx_t_11); __pyx_t_11 = 0;
+      } else
+      #endif
+      #if CYTHON_FAST_PYCCALL
+      if (__Pyx_PyFastCFunction_Check(__pyx_t_4)) {
+        PyObject *__pyx_temp[2] = {__pyx_t_8, __pyx_t_11};
+        __pyx_t_3 = __Pyx_PyCFunction_FastCall(__pyx_t_4, __pyx_temp+1-1, 1+1); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 207, __pyx_L1_error)
+        __Pyx_XDECREF(__pyx_t_8); __pyx_t_8 = 0;
+        __Pyx_GOTREF(__pyx_t_3);
+        __Pyx_DECREF(__pyx_t_11); __pyx_t_11 = 0;
+      } else
+      #endif
+      {
+        __pyx_t_7 = PyTuple_New(1+1); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 207, __pyx_L1_error)
+        __Pyx_GOTREF(__pyx_t_7);
+        __Pyx_GIVEREF(__pyx_t_8); PyTuple_SET_ITEM(__pyx_t_7, 0, __pyx_t_8); __pyx_t_8 = NULL;
+        __Pyx_GIVEREF(__pyx_t_11);
+        PyTuple_SET_ITEM(__pyx_t_7, 0+1, __pyx_t_11);
+        __pyx_t_11 = 0;
+        __pyx_t_3 = __Pyx_PyObject_Call(__pyx_t_4, __pyx_t_7, NULL); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 207, __pyx_L1_error)
+        __Pyx_GOTREF(__pyx_t_3);
+        __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
+      }
+    }
+    __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
+    __Pyx_DECREF_SET(__pyx_v_Coords, __pyx_t_3);
+    __pyx_t_3 = 0;
+
+208:         Coord = AATC_Coordinate.Coordinate(Coords[0],Coords[1],Coords[2],0.0001,0.0001,0.00001)
+
    __pyx_t_4 = __Pyx_GetModuleGlobalName(__pyx_n_s_AATC_Coordinate); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 208, __pyx_L1_error)
+    __Pyx_GOTREF(__pyx_t_4);
+    __pyx_t_7 = __Pyx_PyObject_GetAttrStr(__pyx_t_4, __pyx_n_s_Coordinate); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 208, __pyx_L1_error)
+    __Pyx_GOTREF(__pyx_t_7);
+    __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
+    __pyx_t_4 = __Pyx_GetItemInt(__pyx_v_Coords, 0, long, 1, __Pyx_PyInt_From_long, 0, 0, 0); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 208, __pyx_L1_error)
+    __Pyx_GOTREF(__pyx_t_4);
+    __pyx_t_11 = __Pyx_GetItemInt(__pyx_v_Coords, 1, long, 1, __Pyx_PyInt_From_long, 0, 0, 0); if (unlikely(!__pyx_t_11)) __PYX_ERR(0, 208, __pyx_L1_error)
+    __Pyx_GOTREF(__pyx_t_11);
+    __pyx_t_8 = __Pyx_GetItemInt(__pyx_v_Coords, 2, long, 1, __Pyx_PyInt_From_long, 0, 0, 0); if (unlikely(!__pyx_t_8)) __PYX_ERR(0, 208, __pyx_L1_error)
+    __Pyx_GOTREF(__pyx_t_8);
+    __pyx_t_2 = NULL;
+    __pyx_t_10 = 0;
+    if (CYTHON_UNPACK_METHODS && unlikely(PyMethod_Check(__pyx_t_7))) {
+      __pyx_t_2 = PyMethod_GET_SELF(__pyx_t_7);
+      if (likely(__pyx_t_2)) {
+        PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_7);
+        __Pyx_INCREF(__pyx_t_2);
+        __Pyx_INCREF(function);
+        __Pyx_DECREF_SET(__pyx_t_7, function);
+        __pyx_t_10 = 1;
+      }
+    }
+    #if CYTHON_FAST_PYCALL
+    if (PyFunction_Check(__pyx_t_7)) {
+      PyObject *__pyx_temp[7] = {__pyx_t_2, __pyx_t_4, __pyx_t_11, __pyx_t_8, __pyx_float_0_0001, __pyx_float_0_0001, __pyx_float_0_00001};
+      __pyx_t_3 = __Pyx_PyFunction_FastCall(__pyx_t_7, __pyx_temp+1-__pyx_t_10, 6+__pyx_t_10); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 208, __pyx_L1_error)
+      __Pyx_XDECREF(__pyx_t_2); __pyx_t_2 = 0;
+      __Pyx_GOTREF(__pyx_t_3);
+      __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
+      __Pyx_DECREF(__pyx_t_11); __pyx_t_11 = 0;
+      __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0;
+    } else
+    #endif
+    #if CYTHON_FAST_PYCCALL
+    if (__Pyx_PyFastCFunction_Check(__pyx_t_7)) {
+      PyObject *__pyx_temp[7] = {__pyx_t_2, __pyx_t_4, __pyx_t_11, __pyx_t_8, __pyx_float_0_0001, __pyx_float_0_0001, __pyx_float_0_00001};
+      __pyx_t_3 = __Pyx_PyCFunction_FastCall(__pyx_t_7, __pyx_temp+1-__pyx_t_10, 6+__pyx_t_10); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 208, __pyx_L1_error)
+      __Pyx_XDECREF(__pyx_t_2); __pyx_t_2 = 0;
+      __Pyx_GOTREF(__pyx_t_3);
+      __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
+      __Pyx_DECREF(__pyx_t_11); __pyx_t_11 = 0;
+      __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0;
+    } else
+    #endif
+    {
+      __pyx_t_9 = PyTuple_New(6+__pyx_t_10); if (unlikely(!__pyx_t_9)) __PYX_ERR(0, 208, __pyx_L1_error)
+      __Pyx_GOTREF(__pyx_t_9);
+      if (__pyx_t_2) {
+        __Pyx_GIVEREF(__pyx_t_2); PyTuple_SET_ITEM(__pyx_t_9, 0, __pyx_t_2); __pyx_t_2 = NULL;
+      }
+      __Pyx_GIVEREF(__pyx_t_4);
+      PyTuple_SET_ITEM(__pyx_t_9, 0+__pyx_t_10, __pyx_t_4);
+      __Pyx_GIVEREF(__pyx_t_11);
+      PyTuple_SET_ITEM(__pyx_t_9, 1+__pyx_t_10, __pyx_t_11);
+      __Pyx_GIVEREF(__pyx_t_8);
+      PyTuple_SET_ITEM(__pyx_t_9, 2+__pyx_t_10, __pyx_t_8);
+      __Pyx_INCREF(__pyx_float_0_0001);
+      __Pyx_GIVEREF(__pyx_float_0_0001);
+      PyTuple_SET_ITEM(__pyx_t_9, 3+__pyx_t_10, __pyx_float_0_0001);
+      __Pyx_INCREF(__pyx_float_0_0001);
+      __Pyx_GIVEREF(__pyx_float_0_0001);
+      PyTuple_SET_ITEM(__pyx_t_9, 4+__pyx_t_10, __pyx_float_0_0001);
+      __Pyx_INCREF(__pyx_float_0_00001);
+      __Pyx_GIVEREF(__pyx_float_0_00001);
+      PyTuple_SET_ITEM(__pyx_t_9, 5+__pyx_t_10, __pyx_float_0_00001);
+      __pyx_t_4 = 0;
+      __pyx_t_11 = 0;
+      __pyx_t_8 = 0;
+      __pyx_t_3 = __Pyx_PyObject_Call(__pyx_t_7, __pyx_t_9, NULL); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 208, __pyx_L1_error)
+      __Pyx_GOTREF(__pyx_t_3);
+      __Pyx_DECREF(__pyx_t_9); __pyx_t_9 = 0;
+    }
+    __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
+    __Pyx_DECREF_SET(__pyx_v_Coord, __pyx_t_3);
+    __pyx_t_3 = 0;
+
+209:         Text = "F:"+ str(Flight[FlightIDIndex])+" D:"+ str(Flight[DroneIDIndex])+ "ETA:"+str(Flight[ETAIndex])
+
    __pyx_t_3 = PyObject_GetItem(__pyx_v_Flight, __pyx_v_FlightIDIndex); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 209, __pyx_L1_error)
+    __Pyx_GOTREF(__pyx_t_3);
+    __pyx_t_7 = PyTuple_New(1); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 209, __pyx_L1_error)
+    __Pyx_GOTREF(__pyx_t_7);
+    __Pyx_GIVEREF(__pyx_t_3);
+    PyTuple_SET_ITEM(__pyx_t_7, 0, __pyx_t_3);
+    __pyx_t_3 = 0;
+    __pyx_t_3 = __Pyx_PyObject_Call(((PyObject *)(&PyString_Type)), __pyx_t_7, NULL); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 209, __pyx_L1_error)
+    __Pyx_GOTREF(__pyx_t_3);
+    __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
+    __pyx_t_7 = PyNumber_Add(__pyx_kp_s_F, __pyx_t_3); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 209, __pyx_L1_error)
+    __Pyx_GOTREF(__pyx_t_7);
+    __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
+    __pyx_t_3 = PyNumber_Add(__pyx_t_7, __pyx_kp_s_D_2); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 209, __pyx_L1_error)
+    __Pyx_GOTREF(__pyx_t_3);
+    __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
+    __pyx_t_7 = PyObject_GetItem(__pyx_v_Flight, __pyx_v_DroneIDIndex); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 209, __pyx_L1_error)
+    __Pyx_GOTREF(__pyx_t_7);
+    __pyx_t_9 = PyTuple_New(1); if (unlikely(!__pyx_t_9)) __PYX_ERR(0, 209, __pyx_L1_error)
+    __Pyx_GOTREF(__pyx_t_9);
+    __Pyx_GIVEREF(__pyx_t_7);
+    PyTuple_SET_ITEM(__pyx_t_9, 0, __pyx_t_7);
+    __pyx_t_7 = 0;
+    __pyx_t_7 = __Pyx_PyObject_Call(((PyObject *)(&PyString_Type)), __pyx_t_9, NULL); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 209, __pyx_L1_error)
+    __Pyx_GOTREF(__pyx_t_7);
+    __Pyx_DECREF(__pyx_t_9); __pyx_t_9 = 0;
+    __pyx_t_9 = PyNumber_Add(__pyx_t_3, __pyx_t_7); if (unlikely(!__pyx_t_9)) __PYX_ERR(0, 209, __pyx_L1_error)
+    __Pyx_GOTREF(__pyx_t_9);
+    __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
+    __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
+    __pyx_t_7 = PyNumber_Add(__pyx_t_9, __pyx_kp_s_ETA_2); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 209, __pyx_L1_error)
+    __Pyx_GOTREF(__pyx_t_7);
+    __Pyx_DECREF(__pyx_t_9); __pyx_t_9 = 0;
+    __pyx_t_9 = PyObject_GetItem(__pyx_v_Flight, __pyx_v_ETAIndex); if (unlikely(!__pyx_t_9)) __PYX_ERR(0, 209, __pyx_L1_error)
+    __Pyx_GOTREF(__pyx_t_9);
+    __pyx_t_3 = PyTuple_New(1); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 209, __pyx_L1_error)
+    __Pyx_GOTREF(__pyx_t_3);
+    __Pyx_GIVEREF(__pyx_t_9);
+    PyTuple_SET_ITEM(__pyx_t_3, 0, __pyx_t_9);
+    __pyx_t_9 = 0;
+    __pyx_t_9 = __Pyx_PyObject_Call(((PyObject *)(&PyString_Type)), __pyx_t_3, NULL); if (unlikely(!__pyx_t_9)) __PYX_ERR(0, 209, __pyx_L1_error)
+    __Pyx_GOTREF(__pyx_t_9);
+    __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
+    __pyx_t_3 = PyNumber_Add(__pyx_t_7, __pyx_t_9); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 209, __pyx_L1_error)
+    __Pyx_GOTREF(__pyx_t_3);
+    __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
+    __Pyx_DECREF(__pyx_t_9); __pyx_t_9 = 0;
+    __Pyx_DECREF_SET(__pyx_v_Text, __pyx_t_3);
+    __pyx_t_3 = 0;
+
+210:         Colour = (255,0,0)
+
    __pyx_t_12.f0 = 0xFF;
+    __pyx_t_12.f1 = 0;
+    __pyx_t_12.f2 = 0;
+    __pyx_v_Colour = __pyx_t_12;
+
+211:         FlightList.append(Monitor_Sprite(Coord,"EndPoint",Text,Colour))
+
    __pyx_t_9 = __Pyx_GetModuleGlobalName(__pyx_n_s_Monitor_Sprite); if (unlikely(!__pyx_t_9)) __PYX_ERR(0, 211, __pyx_L1_error)
+    __Pyx_GOTREF(__pyx_t_9);
+    __pyx_t_7 = __pyx_convert__to_py___pyx_ctuple_long__and_long__and_long(__pyx_v_Colour); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 211, __pyx_L1_error)
+    __Pyx_GOTREF(__pyx_t_7);
+    __pyx_t_8 = NULL;
+    __pyx_t_10 = 0;
+    if (CYTHON_UNPACK_METHODS && unlikely(PyMethod_Check(__pyx_t_9))) {
+      __pyx_t_8 = PyMethod_GET_SELF(__pyx_t_9);
+      if (likely(__pyx_t_8)) {
+        PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_9);
+        __Pyx_INCREF(__pyx_t_8);
+        __Pyx_INCREF(function);
+        __Pyx_DECREF_SET(__pyx_t_9, function);
+        __pyx_t_10 = 1;
+      }
+    }
+    #if CYTHON_FAST_PYCALL
+    if (PyFunction_Check(__pyx_t_9)) {
+      PyObject *__pyx_temp[5] = {__pyx_t_8, __pyx_v_Coord, __pyx_n_s_EndPoint, __pyx_v_Text, __pyx_t_7};
+      __pyx_t_3 = __Pyx_PyFunction_FastCall(__pyx_t_9, __pyx_temp+1-__pyx_t_10, 4+__pyx_t_10); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 211, __pyx_L1_error)
+      __Pyx_XDECREF(__pyx_t_8); __pyx_t_8 = 0;
+      __Pyx_GOTREF(__pyx_t_3);
+      __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
+    } else
+    #endif
+    #if CYTHON_FAST_PYCCALL
+    if (__Pyx_PyFastCFunction_Check(__pyx_t_9)) {
+      PyObject *__pyx_temp[5] = {__pyx_t_8, __pyx_v_Coord, __pyx_n_s_EndPoint, __pyx_v_Text, __pyx_t_7};
+      __pyx_t_3 = __Pyx_PyCFunction_FastCall(__pyx_t_9, __pyx_temp+1-__pyx_t_10, 4+__pyx_t_10); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 211, __pyx_L1_error)
+      __Pyx_XDECREF(__pyx_t_8); __pyx_t_8 = 0;
+      __Pyx_GOTREF(__pyx_t_3);
+      __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
+    } else
+    #endif
+    {
+      __pyx_t_11 = PyTuple_New(4+__pyx_t_10); if (unlikely(!__pyx_t_11)) __PYX_ERR(0, 211, __pyx_L1_error)
+      __Pyx_GOTREF(__pyx_t_11);
+      if (__pyx_t_8) {
+        __Pyx_GIVEREF(__pyx_t_8); PyTuple_SET_ITEM(__pyx_t_11, 0, __pyx_t_8); __pyx_t_8 = NULL;
+      }
+      __Pyx_INCREF(__pyx_v_Coord);
+      __Pyx_GIVEREF(__pyx_v_Coord);
+      PyTuple_SET_ITEM(__pyx_t_11, 0+__pyx_t_10, __pyx_v_Coord);
+      __Pyx_INCREF(__pyx_n_s_EndPoint);
+      __Pyx_GIVEREF(__pyx_n_s_EndPoint);
+      PyTuple_SET_ITEM(__pyx_t_11, 1+__pyx_t_10, __pyx_n_s_EndPoint);
+      __Pyx_INCREF(__pyx_v_Text);
+      __Pyx_GIVEREF(__pyx_v_Text);
+      PyTuple_SET_ITEM(__pyx_t_11, 2+__pyx_t_10, __pyx_v_Text);
+      __Pyx_GIVEREF(__pyx_t_7);
+      PyTuple_SET_ITEM(__pyx_t_11, 3+__pyx_t_10, __pyx_t_7);
+      __pyx_t_7 = 0;
+      __pyx_t_3 = __Pyx_PyObject_Call(__pyx_t_9, __pyx_t_11, NULL); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 211, __pyx_L1_error)
+      __Pyx_GOTREF(__pyx_t_3);
+      __Pyx_DECREF(__pyx_t_11); __pyx_t_11 = 0;
+    }
+    __Pyx_DECREF(__pyx_t_9); __pyx_t_9 = 0;
+    __pyx_t_13 = __Pyx_PyList_Append(__pyx_v_FlightList, __pyx_t_3); if (unlikely(__pyx_t_13 == -1)) __PYX_ERR(0, 211, __pyx_L1_error)
+    __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
+
+212:     return FlightList
+
  __Pyx_XDECREF(__pyx_r);
+  __Pyx_INCREF(__pyx_v_FlightList);
+  __pyx_r = __pyx_v_FlightList;
+  goto __pyx_L0;
+
 213: 
+
 214: 
+
+215: def MakeWaypointSprites(Message,RawWaypointList):
+
/* Python wrapper */
+static PyObject *__pyx_pw_6CAStar_19AATC_Monitor_Viewer_11MakeWaypointSprites(PyObject *__pyx_self, PyObject *__pyx_args, PyObject *__pyx_kwds); /*proto*/
+static PyMethodDef __pyx_mdef_6CAStar_19AATC_Monitor_Viewer_11MakeWaypointSprites = {"MakeWaypointSprites", (PyCFunction)__pyx_pw_6CAStar_19AATC_Monitor_Viewer_11MakeWaypointSprites, METH_VARARGS|METH_KEYWORDS, 0};
+static PyObject *__pyx_pw_6CAStar_19AATC_Monitor_Viewer_11MakeWaypointSprites(PyObject *__pyx_self, PyObject *__pyx_args, PyObject *__pyx_kwds) {
+  PyObject *__pyx_v_Message = 0;
+  PyObject *__pyx_v_RawWaypointList = 0;
+  PyObject *__pyx_r = 0;
+  __Pyx_RefNannyDeclarations
+  __Pyx_RefNannySetupContext("MakeWaypointSprites (wrapper)", 0);
+  {
+    static PyObject **__pyx_pyargnames[] = {&__pyx_n_s_Message,&__pyx_n_s_RawWaypointList,0};
+    PyObject* values[2] = {0,0};
+    if (unlikely(__pyx_kwds)) {
+      Py_ssize_t kw_args;
+      const Py_ssize_t pos_args = PyTuple_GET_SIZE(__pyx_args);
+      switch (pos_args) {
+        case  2: values[1] = PyTuple_GET_ITEM(__pyx_args, 1);
+        CYTHON_FALLTHROUGH;
+        case  1: values[0] = PyTuple_GET_ITEM(__pyx_args, 0);
+        CYTHON_FALLTHROUGH;
+        case  0: break;
+        default: goto __pyx_L5_argtuple_error;
+      }
+      kw_args = PyDict_Size(__pyx_kwds);
+      switch (pos_args) {
+        case  0:
+        if (likely((values[0] = PyDict_GetItem(__pyx_kwds, __pyx_n_s_Message)) != 0)) kw_args--;
+        else goto __pyx_L5_argtuple_error;
+        CYTHON_FALLTHROUGH;
+        case  1:
+        if (likely((values[1] = PyDict_GetItem(__pyx_kwds, __pyx_n_s_RawWaypointList)) != 0)) kw_args--;
+        else {
+          __Pyx_RaiseArgtupleInvalid("MakeWaypointSprites", 1, 2, 2, 1); __PYX_ERR(0, 215, __pyx_L3_error)
+        }
+      }
+      if (unlikely(kw_args > 0)) {
+        if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_pyargnames, 0, values, pos_args, "MakeWaypointSprites") < 0)) __PYX_ERR(0, 215, __pyx_L3_error)
+      }
+    } else if (PyTuple_GET_SIZE(__pyx_args) != 2) {
+      goto __pyx_L5_argtuple_error;
+    } else {
+      values[0] = PyTuple_GET_ITEM(__pyx_args, 0);
+      values[1] = PyTuple_GET_ITEM(__pyx_args, 1);
+    }
+    __pyx_v_Message = values[0];
+    __pyx_v_RawWaypointList = values[1];
+  }
+  goto __pyx_L4_argument_unpacking_done;
+  __pyx_L5_argtuple_error:;
+  __Pyx_RaiseArgtupleInvalid("MakeWaypointSprites", 1, 2, 2, PyTuple_GET_SIZE(__pyx_args)); __PYX_ERR(0, 215, __pyx_L3_error)
+  __pyx_L3_error:;
+  __Pyx_AddTraceback("CAStar.AATC_Monitor_Viewer.MakeWaypointSprites", __pyx_clineno, __pyx_lineno, __pyx_filename);
+  __Pyx_RefNannyFinishContext();
+  return NULL;
+  __pyx_L4_argument_unpacking_done:;
+  __pyx_r = __pyx_pf_6CAStar_19AATC_Monitor_Viewer_10MakeWaypointSprites(__pyx_self, __pyx_v_Message, __pyx_v_RawWaypointList);
+
+  /* function exit code */
+  __Pyx_RefNannyFinishContext();
+  return __pyx_r;
+}
+
+static PyObject *__pyx_pf_6CAStar_19AATC_Monitor_Viewer_10MakeWaypointSprites(CYTHON_UNUSED PyObject *__pyx_self, PyObject *__pyx_v_Message, PyObject *__pyx_v_RawWaypointList) {
+  PyObject *__pyx_v_WaypointList = NULL;
+  PyObject *__pyx_v_Columns = NULL;
+  PyObject *__pyx_v_CoordIndex = NULL;
+  PyObject *__pyx_v_WaypointNumberIndex = NULL;
+  PyObject *__pyx_v_FlightIDIndex = NULL;
+  PyObject *__pyx_v_Waypoint = NULL;
+  PyObject *__pyx_v_Coords = NULL;
+  PyObject *__pyx_v_Coord = NULL;
+  PyObject *__pyx_v_Text = NULL;
+  __pyx_ctuple_long__and_long__and_long __pyx_v_Colour;
+  PyObject *__pyx_r = NULL;
+  __Pyx_RefNannyDeclarations
+  __Pyx_RefNannySetupContext("MakeWaypointSprites", 0);
+/* … */
+  /* function exit code */
+  __pyx_L1_error:;
+  __Pyx_XDECREF(__pyx_t_1);
+  __Pyx_XDECREF(__pyx_t_2);
+  __Pyx_XDECREF(__pyx_t_3);
+  __Pyx_XDECREF(__pyx_t_4);
+  __Pyx_XDECREF(__pyx_t_7);
+  __Pyx_XDECREF(__pyx_t_8);
+  __Pyx_XDECREF(__pyx_t_9);
+  __Pyx_XDECREF(__pyx_t_11);
+  __Pyx_AddTraceback("CAStar.AATC_Monitor_Viewer.MakeWaypointSprites", __pyx_clineno, __pyx_lineno, __pyx_filename);
+  __pyx_r = NULL;
+  __pyx_L0:;
+  __Pyx_XDECREF(__pyx_v_WaypointList);
+  __Pyx_XDECREF(__pyx_v_Columns);
+  __Pyx_XDECREF(__pyx_v_CoordIndex);
+  __Pyx_XDECREF(__pyx_v_WaypointNumberIndex);
+  __Pyx_XDECREF(__pyx_v_FlightIDIndex);
+  __Pyx_XDECREF(__pyx_v_Waypoint);
+  __Pyx_XDECREF(__pyx_v_Coords);
+  __Pyx_XDECREF(__pyx_v_Coord);
+  __Pyx_XDECREF(__pyx_v_Text);
+  __Pyx_XGIVEREF(__pyx_r);
+  __Pyx_RefNannyFinishContext();
+  return __pyx_r;
+}
+/* … */
+  __pyx_tuple__73 = PyTuple_Pack(12, __pyx_n_s_Message, __pyx_n_s_RawWaypointList, __pyx_n_s_WaypointList, __pyx_n_s_Columns, __pyx_n_s_CoordIndex, __pyx_n_s_WaypointNumberIndex, __pyx_n_s_FlightIDIndex, __pyx_n_s_Waypoint, __pyx_n_s_Coords, __pyx_n_s_Coord, __pyx_n_s_Text, __pyx_n_s_Colour); if (unlikely(!__pyx_tuple__73)) __PYX_ERR(0, 215, __pyx_L1_error)
+  __Pyx_GOTREF(__pyx_tuple__73);
+  __Pyx_GIVEREF(__pyx_tuple__73);
+/* … */
+  __pyx_t_3 = PyCFunction_NewEx(&__pyx_mdef_6CAStar_19AATC_Monitor_Viewer_11MakeWaypointSprites, NULL, __pyx_n_s_CAStar_AATC_Monitor_Viewer); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 215, __pyx_L1_error)
+  __Pyx_GOTREF(__pyx_t_3);
+  if (PyDict_SetItem(__pyx_d, __pyx_n_s_MakeWaypointSprites, __pyx_t_3) < 0) __PYX_ERR(0, 215, __pyx_L1_error)
+  __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
+  __pyx_codeobj__74 = (PyObject*)__Pyx_PyCode_New(2, 0, 12, 0, 0, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__73, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_AATC_Monitor_Viewer_pyx, __pyx_n_s_MakeWaypointSprites, 215, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__74)) __PYX_ERR(0, 215, __pyx_L1_error)
+
+216:     WaypointList = []
+
  __pyx_t_1 = PyList_New(0); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 216, __pyx_L1_error)
+  __Pyx_GOTREF(__pyx_t_1);
+  __pyx_v_WaypointList = ((PyObject*)__pyx_t_1);
+  __pyx_t_1 = 0;
+
+217:     Columns = ast.literal_eval(Message)
+
  __pyx_t_2 = __Pyx_GetModuleGlobalName(__pyx_n_s_ast); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 217, __pyx_L1_error)
+  __Pyx_GOTREF(__pyx_t_2);
+  __pyx_t_3 = __Pyx_PyObject_GetAttrStr(__pyx_t_2, __pyx_n_s_literal_eval); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 217, __pyx_L1_error)
+  __Pyx_GOTREF(__pyx_t_3);
+  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
+  __pyx_t_2 = NULL;
+  if (CYTHON_UNPACK_METHODS && unlikely(PyMethod_Check(__pyx_t_3))) {
+    __pyx_t_2 = PyMethod_GET_SELF(__pyx_t_3);
+    if (likely(__pyx_t_2)) {
+      PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_3);
+      __Pyx_INCREF(__pyx_t_2);
+      __Pyx_INCREF(function);
+      __Pyx_DECREF_SET(__pyx_t_3, function);
+    }
+  }
+  if (!__pyx_t_2) {
+    __pyx_t_1 = __Pyx_PyObject_CallOneArg(__pyx_t_3, __pyx_v_Message); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 217, __pyx_L1_error)
+    __Pyx_GOTREF(__pyx_t_1);
+  } else {
+    #if CYTHON_FAST_PYCALL
+    if (PyFunction_Check(__pyx_t_3)) {
+      PyObject *__pyx_temp[2] = {__pyx_t_2, __pyx_v_Message};
+      __pyx_t_1 = __Pyx_PyFunction_FastCall(__pyx_t_3, __pyx_temp+1-1, 1+1); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 217, __pyx_L1_error)
+      __Pyx_XDECREF(__pyx_t_2); __pyx_t_2 = 0;
+      __Pyx_GOTREF(__pyx_t_1);
+    } else
+    #endif
+    #if CYTHON_FAST_PYCCALL
+    if (__Pyx_PyFastCFunction_Check(__pyx_t_3)) {
+      PyObject *__pyx_temp[2] = {__pyx_t_2, __pyx_v_Message};
+      __pyx_t_1 = __Pyx_PyCFunction_FastCall(__pyx_t_3, __pyx_temp+1-1, 1+1); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 217, __pyx_L1_error)
+      __Pyx_XDECREF(__pyx_t_2); __pyx_t_2 = 0;
+      __Pyx_GOTREF(__pyx_t_1);
+    } else
+    #endif
+    {
+      __pyx_t_4 = PyTuple_New(1+1); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 217, __pyx_L1_error)
+      __Pyx_GOTREF(__pyx_t_4);
+      __Pyx_GIVEREF(__pyx_t_2); PyTuple_SET_ITEM(__pyx_t_4, 0, __pyx_t_2); __pyx_t_2 = NULL;
+      __Pyx_INCREF(__pyx_v_Message);
+      __Pyx_GIVEREF(__pyx_v_Message);
+      PyTuple_SET_ITEM(__pyx_t_4, 0+1, __pyx_v_Message);
+      __pyx_t_1 = __Pyx_PyObject_Call(__pyx_t_3, __pyx_t_4, NULL); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 217, __pyx_L1_error)
+      __Pyx_GOTREF(__pyx_t_1);
+      __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
+    }
+  }
+  __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
+  __pyx_v_Columns = __pyx_t_1;
+  __pyx_t_1 = 0;
+
+218:     CoordIndex = Columns.index("Coords")
+
  __pyx_t_1 = __Pyx_PyObject_GetAttrStr(__pyx_v_Columns, __pyx_n_s_index); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 218, __pyx_L1_error)
+  __Pyx_GOTREF(__pyx_t_1);
+  __pyx_t_3 = __Pyx_PyObject_Call(__pyx_t_1, __pyx_tuple__20, NULL); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 218, __pyx_L1_error)
+  __Pyx_GOTREF(__pyx_t_3);
+  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
+  __pyx_v_CoordIndex = __pyx_t_3;
+  __pyx_t_3 = 0;
+/* … */
+  __pyx_tuple__20 = PyTuple_Pack(1, __pyx_n_s_Coords); if (unlikely(!__pyx_tuple__20)) __PYX_ERR(0, 218, __pyx_L1_error)
+  __Pyx_GOTREF(__pyx_tuple__20);
+  __Pyx_GIVEREF(__pyx_tuple__20);
+
+219:     WaypointNumberIndex = Columns.index("WaypointNumber")
+
  __pyx_t_3 = __Pyx_PyObject_GetAttrStr(__pyx_v_Columns, __pyx_n_s_index); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 219, __pyx_L1_error)
+  __Pyx_GOTREF(__pyx_t_3);
+  __pyx_t_1 = __Pyx_PyObject_Call(__pyx_t_3, __pyx_tuple__21, NULL); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 219, __pyx_L1_error)
+  __Pyx_GOTREF(__pyx_t_1);
+  __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
+  __pyx_v_WaypointNumberIndex = __pyx_t_1;
+  __pyx_t_1 = 0;
+/* … */
+  __pyx_tuple__21 = PyTuple_Pack(1, __pyx_n_s_WaypointNumber); if (unlikely(!__pyx_tuple__21)) __PYX_ERR(0, 219, __pyx_L1_error)
+  __Pyx_GOTREF(__pyx_tuple__21);
+  __Pyx_GIVEREF(__pyx_tuple__21);
+
+220:     FlightIDIndex = Columns.index("FlightID")
+
  __pyx_t_1 = __Pyx_PyObject_GetAttrStr(__pyx_v_Columns, __pyx_n_s_index); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 220, __pyx_L1_error)
+  __Pyx_GOTREF(__pyx_t_1);
+  __pyx_t_3 = __Pyx_PyObject_Call(__pyx_t_1, __pyx_tuple__22, NULL); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 220, __pyx_L1_error)
+  __Pyx_GOTREF(__pyx_t_3);
+  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
+  __pyx_v_FlightIDIndex = __pyx_t_3;
+  __pyx_t_3 = 0;
+/* … */
+  __pyx_tuple__22 = PyTuple_Pack(1, __pyx_n_s_FlightID); if (unlikely(!__pyx_tuple__22)) __PYX_ERR(0, 220, __pyx_L1_error)
+  __Pyx_GOTREF(__pyx_tuple__22);
+  __Pyx_GIVEREF(__pyx_tuple__22);
+
+221:     for Waypoint in RawWaypointList:
+
  if (likely(PyList_CheckExact(__pyx_v_RawWaypointList)) || PyTuple_CheckExact(__pyx_v_RawWaypointList)) {
+    __pyx_t_3 = __pyx_v_RawWaypointList; __Pyx_INCREF(__pyx_t_3); __pyx_t_5 = 0;
+    __pyx_t_6 = NULL;
+  } else {
+    __pyx_t_5 = -1; __pyx_t_3 = PyObject_GetIter(__pyx_v_RawWaypointList); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 221, __pyx_L1_error)
+    __Pyx_GOTREF(__pyx_t_3);
+    __pyx_t_6 = Py_TYPE(__pyx_t_3)->tp_iternext; if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 221, __pyx_L1_error)
+  }
+  for (;;) {
+    if (likely(!__pyx_t_6)) {
+      if (likely(PyList_CheckExact(__pyx_t_3))) {
+        if (__pyx_t_5 >= PyList_GET_SIZE(__pyx_t_3)) break;
+        #if CYTHON_ASSUME_SAFE_MACROS && !CYTHON_AVOID_BORROWED_REFS
+        __pyx_t_1 = PyList_GET_ITEM(__pyx_t_3, __pyx_t_5); __Pyx_INCREF(__pyx_t_1); __pyx_t_5++; if (unlikely(0 < 0)) __PYX_ERR(0, 221, __pyx_L1_error)
+        #else
+        __pyx_t_1 = PySequence_ITEM(__pyx_t_3, __pyx_t_5); __pyx_t_5++; if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 221, __pyx_L1_error)
+        __Pyx_GOTREF(__pyx_t_1);
+        #endif
+      } else {
+        if (__pyx_t_5 >= PyTuple_GET_SIZE(__pyx_t_3)) break;
+        #if CYTHON_ASSUME_SAFE_MACROS && !CYTHON_AVOID_BORROWED_REFS
+        __pyx_t_1 = PyTuple_GET_ITEM(__pyx_t_3, __pyx_t_5); __Pyx_INCREF(__pyx_t_1); __pyx_t_5++; if (unlikely(0 < 0)) __PYX_ERR(0, 221, __pyx_L1_error)
+        #else
+        __pyx_t_1 = PySequence_ITEM(__pyx_t_3, __pyx_t_5); __pyx_t_5++; if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 221, __pyx_L1_error)
+        __Pyx_GOTREF(__pyx_t_1);
+        #endif
+      }
+    } else {
+      __pyx_t_1 = __pyx_t_6(__pyx_t_3);
+      if (unlikely(!__pyx_t_1)) {
+        PyObject* exc_type = PyErr_Occurred();
+        if (exc_type) {
+          if (likely(exc_type == PyExc_StopIteration || PyErr_GivenExceptionMatches(exc_type, PyExc_StopIteration))) PyErr_Clear();
+          else __PYX_ERR(0, 221, __pyx_L1_error)
+        }
+        break;
+      }
+      __Pyx_GOTREF(__pyx_t_1);
+    }
+    __Pyx_XDECREF_SET(__pyx_v_Waypoint, __pyx_t_1);
+    __pyx_t_1 = 0;
+/* … */
+  }
+  __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
+
+222:         Coords = ast.literal_eval(Waypoint[CoordIndex])
+
    __pyx_t_4 = __Pyx_GetModuleGlobalName(__pyx_n_s_ast); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 222, __pyx_L1_error)
+    __Pyx_GOTREF(__pyx_t_4);
+    __pyx_t_2 = __Pyx_PyObject_GetAttrStr(__pyx_t_4, __pyx_n_s_literal_eval); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 222, __pyx_L1_error)
+    __Pyx_GOTREF(__pyx_t_2);
+    __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
+    __pyx_t_4 = PyObject_GetItem(__pyx_v_Waypoint, __pyx_v_CoordIndex); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 222, __pyx_L1_error)
+    __Pyx_GOTREF(__pyx_t_4);
+    __pyx_t_7 = NULL;
+    if (CYTHON_UNPACK_METHODS && unlikely(PyMethod_Check(__pyx_t_2))) {
+      __pyx_t_7 = PyMethod_GET_SELF(__pyx_t_2);
+      if (likely(__pyx_t_7)) {
+        PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_2);
+        __Pyx_INCREF(__pyx_t_7);
+        __Pyx_INCREF(function);
+        __Pyx_DECREF_SET(__pyx_t_2, function);
+      }
+    }
+    if (!__pyx_t_7) {
+      __pyx_t_1 = __Pyx_PyObject_CallOneArg(__pyx_t_2, __pyx_t_4); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 222, __pyx_L1_error)
+      __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
+      __Pyx_GOTREF(__pyx_t_1);
+    } else {
+      #if CYTHON_FAST_PYCALL
+      if (PyFunction_Check(__pyx_t_2)) {
+        PyObject *__pyx_temp[2] = {__pyx_t_7, __pyx_t_4};
+        __pyx_t_1 = __Pyx_PyFunction_FastCall(__pyx_t_2, __pyx_temp+1-1, 1+1); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 222, __pyx_L1_error)
+        __Pyx_XDECREF(__pyx_t_7); __pyx_t_7 = 0;
+        __Pyx_GOTREF(__pyx_t_1);
+        __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
+      } else
+      #endif
+      #if CYTHON_FAST_PYCCALL
+      if (__Pyx_PyFastCFunction_Check(__pyx_t_2)) {
+        PyObject *__pyx_temp[2] = {__pyx_t_7, __pyx_t_4};
+        __pyx_t_1 = __Pyx_PyCFunction_FastCall(__pyx_t_2, __pyx_temp+1-1, 1+1); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 222, __pyx_L1_error)
+        __Pyx_XDECREF(__pyx_t_7); __pyx_t_7 = 0;
+        __Pyx_GOTREF(__pyx_t_1);
+        __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
+      } else
+      #endif
+      {
+        __pyx_t_8 = PyTuple_New(1+1); if (unlikely(!__pyx_t_8)) __PYX_ERR(0, 222, __pyx_L1_error)
+        __Pyx_GOTREF(__pyx_t_8);
+        __Pyx_GIVEREF(__pyx_t_7); PyTuple_SET_ITEM(__pyx_t_8, 0, __pyx_t_7); __pyx_t_7 = NULL;
+        __Pyx_GIVEREF(__pyx_t_4);
+        PyTuple_SET_ITEM(__pyx_t_8, 0+1, __pyx_t_4);
+        __pyx_t_4 = 0;
+        __pyx_t_1 = __Pyx_PyObject_Call(__pyx_t_2, __pyx_t_8, NULL); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 222, __pyx_L1_error)
+        __Pyx_GOTREF(__pyx_t_1);
+        __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0;
+      }
+    }
+    __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
+    __Pyx_XDECREF_SET(__pyx_v_Coords, __pyx_t_1);
+    __pyx_t_1 = 0;
+
+223:         Coord = AATC_Coordinate.Coordinate(Coords[0],Coords[1],Coords[2],0.001,0.001,0.00001)
+
    __pyx_t_2 = __Pyx_GetModuleGlobalName(__pyx_n_s_AATC_Coordinate); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 223, __pyx_L1_error)
+    __Pyx_GOTREF(__pyx_t_2);
+    __pyx_t_8 = __Pyx_PyObject_GetAttrStr(__pyx_t_2, __pyx_n_s_Coordinate); if (unlikely(!__pyx_t_8)) __PYX_ERR(0, 223, __pyx_L1_error)
+    __Pyx_GOTREF(__pyx_t_8);
+    __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
+    __pyx_t_2 = __Pyx_GetItemInt(__pyx_v_Coords, 0, long, 1, __Pyx_PyInt_From_long, 0, 0, 0); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 223, __pyx_L1_error)
+    __Pyx_GOTREF(__pyx_t_2);
+    __pyx_t_4 = __Pyx_GetItemInt(__pyx_v_Coords, 1, long, 1, __Pyx_PyInt_From_long, 0, 0, 0); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 223, __pyx_L1_error)
+    __Pyx_GOTREF(__pyx_t_4);
+    __pyx_t_7 = __Pyx_GetItemInt(__pyx_v_Coords, 2, long, 1, __Pyx_PyInt_From_long, 0, 0, 0); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 223, __pyx_L1_error)
+    __Pyx_GOTREF(__pyx_t_7);
+    __pyx_t_9 = NULL;
+    __pyx_t_10 = 0;
+    if (CYTHON_UNPACK_METHODS && unlikely(PyMethod_Check(__pyx_t_8))) {
+      __pyx_t_9 = PyMethod_GET_SELF(__pyx_t_8);
+      if (likely(__pyx_t_9)) {
+        PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_8);
+        __Pyx_INCREF(__pyx_t_9);
+        __Pyx_INCREF(function);
+        __Pyx_DECREF_SET(__pyx_t_8, function);
+        __pyx_t_10 = 1;
+      }
+    }
+    #if CYTHON_FAST_PYCALL
+    if (PyFunction_Check(__pyx_t_8)) {
+      PyObject *__pyx_temp[7] = {__pyx_t_9, __pyx_t_2, __pyx_t_4, __pyx_t_7, __pyx_float_0_001, __pyx_float_0_001, __pyx_float_0_00001};
+      __pyx_t_1 = __Pyx_PyFunction_FastCall(__pyx_t_8, __pyx_temp+1-__pyx_t_10, 6+__pyx_t_10); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 223, __pyx_L1_error)
+      __Pyx_XDECREF(__pyx_t_9); __pyx_t_9 = 0;
+      __Pyx_GOTREF(__pyx_t_1);
+      __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
+      __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
+      __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
+    } else
+    #endif
+    #if CYTHON_FAST_PYCCALL
+    if (__Pyx_PyFastCFunction_Check(__pyx_t_8)) {
+      PyObject *__pyx_temp[7] = {__pyx_t_9, __pyx_t_2, __pyx_t_4, __pyx_t_7, __pyx_float_0_001, __pyx_float_0_001, __pyx_float_0_00001};
+      __pyx_t_1 = __Pyx_PyCFunction_FastCall(__pyx_t_8, __pyx_temp+1-__pyx_t_10, 6+__pyx_t_10); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 223, __pyx_L1_error)
+      __Pyx_XDECREF(__pyx_t_9); __pyx_t_9 = 0;
+      __Pyx_GOTREF(__pyx_t_1);
+      __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
+      __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
+      __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
+    } else
+    #endif
+    {
+      __pyx_t_11 = PyTuple_New(6+__pyx_t_10); if (unlikely(!__pyx_t_11)) __PYX_ERR(0, 223, __pyx_L1_error)
+      __Pyx_GOTREF(__pyx_t_11);
+      if (__pyx_t_9) {
+        __Pyx_GIVEREF(__pyx_t_9); PyTuple_SET_ITEM(__pyx_t_11, 0, __pyx_t_9); __pyx_t_9 = NULL;
+      }
+      __Pyx_GIVEREF(__pyx_t_2);
+      PyTuple_SET_ITEM(__pyx_t_11, 0+__pyx_t_10, __pyx_t_2);
+      __Pyx_GIVEREF(__pyx_t_4);
+      PyTuple_SET_ITEM(__pyx_t_11, 1+__pyx_t_10, __pyx_t_4);
+      __Pyx_GIVEREF(__pyx_t_7);
+      PyTuple_SET_ITEM(__pyx_t_11, 2+__pyx_t_10, __pyx_t_7);
+      __Pyx_INCREF(__pyx_float_0_001);
+      __Pyx_GIVEREF(__pyx_float_0_001);
+      PyTuple_SET_ITEM(__pyx_t_11, 3+__pyx_t_10, __pyx_float_0_001);
+      __Pyx_INCREF(__pyx_float_0_001);
+      __Pyx_GIVEREF(__pyx_float_0_001);
+      PyTuple_SET_ITEM(__pyx_t_11, 4+__pyx_t_10, __pyx_float_0_001);
+      __Pyx_INCREF(__pyx_float_0_00001);
+      __Pyx_GIVEREF(__pyx_float_0_00001);
+      PyTuple_SET_ITEM(__pyx_t_11, 5+__pyx_t_10, __pyx_float_0_00001);
+      __pyx_t_2 = 0;
+      __pyx_t_4 = 0;
+      __pyx_t_7 = 0;
+      __pyx_t_1 = __Pyx_PyObject_Call(__pyx_t_8, __pyx_t_11, NULL); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 223, __pyx_L1_error)
+      __Pyx_GOTREF(__pyx_t_1);
+      __Pyx_DECREF(__pyx_t_11); __pyx_t_11 = 0;
+    }
+    __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0;
+    __Pyx_XDECREF_SET(__pyx_v_Coord, __pyx_t_1);
+    __pyx_t_1 = 0;
+
+224:         Text = "F:"+ str(Waypoint[FlightIDIndex]) +" W:"+ str(Waypoint[WaypointNumberIndex])
+
    __pyx_t_1 = PyObject_GetItem(__pyx_v_Waypoint, __pyx_v_FlightIDIndex); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 224, __pyx_L1_error)
+    __Pyx_GOTREF(__pyx_t_1);
+    __pyx_t_8 = PyTuple_New(1); if (unlikely(!__pyx_t_8)) __PYX_ERR(0, 224, __pyx_L1_error)
+    __Pyx_GOTREF(__pyx_t_8);
+    __Pyx_GIVEREF(__pyx_t_1);
+    PyTuple_SET_ITEM(__pyx_t_8, 0, __pyx_t_1);
+    __pyx_t_1 = 0;
+    __pyx_t_1 = __Pyx_PyObject_Call(((PyObject *)(&PyString_Type)), __pyx_t_8, NULL); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 224, __pyx_L1_error)
+    __Pyx_GOTREF(__pyx_t_1);
+    __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0;
+    __pyx_t_8 = PyNumber_Add(__pyx_kp_s_F, __pyx_t_1); if (unlikely(!__pyx_t_8)) __PYX_ERR(0, 224, __pyx_L1_error)
+    __Pyx_GOTREF(__pyx_t_8);
+    __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
+    __pyx_t_1 = PyNumber_Add(__pyx_t_8, __pyx_kp_s_W); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 224, __pyx_L1_error)
+    __Pyx_GOTREF(__pyx_t_1);
+    __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0;
+    __pyx_t_8 = PyObject_GetItem(__pyx_v_Waypoint, __pyx_v_WaypointNumberIndex); if (unlikely(!__pyx_t_8)) __PYX_ERR(0, 224, __pyx_L1_error)
+    __Pyx_GOTREF(__pyx_t_8);
+    __pyx_t_11 = PyTuple_New(1); if (unlikely(!__pyx_t_11)) __PYX_ERR(0, 224, __pyx_L1_error)
+    __Pyx_GOTREF(__pyx_t_11);
+    __Pyx_GIVEREF(__pyx_t_8);
+    PyTuple_SET_ITEM(__pyx_t_11, 0, __pyx_t_8);
+    __pyx_t_8 = 0;
+    __pyx_t_8 = __Pyx_PyObject_Call(((PyObject *)(&PyString_Type)), __pyx_t_11, NULL); if (unlikely(!__pyx_t_8)) __PYX_ERR(0, 224, __pyx_L1_error)
+    __Pyx_GOTREF(__pyx_t_8);
+    __Pyx_DECREF(__pyx_t_11); __pyx_t_11 = 0;
+    __pyx_t_11 = PyNumber_Add(__pyx_t_1, __pyx_t_8); if (unlikely(!__pyx_t_11)) __PYX_ERR(0, 224, __pyx_L1_error)
+    __Pyx_GOTREF(__pyx_t_11);
+    __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
+    __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0;
+    __Pyx_XDECREF_SET(__pyx_v_Text, __pyx_t_11);
+    __pyx_t_11 = 0;
+
+225:         Colour = (0,255,0)
+
    __pyx_t_12.f0 = 0;
+    __pyx_t_12.f1 = 0xFF;
+    __pyx_t_12.f2 = 0;
+    __pyx_v_Colour = __pyx_t_12;
+
+226:         WaypointList.append(Monitor_Sprite(Coord,"Waypoint",Text,Colour))
+
    __pyx_t_8 = __Pyx_GetModuleGlobalName(__pyx_n_s_Monitor_Sprite); if (unlikely(!__pyx_t_8)) __PYX_ERR(0, 226, __pyx_L1_error)
+    __Pyx_GOTREF(__pyx_t_8);
+    __pyx_t_1 = __pyx_convert__to_py___pyx_ctuple_long__and_long__and_long(__pyx_v_Colour); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 226, __pyx_L1_error)
+    __Pyx_GOTREF(__pyx_t_1);
+    __pyx_t_7 = NULL;
+    __pyx_t_10 = 0;
+    if (CYTHON_UNPACK_METHODS && unlikely(PyMethod_Check(__pyx_t_8))) {
+      __pyx_t_7 = PyMethod_GET_SELF(__pyx_t_8);
+      if (likely(__pyx_t_7)) {
+        PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_8);
+        __Pyx_INCREF(__pyx_t_7);
+        __Pyx_INCREF(function);
+        __Pyx_DECREF_SET(__pyx_t_8, function);
+        __pyx_t_10 = 1;
+      }
+    }
+    #if CYTHON_FAST_PYCALL
+    if (PyFunction_Check(__pyx_t_8)) {
+      PyObject *__pyx_temp[5] = {__pyx_t_7, __pyx_v_Coord, __pyx_n_s_Waypoint, __pyx_v_Text, __pyx_t_1};
+      __pyx_t_11 = __Pyx_PyFunction_FastCall(__pyx_t_8, __pyx_temp+1-__pyx_t_10, 4+__pyx_t_10); if (unlikely(!__pyx_t_11)) __PYX_ERR(0, 226, __pyx_L1_error)
+      __Pyx_XDECREF(__pyx_t_7); __pyx_t_7 = 0;
+      __Pyx_GOTREF(__pyx_t_11);
+      __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
+    } else
+    #endif
+    #if CYTHON_FAST_PYCCALL
+    if (__Pyx_PyFastCFunction_Check(__pyx_t_8)) {
+      PyObject *__pyx_temp[5] = {__pyx_t_7, __pyx_v_Coord, __pyx_n_s_Waypoint, __pyx_v_Text, __pyx_t_1};
+      __pyx_t_11 = __Pyx_PyCFunction_FastCall(__pyx_t_8, __pyx_temp+1-__pyx_t_10, 4+__pyx_t_10); if (unlikely(!__pyx_t_11)) __PYX_ERR(0, 226, __pyx_L1_error)
+      __Pyx_XDECREF(__pyx_t_7); __pyx_t_7 = 0;
+      __Pyx_GOTREF(__pyx_t_11);
+      __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
+    } else
+    #endif
+    {
+      __pyx_t_4 = PyTuple_New(4+__pyx_t_10); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 226, __pyx_L1_error)
+      __Pyx_GOTREF(__pyx_t_4);
+      if (__pyx_t_7) {
+        __Pyx_GIVEREF(__pyx_t_7); PyTuple_SET_ITEM(__pyx_t_4, 0, __pyx_t_7); __pyx_t_7 = NULL;
+      }
+      __Pyx_INCREF(__pyx_v_Coord);
+      __Pyx_GIVEREF(__pyx_v_Coord);
+      PyTuple_SET_ITEM(__pyx_t_4, 0+__pyx_t_10, __pyx_v_Coord);
+      __Pyx_INCREF(__pyx_n_s_Waypoint);
+      __Pyx_GIVEREF(__pyx_n_s_Waypoint);
+      PyTuple_SET_ITEM(__pyx_t_4, 1+__pyx_t_10, __pyx_n_s_Waypoint);
+      __Pyx_INCREF(__pyx_v_Text);
+      __Pyx_GIVEREF(__pyx_v_Text);
+      PyTuple_SET_ITEM(__pyx_t_4, 2+__pyx_t_10, __pyx_v_Text);
+      __Pyx_GIVEREF(__pyx_t_1);
+      PyTuple_SET_ITEM(__pyx_t_4, 3+__pyx_t_10, __pyx_t_1);
+      __pyx_t_1 = 0;
+      __pyx_t_11 = __Pyx_PyObject_Call(__pyx_t_8, __pyx_t_4, NULL); if (unlikely(!__pyx_t_11)) __PYX_ERR(0, 226, __pyx_L1_error)
+      __Pyx_GOTREF(__pyx_t_11);
+      __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
+    }
+    __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0;
+    __pyx_t_13 = __Pyx_PyList_Append(__pyx_v_WaypointList, __pyx_t_11); if (unlikely(__pyx_t_13 == -1)) __PYX_ERR(0, 226, __pyx_L1_error)
+    __Pyx_DECREF(__pyx_t_11); __pyx_t_11 = 0;
+
+227:     return WaypointList
+
  __Pyx_XDECREF(__pyx_r);
+  __Pyx_INCREF(__pyx_v_WaypointList);
+  __pyx_r = __pyx_v_WaypointList;
+  goto __pyx_L0;
+
 228: 
+
+229: def MakeZoneSprites(Message,RawZoneList):
+
/* Python wrapper */
+static PyObject *__pyx_pw_6CAStar_19AATC_Monitor_Viewer_13MakeZoneSprites(PyObject *__pyx_self, PyObject *__pyx_args, PyObject *__pyx_kwds); /*proto*/
+static PyMethodDef __pyx_mdef_6CAStar_19AATC_Monitor_Viewer_13MakeZoneSprites = {"MakeZoneSprites", (PyCFunction)__pyx_pw_6CAStar_19AATC_Monitor_Viewer_13MakeZoneSprites, METH_VARARGS|METH_KEYWORDS, 0};
+static PyObject *__pyx_pw_6CAStar_19AATC_Monitor_Viewer_13MakeZoneSprites(PyObject *__pyx_self, PyObject *__pyx_args, PyObject *__pyx_kwds) {
+  PyObject *__pyx_v_Message = 0;
+  PyObject *__pyx_v_RawZoneList = 0;
+  PyObject *__pyx_r = 0;
+  __Pyx_RefNannyDeclarations
+  __Pyx_RefNannySetupContext("MakeZoneSprites (wrapper)", 0);
+  {
+    static PyObject **__pyx_pyargnames[] = {&__pyx_n_s_Message,&__pyx_n_s_RawZoneList,0};
+    PyObject* values[2] = {0,0};
+    if (unlikely(__pyx_kwds)) {
+      Py_ssize_t kw_args;
+      const Py_ssize_t pos_args = PyTuple_GET_SIZE(__pyx_args);
+      switch (pos_args) {
+        case  2: values[1] = PyTuple_GET_ITEM(__pyx_args, 1);
+        CYTHON_FALLTHROUGH;
+        case  1: values[0] = PyTuple_GET_ITEM(__pyx_args, 0);
+        CYTHON_FALLTHROUGH;
+        case  0: break;
+        default: goto __pyx_L5_argtuple_error;
+      }
+      kw_args = PyDict_Size(__pyx_kwds);
+      switch (pos_args) {
+        case  0:
+        if (likely((values[0] = PyDict_GetItem(__pyx_kwds, __pyx_n_s_Message)) != 0)) kw_args--;
+        else goto __pyx_L5_argtuple_error;
+        CYTHON_FALLTHROUGH;
+        case  1:
+        if (likely((values[1] = PyDict_GetItem(__pyx_kwds, __pyx_n_s_RawZoneList)) != 0)) kw_args--;
+        else {
+          __Pyx_RaiseArgtupleInvalid("MakeZoneSprites", 1, 2, 2, 1); __PYX_ERR(0, 229, __pyx_L3_error)
+        }
+      }
+      if (unlikely(kw_args > 0)) {
+        if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_pyargnames, 0, values, pos_args, "MakeZoneSprites") < 0)) __PYX_ERR(0, 229, __pyx_L3_error)
+      }
+    } else if (PyTuple_GET_SIZE(__pyx_args) != 2) {
+      goto __pyx_L5_argtuple_error;
+    } else {
+      values[0] = PyTuple_GET_ITEM(__pyx_args, 0);
+      values[1] = PyTuple_GET_ITEM(__pyx_args, 1);
+    }
+    __pyx_v_Message = values[0];
+    __pyx_v_RawZoneList = values[1];
+  }
+  goto __pyx_L4_argument_unpacking_done;
+  __pyx_L5_argtuple_error:;
+  __Pyx_RaiseArgtupleInvalid("MakeZoneSprites", 1, 2, 2, PyTuple_GET_SIZE(__pyx_args)); __PYX_ERR(0, 229, __pyx_L3_error)
+  __pyx_L3_error:;
+  __Pyx_AddTraceback("CAStar.AATC_Monitor_Viewer.MakeZoneSprites", __pyx_clineno, __pyx_lineno, __pyx_filename);
+  __Pyx_RefNannyFinishContext();
+  return NULL;
+  __pyx_L4_argument_unpacking_done:;
+  __pyx_r = __pyx_pf_6CAStar_19AATC_Monitor_Viewer_12MakeZoneSprites(__pyx_self, __pyx_v_Message, __pyx_v_RawZoneList);
+
+  /* function exit code */
+  __Pyx_RefNannyFinishContext();
+  return __pyx_r;
+}
+
+static PyObject *__pyx_pf_6CAStar_19AATC_Monitor_Viewer_12MakeZoneSprites(CYTHON_UNUSED PyObject *__pyx_self, PyObject *__pyx_v_Message, PyObject *__pyx_v_RawZoneList) {
+  PyObject *__pyx_v_ZoneList = NULL;
+  PyObject *__pyx_v_Columns = NULL;
+  PyObject *__pyx_v_StartCoordIndex = NULL;
+  PyObject *__pyx_v_EndCoordIndex = NULL;
+  PyObject *__pyx_v_LevelIndex = NULL;
+  PyObject *__pyx_v_ZoneIDIndex = NULL;
+  PyObject *__pyx_v_Zone = NULL;
+  PyObject *__pyx_v_StartCoords = NULL;
+  PyObject *__pyx_v_EndCoords = NULL;
+  PyObject *__pyx_v_Coord = NULL;
+  PyObject *__pyx_v_Text = NULL;
+  __pyx_ctuple_long__and_long__and_long __pyx_v_Colour;
+  PyObject *__pyx_r = NULL;
+  __Pyx_RefNannyDeclarations
+  __Pyx_RefNannySetupContext("MakeZoneSprites", 0);
+/* … */
+  /* function exit code */
+  __pyx_L1_error:;
+  __Pyx_XDECREF(__pyx_t_1);
+  __Pyx_XDECREF(__pyx_t_2);
+  __Pyx_XDECREF(__pyx_t_3);
+  __Pyx_XDECREF(__pyx_t_4);
+  __Pyx_XDECREF(__pyx_t_7);
+  __Pyx_XDECREF(__pyx_t_8);
+  __Pyx_XDECREF(__pyx_t_9);
+  __Pyx_XDECREF(__pyx_t_10);
+  __Pyx_XDECREF(__pyx_t_11);
+  __Pyx_XDECREF(__pyx_t_12);
+  __Pyx_XDECREF(__pyx_t_13);
+  __Pyx_AddTraceback("CAStar.AATC_Monitor_Viewer.MakeZoneSprites", __pyx_clineno, __pyx_lineno, __pyx_filename);
+  __pyx_r = NULL;
+  __pyx_L0:;
+  __Pyx_XDECREF(__pyx_v_ZoneList);
+  __Pyx_XDECREF(__pyx_v_Columns);
+  __Pyx_XDECREF(__pyx_v_StartCoordIndex);
+  __Pyx_XDECREF(__pyx_v_EndCoordIndex);
+  __Pyx_XDECREF(__pyx_v_LevelIndex);
+  __Pyx_XDECREF(__pyx_v_ZoneIDIndex);
+  __Pyx_XDECREF(__pyx_v_Zone);
+  __Pyx_XDECREF(__pyx_v_StartCoords);
+  __Pyx_XDECREF(__pyx_v_EndCoords);
+  __Pyx_XDECREF(__pyx_v_Coord);
+  __Pyx_XDECREF(__pyx_v_Text);
+  __Pyx_XGIVEREF(__pyx_r);
+  __Pyx_RefNannyFinishContext();
+  return __pyx_r;
+}
+/* … */
+  __pyx_tuple__75 = PyTuple_Pack(14, __pyx_n_s_Message, __pyx_n_s_RawZoneList, __pyx_n_s_ZoneList, __pyx_n_s_Columns, __pyx_n_s_StartCoordIndex, __pyx_n_s_EndCoordIndex, __pyx_n_s_LevelIndex, __pyx_n_s_ZoneIDIndex, __pyx_n_s_Zone, __pyx_n_s_StartCoords, __pyx_n_s_EndCoords, __pyx_n_s_Coord, __pyx_n_s_Text, __pyx_n_s_Colour); if (unlikely(!__pyx_tuple__75)) __PYX_ERR(0, 229, __pyx_L1_error)
+  __Pyx_GOTREF(__pyx_tuple__75);
+  __Pyx_GIVEREF(__pyx_tuple__75);
+/* … */
+  __pyx_t_3 = PyCFunction_NewEx(&__pyx_mdef_6CAStar_19AATC_Monitor_Viewer_13MakeZoneSprites, NULL, __pyx_n_s_CAStar_AATC_Monitor_Viewer); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 229, __pyx_L1_error)
+  __Pyx_GOTREF(__pyx_t_3);
+  if (PyDict_SetItem(__pyx_d, __pyx_n_s_MakeZoneSprites, __pyx_t_3) < 0) __PYX_ERR(0, 229, __pyx_L1_error)
+  __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
+  __pyx_codeobj__76 = (PyObject*)__Pyx_PyCode_New(2, 0, 14, 0, 0, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__75, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_AATC_Monitor_Viewer_pyx, __pyx_n_s_MakeZoneSprites, 229, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__76)) __PYX_ERR(0, 229, __pyx_L1_error)
+
+230:     ZoneList = []
+
  __pyx_t_1 = PyList_New(0); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 230, __pyx_L1_error)
+  __Pyx_GOTREF(__pyx_t_1);
+  __pyx_v_ZoneList = ((PyObject*)__pyx_t_1);
+  __pyx_t_1 = 0;
+
+231:     Columns = ast.literal_eval(Message)
+
  __pyx_t_2 = __Pyx_GetModuleGlobalName(__pyx_n_s_ast); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 231, __pyx_L1_error)
+  __Pyx_GOTREF(__pyx_t_2);
+  __pyx_t_3 = __Pyx_PyObject_GetAttrStr(__pyx_t_2, __pyx_n_s_literal_eval); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 231, __pyx_L1_error)
+  __Pyx_GOTREF(__pyx_t_3);
+  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
+  __pyx_t_2 = NULL;
+  if (CYTHON_UNPACK_METHODS && unlikely(PyMethod_Check(__pyx_t_3))) {
+    __pyx_t_2 = PyMethod_GET_SELF(__pyx_t_3);
+    if (likely(__pyx_t_2)) {
+      PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_3);
+      __Pyx_INCREF(__pyx_t_2);
+      __Pyx_INCREF(function);
+      __Pyx_DECREF_SET(__pyx_t_3, function);
+    }
+  }
+  if (!__pyx_t_2) {
+    __pyx_t_1 = __Pyx_PyObject_CallOneArg(__pyx_t_3, __pyx_v_Message); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 231, __pyx_L1_error)
+    __Pyx_GOTREF(__pyx_t_1);
+  } else {
+    #if CYTHON_FAST_PYCALL
+    if (PyFunction_Check(__pyx_t_3)) {
+      PyObject *__pyx_temp[2] = {__pyx_t_2, __pyx_v_Message};
+      __pyx_t_1 = __Pyx_PyFunction_FastCall(__pyx_t_3, __pyx_temp+1-1, 1+1); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 231, __pyx_L1_error)
+      __Pyx_XDECREF(__pyx_t_2); __pyx_t_2 = 0;
+      __Pyx_GOTREF(__pyx_t_1);
+    } else
+    #endif
+    #if CYTHON_FAST_PYCCALL
+    if (__Pyx_PyFastCFunction_Check(__pyx_t_3)) {
+      PyObject *__pyx_temp[2] = {__pyx_t_2, __pyx_v_Message};
+      __pyx_t_1 = __Pyx_PyCFunction_FastCall(__pyx_t_3, __pyx_temp+1-1, 1+1); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 231, __pyx_L1_error)
+      __Pyx_XDECREF(__pyx_t_2); __pyx_t_2 = 0;
+      __Pyx_GOTREF(__pyx_t_1);
+    } else
+    #endif
+    {
+      __pyx_t_4 = PyTuple_New(1+1); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 231, __pyx_L1_error)
+      __Pyx_GOTREF(__pyx_t_4);
+      __Pyx_GIVEREF(__pyx_t_2); PyTuple_SET_ITEM(__pyx_t_4, 0, __pyx_t_2); __pyx_t_2 = NULL;
+      __Pyx_INCREF(__pyx_v_Message);
+      __Pyx_GIVEREF(__pyx_v_Message);
+      PyTuple_SET_ITEM(__pyx_t_4, 0+1, __pyx_v_Message);
+      __pyx_t_1 = __Pyx_PyObject_Call(__pyx_t_3, __pyx_t_4, NULL); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 231, __pyx_L1_error)
+      __Pyx_GOTREF(__pyx_t_1);
+      __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
+    }
+  }
+  __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
+  __pyx_v_Columns = __pyx_t_1;
+  __pyx_t_1 = 0;
+
+232:     StartCoordIndex = Columns.index("StartCoord")
+
  __pyx_t_1 = __Pyx_PyObject_GetAttrStr(__pyx_v_Columns, __pyx_n_s_index); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 232, __pyx_L1_error)
+  __Pyx_GOTREF(__pyx_t_1);
+  __pyx_t_3 = __Pyx_PyObject_Call(__pyx_t_1, __pyx_tuple__23, NULL); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 232, __pyx_L1_error)
+  __Pyx_GOTREF(__pyx_t_3);
+  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
+  __pyx_v_StartCoordIndex = __pyx_t_3;
+  __pyx_t_3 = 0;
+/* … */
+  __pyx_tuple__23 = PyTuple_Pack(1, __pyx_n_s_StartCoord); if (unlikely(!__pyx_tuple__23)) __PYX_ERR(0, 232, __pyx_L1_error)
+  __Pyx_GOTREF(__pyx_tuple__23);
+  __Pyx_GIVEREF(__pyx_tuple__23);
+
+233:     EndCoordIndex = Columns.index("EndCoord")
+
  __pyx_t_3 = __Pyx_PyObject_GetAttrStr(__pyx_v_Columns, __pyx_n_s_index); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 233, __pyx_L1_error)
+  __Pyx_GOTREF(__pyx_t_3);
+  __pyx_t_1 = __Pyx_PyObject_Call(__pyx_t_3, __pyx_tuple__24, NULL); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 233, __pyx_L1_error)
+  __Pyx_GOTREF(__pyx_t_1);
+  __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
+  __pyx_v_EndCoordIndex = __pyx_t_1;
+  __pyx_t_1 = 0;
+/* … */
+  __pyx_tuple__24 = PyTuple_Pack(1, __pyx_n_s_EndCoord); if (unlikely(!__pyx_tuple__24)) __PYX_ERR(0, 233, __pyx_L1_error)
+  __Pyx_GOTREF(__pyx_tuple__24);
+  __Pyx_GIVEREF(__pyx_tuple__24);
+
+234:     LevelIndex = Columns.index("Level")
+
  __pyx_t_1 = __Pyx_PyObject_GetAttrStr(__pyx_v_Columns, __pyx_n_s_index); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 234, __pyx_L1_error)
+  __Pyx_GOTREF(__pyx_t_1);
+  __pyx_t_3 = __Pyx_PyObject_Call(__pyx_t_1, __pyx_tuple__25, NULL); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 234, __pyx_L1_error)
+  __Pyx_GOTREF(__pyx_t_3);
+  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
+  __pyx_v_LevelIndex = __pyx_t_3;
+  __pyx_t_3 = 0;
+/* … */
+  __pyx_tuple__25 = PyTuple_Pack(1, __pyx_n_s_Level); if (unlikely(!__pyx_tuple__25)) __PYX_ERR(0, 234, __pyx_L1_error)
+  __Pyx_GOTREF(__pyx_tuple__25);
+  __Pyx_GIVEREF(__pyx_tuple__25);
+
+235:     ZoneIDIndex = Columns.index("ZoneID")
+
  __pyx_t_3 = __Pyx_PyObject_GetAttrStr(__pyx_v_Columns, __pyx_n_s_index); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 235, __pyx_L1_error)
+  __Pyx_GOTREF(__pyx_t_3);
+  __pyx_t_1 = __Pyx_PyObject_Call(__pyx_t_3, __pyx_tuple__26, NULL); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 235, __pyx_L1_error)
+  __Pyx_GOTREF(__pyx_t_1);
+  __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
+  __pyx_v_ZoneIDIndex = __pyx_t_1;
+  __pyx_t_1 = 0;
+/* … */
+  __pyx_tuple__26 = PyTuple_Pack(1, __pyx_n_s_ZoneID); if (unlikely(!__pyx_tuple__26)) __PYX_ERR(0, 235, __pyx_L1_error)
+  __Pyx_GOTREF(__pyx_tuple__26);
+  __Pyx_GIVEREF(__pyx_tuple__26);
+
+236:     for Zone in RawZoneList:
+
  if (likely(PyList_CheckExact(__pyx_v_RawZoneList)) || PyTuple_CheckExact(__pyx_v_RawZoneList)) {
+    __pyx_t_1 = __pyx_v_RawZoneList; __Pyx_INCREF(__pyx_t_1); __pyx_t_5 = 0;
+    __pyx_t_6 = NULL;
+  } else {
+    __pyx_t_5 = -1; __pyx_t_1 = PyObject_GetIter(__pyx_v_RawZoneList); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 236, __pyx_L1_error)
+    __Pyx_GOTREF(__pyx_t_1);
+    __pyx_t_6 = Py_TYPE(__pyx_t_1)->tp_iternext; if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 236, __pyx_L1_error)
+  }
+  for (;;) {
+    if (likely(!__pyx_t_6)) {
+      if (likely(PyList_CheckExact(__pyx_t_1))) {
+        if (__pyx_t_5 >= PyList_GET_SIZE(__pyx_t_1)) break;
+        #if CYTHON_ASSUME_SAFE_MACROS && !CYTHON_AVOID_BORROWED_REFS
+        __pyx_t_3 = PyList_GET_ITEM(__pyx_t_1, __pyx_t_5); __Pyx_INCREF(__pyx_t_3); __pyx_t_5++; if (unlikely(0 < 0)) __PYX_ERR(0, 236, __pyx_L1_error)
+        #else
+        __pyx_t_3 = PySequence_ITEM(__pyx_t_1, __pyx_t_5); __pyx_t_5++; if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 236, __pyx_L1_error)
+        __Pyx_GOTREF(__pyx_t_3);
+        #endif
+      } else {
+        if (__pyx_t_5 >= PyTuple_GET_SIZE(__pyx_t_1)) break;
+        #if CYTHON_ASSUME_SAFE_MACROS && !CYTHON_AVOID_BORROWED_REFS
+        __pyx_t_3 = PyTuple_GET_ITEM(__pyx_t_1, __pyx_t_5); __Pyx_INCREF(__pyx_t_3); __pyx_t_5++; if (unlikely(0 < 0)) __PYX_ERR(0, 236, __pyx_L1_error)
+        #else
+        __pyx_t_3 = PySequence_ITEM(__pyx_t_1, __pyx_t_5); __pyx_t_5++; if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 236, __pyx_L1_error)
+        __Pyx_GOTREF(__pyx_t_3);
+        #endif
+      }
+    } else {
+      __pyx_t_3 = __pyx_t_6(__pyx_t_1);
+      if (unlikely(!__pyx_t_3)) {
+        PyObject* exc_type = PyErr_Occurred();
+        if (exc_type) {
+          if (likely(exc_type == PyExc_StopIteration || PyErr_GivenExceptionMatches(exc_type, PyExc_StopIteration))) PyErr_Clear();
+          else __PYX_ERR(0, 236, __pyx_L1_error)
+        }
+        break;
+      }
+      __Pyx_GOTREF(__pyx_t_3);
+    }
+    __Pyx_XDECREF_SET(__pyx_v_Zone, __pyx_t_3);
+    __pyx_t_3 = 0;
+/* … */
+  }
+  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
+
+237:         StartCoords = ast.literal_eval(Zone[StartCoordIndex])
+
    __pyx_t_4 = __Pyx_GetModuleGlobalName(__pyx_n_s_ast); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 237, __pyx_L1_error)
+    __Pyx_GOTREF(__pyx_t_4);
+    __pyx_t_2 = __Pyx_PyObject_GetAttrStr(__pyx_t_4, __pyx_n_s_literal_eval); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 237, __pyx_L1_error)
+    __Pyx_GOTREF(__pyx_t_2);
+    __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
+    __pyx_t_4 = PyObject_GetItem(__pyx_v_Zone, __pyx_v_StartCoordIndex); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 237, __pyx_L1_error)
+    __Pyx_GOTREF(__pyx_t_4);
+    __pyx_t_7 = NULL;
+    if (CYTHON_UNPACK_METHODS && unlikely(PyMethod_Check(__pyx_t_2))) {
+      __pyx_t_7 = PyMethod_GET_SELF(__pyx_t_2);
+      if (likely(__pyx_t_7)) {
+        PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_2);
+        __Pyx_INCREF(__pyx_t_7);
+        __Pyx_INCREF(function);
+        __Pyx_DECREF_SET(__pyx_t_2, function);
+      }
+    }
+    if (!__pyx_t_7) {
+      __pyx_t_3 = __Pyx_PyObject_CallOneArg(__pyx_t_2, __pyx_t_4); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 237, __pyx_L1_error)
+      __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
+      __Pyx_GOTREF(__pyx_t_3);
+    } else {
+      #if CYTHON_FAST_PYCALL
+      if (PyFunction_Check(__pyx_t_2)) {
+        PyObject *__pyx_temp[2] = {__pyx_t_7, __pyx_t_4};
+        __pyx_t_3 = __Pyx_PyFunction_FastCall(__pyx_t_2, __pyx_temp+1-1, 1+1); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 237, __pyx_L1_error)
+        __Pyx_XDECREF(__pyx_t_7); __pyx_t_7 = 0;
+        __Pyx_GOTREF(__pyx_t_3);
+        __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
+      } else
+      #endif
+      #if CYTHON_FAST_PYCCALL
+      if (__Pyx_PyFastCFunction_Check(__pyx_t_2)) {
+        PyObject *__pyx_temp[2] = {__pyx_t_7, __pyx_t_4};
+        __pyx_t_3 = __Pyx_PyCFunction_FastCall(__pyx_t_2, __pyx_temp+1-1, 1+1); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 237, __pyx_L1_error)
+        __Pyx_XDECREF(__pyx_t_7); __pyx_t_7 = 0;
+        __Pyx_GOTREF(__pyx_t_3);
+        __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
+      } else
+      #endif
+      {
+        __pyx_t_8 = PyTuple_New(1+1); if (unlikely(!__pyx_t_8)) __PYX_ERR(0, 237, __pyx_L1_error)
+        __Pyx_GOTREF(__pyx_t_8);
+        __Pyx_GIVEREF(__pyx_t_7); PyTuple_SET_ITEM(__pyx_t_8, 0, __pyx_t_7); __pyx_t_7 = NULL;
+        __Pyx_GIVEREF(__pyx_t_4);
+        PyTuple_SET_ITEM(__pyx_t_8, 0+1, __pyx_t_4);
+        __pyx_t_4 = 0;
+        __pyx_t_3 = __Pyx_PyObject_Call(__pyx_t_2, __pyx_t_8, NULL); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 237, __pyx_L1_error)
+        __Pyx_GOTREF(__pyx_t_3);
+        __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0;
+      }
+    }
+    __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
+    __Pyx_XDECREF_SET(__pyx_v_StartCoords, __pyx_t_3);
+    __pyx_t_3 = 0;
+
+238:         EndCoords = ast.literal_eval(Zone[EndCoordIndex])
+
    __pyx_t_2 = __Pyx_GetModuleGlobalName(__pyx_n_s_ast); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 238, __pyx_L1_error)
+    __Pyx_GOTREF(__pyx_t_2);
+    __pyx_t_8 = __Pyx_PyObject_GetAttrStr(__pyx_t_2, __pyx_n_s_literal_eval); if (unlikely(!__pyx_t_8)) __PYX_ERR(0, 238, __pyx_L1_error)
+    __Pyx_GOTREF(__pyx_t_8);
+    __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
+    __pyx_t_2 = PyObject_GetItem(__pyx_v_Zone, __pyx_v_EndCoordIndex); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 238, __pyx_L1_error)
+    __Pyx_GOTREF(__pyx_t_2);
+    __pyx_t_4 = NULL;
+    if (CYTHON_UNPACK_METHODS && unlikely(PyMethod_Check(__pyx_t_8))) {
+      __pyx_t_4 = PyMethod_GET_SELF(__pyx_t_8);
+      if (likely(__pyx_t_4)) {
+        PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_8);
+        __Pyx_INCREF(__pyx_t_4);
+        __Pyx_INCREF(function);
+        __Pyx_DECREF_SET(__pyx_t_8, function);
+      }
+    }
+    if (!__pyx_t_4) {
+      __pyx_t_3 = __Pyx_PyObject_CallOneArg(__pyx_t_8, __pyx_t_2); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 238, __pyx_L1_error)
+      __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
+      __Pyx_GOTREF(__pyx_t_3);
+    } else {
+      #if CYTHON_FAST_PYCALL
+      if (PyFunction_Check(__pyx_t_8)) {
+        PyObject *__pyx_temp[2] = {__pyx_t_4, __pyx_t_2};
+        __pyx_t_3 = __Pyx_PyFunction_FastCall(__pyx_t_8, __pyx_temp+1-1, 1+1); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 238, __pyx_L1_error)
+        __Pyx_XDECREF(__pyx_t_4); __pyx_t_4 = 0;
+        __Pyx_GOTREF(__pyx_t_3);
+        __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
+      } else
+      #endif
+      #if CYTHON_FAST_PYCCALL
+      if (__Pyx_PyFastCFunction_Check(__pyx_t_8)) {
+        PyObject *__pyx_temp[2] = {__pyx_t_4, __pyx_t_2};
+        __pyx_t_3 = __Pyx_PyCFunction_FastCall(__pyx_t_8, __pyx_temp+1-1, 1+1); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 238, __pyx_L1_error)
+        __Pyx_XDECREF(__pyx_t_4); __pyx_t_4 = 0;
+        __Pyx_GOTREF(__pyx_t_3);
+        __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
+      } else
+      #endif
+      {
+        __pyx_t_7 = PyTuple_New(1+1); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 238, __pyx_L1_error)
+        __Pyx_GOTREF(__pyx_t_7);
+        __Pyx_GIVEREF(__pyx_t_4); PyTuple_SET_ITEM(__pyx_t_7, 0, __pyx_t_4); __pyx_t_4 = NULL;
+        __Pyx_GIVEREF(__pyx_t_2);
+        PyTuple_SET_ITEM(__pyx_t_7, 0+1, __pyx_t_2);
+        __pyx_t_2 = 0;
+        __pyx_t_3 = __Pyx_PyObject_Call(__pyx_t_8, __pyx_t_7, NULL); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 238, __pyx_L1_error)
+        __Pyx_GOTREF(__pyx_t_3);
+        __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
+      }
+    }
+    __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0;
+    __Pyx_XDECREF_SET(__pyx_v_EndCoords, __pyx_t_3);
+    __pyx_t_3 = 0;
+
+239:         Coord = AATC_Coordinate.Coordinate(StartCoords[0],StartCoords[1],StartCoords[2],EndCoords[0]-StartCoords[0],EndCoords[1]-StartCoords[1],EndCoords[2]-StartCoords[2])
+
    __pyx_t_8 = __Pyx_GetModuleGlobalName(__pyx_n_s_AATC_Coordinate); if (unlikely(!__pyx_t_8)) __PYX_ERR(0, 239, __pyx_L1_error)
+    __Pyx_GOTREF(__pyx_t_8);
+    __pyx_t_7 = __Pyx_PyObject_GetAttrStr(__pyx_t_8, __pyx_n_s_Coordinate); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 239, __pyx_L1_error)
+    __Pyx_GOTREF(__pyx_t_7);
+    __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0;
+    __pyx_t_8 = __Pyx_GetItemInt(__pyx_v_StartCoords, 0, long, 1, __Pyx_PyInt_From_long, 0, 0, 0); if (unlikely(!__pyx_t_8)) __PYX_ERR(0, 239, __pyx_L1_error)
+    __Pyx_GOTREF(__pyx_t_8);
+    __pyx_t_2 = __Pyx_GetItemInt(__pyx_v_StartCoords, 1, long, 1, __Pyx_PyInt_From_long, 0, 0, 0); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 239, __pyx_L1_error)
+    __Pyx_GOTREF(__pyx_t_2);
+    __pyx_t_4 = __Pyx_GetItemInt(__pyx_v_StartCoords, 2, long, 1, __Pyx_PyInt_From_long, 0, 0, 0); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 239, __pyx_L1_error)
+    __Pyx_GOTREF(__pyx_t_4);
+    __pyx_t_9 = __Pyx_GetItemInt(__pyx_v_EndCoords, 0, long, 1, __Pyx_PyInt_From_long, 0, 0, 0); if (unlikely(!__pyx_t_9)) __PYX_ERR(0, 239, __pyx_L1_error)
+    __Pyx_GOTREF(__pyx_t_9);
+    __pyx_t_10 = __Pyx_GetItemInt(__pyx_v_StartCoords, 0, long, 1, __Pyx_PyInt_From_long, 0, 0, 0); if (unlikely(!__pyx_t_10)) __PYX_ERR(0, 239, __pyx_L1_error)
+    __Pyx_GOTREF(__pyx_t_10);
+    __pyx_t_11 = PyNumber_Subtract(__pyx_t_9, __pyx_t_10); if (unlikely(!__pyx_t_11)) __PYX_ERR(0, 239, __pyx_L1_error)
+    __Pyx_GOTREF(__pyx_t_11);
+    __Pyx_DECREF(__pyx_t_9); __pyx_t_9 = 0;
+    __Pyx_DECREF(__pyx_t_10); __pyx_t_10 = 0;
+    __pyx_t_10 = __Pyx_GetItemInt(__pyx_v_EndCoords, 1, long, 1, __Pyx_PyInt_From_long, 0, 0, 0); if (unlikely(!__pyx_t_10)) __PYX_ERR(0, 239, __pyx_L1_error)
+    __Pyx_GOTREF(__pyx_t_10);
+    __pyx_t_9 = __Pyx_GetItemInt(__pyx_v_StartCoords, 1, long, 1, __Pyx_PyInt_From_long, 0, 0, 0); if (unlikely(!__pyx_t_9)) __PYX_ERR(0, 239, __pyx_L1_error)
+    __Pyx_GOTREF(__pyx_t_9);
+    __pyx_t_12 = PyNumber_Subtract(__pyx_t_10, __pyx_t_9); if (unlikely(!__pyx_t_12)) __PYX_ERR(0, 239, __pyx_L1_error)
+    __Pyx_GOTREF(__pyx_t_12);
+    __Pyx_DECREF(__pyx_t_10); __pyx_t_10 = 0;
+    __Pyx_DECREF(__pyx_t_9); __pyx_t_9 = 0;
+    __pyx_t_9 = __Pyx_GetItemInt(__pyx_v_EndCoords, 2, long, 1, __Pyx_PyInt_From_long, 0, 0, 0); if (unlikely(!__pyx_t_9)) __PYX_ERR(0, 239, __pyx_L1_error)
+    __Pyx_GOTREF(__pyx_t_9);
+    __pyx_t_10 = __Pyx_GetItemInt(__pyx_v_StartCoords, 2, long, 1, __Pyx_PyInt_From_long, 0, 0, 0); if (unlikely(!__pyx_t_10)) __PYX_ERR(0, 239, __pyx_L1_error)
+    __Pyx_GOTREF(__pyx_t_10);
+    __pyx_t_13 = PyNumber_Subtract(__pyx_t_9, __pyx_t_10); if (unlikely(!__pyx_t_13)) __PYX_ERR(0, 239, __pyx_L1_error)
+    __Pyx_GOTREF(__pyx_t_13);
+    __Pyx_DECREF(__pyx_t_9); __pyx_t_9 = 0;
+    __Pyx_DECREF(__pyx_t_10); __pyx_t_10 = 0;
+    __pyx_t_10 = NULL;
+    __pyx_t_14 = 0;
+    if (CYTHON_UNPACK_METHODS && unlikely(PyMethod_Check(__pyx_t_7))) {
+      __pyx_t_10 = PyMethod_GET_SELF(__pyx_t_7);
+      if (likely(__pyx_t_10)) {
+        PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_7);
+        __Pyx_INCREF(__pyx_t_10);
+        __Pyx_INCREF(function);
+        __Pyx_DECREF_SET(__pyx_t_7, function);
+        __pyx_t_14 = 1;
+      }
+    }
+    #if CYTHON_FAST_PYCALL
+    if (PyFunction_Check(__pyx_t_7)) {
+      PyObject *__pyx_temp[7] = {__pyx_t_10, __pyx_t_8, __pyx_t_2, __pyx_t_4, __pyx_t_11, __pyx_t_12, __pyx_t_13};
+      __pyx_t_3 = __Pyx_PyFunction_FastCall(__pyx_t_7, __pyx_temp+1-__pyx_t_14, 6+__pyx_t_14); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 239, __pyx_L1_error)
+      __Pyx_XDECREF(__pyx_t_10); __pyx_t_10 = 0;
+      __Pyx_GOTREF(__pyx_t_3);
+      __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0;
+      __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
+      __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
+      __Pyx_DECREF(__pyx_t_11); __pyx_t_11 = 0;
+      __Pyx_DECREF(__pyx_t_12); __pyx_t_12 = 0;
+      __Pyx_DECREF(__pyx_t_13); __pyx_t_13 = 0;
+    } else
+    #endif
+    #if CYTHON_FAST_PYCCALL
+    if (__Pyx_PyFastCFunction_Check(__pyx_t_7)) {
+      PyObject *__pyx_temp[7] = {__pyx_t_10, __pyx_t_8, __pyx_t_2, __pyx_t_4, __pyx_t_11, __pyx_t_12, __pyx_t_13};
+      __pyx_t_3 = __Pyx_PyCFunction_FastCall(__pyx_t_7, __pyx_temp+1-__pyx_t_14, 6+__pyx_t_14); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 239, __pyx_L1_error)
+      __Pyx_XDECREF(__pyx_t_10); __pyx_t_10 = 0;
+      __Pyx_GOTREF(__pyx_t_3);
+      __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0;
+      __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
+      __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
+      __Pyx_DECREF(__pyx_t_11); __pyx_t_11 = 0;
+      __Pyx_DECREF(__pyx_t_12); __pyx_t_12 = 0;
+      __Pyx_DECREF(__pyx_t_13); __pyx_t_13 = 0;
+    } else
+    #endif
+    {
+      __pyx_t_9 = PyTuple_New(6+__pyx_t_14); if (unlikely(!__pyx_t_9)) __PYX_ERR(0, 239, __pyx_L1_error)
+      __Pyx_GOTREF(__pyx_t_9);
+      if (__pyx_t_10) {
+        __Pyx_GIVEREF(__pyx_t_10); PyTuple_SET_ITEM(__pyx_t_9, 0, __pyx_t_10); __pyx_t_10 = NULL;
+      }
+      __Pyx_GIVEREF(__pyx_t_8);
+      PyTuple_SET_ITEM(__pyx_t_9, 0+__pyx_t_14, __pyx_t_8);
+      __Pyx_GIVEREF(__pyx_t_2);
+      PyTuple_SET_ITEM(__pyx_t_9, 1+__pyx_t_14, __pyx_t_2);
+      __Pyx_GIVEREF(__pyx_t_4);
+      PyTuple_SET_ITEM(__pyx_t_9, 2+__pyx_t_14, __pyx_t_4);
+      __Pyx_GIVEREF(__pyx_t_11);
+      PyTuple_SET_ITEM(__pyx_t_9, 3+__pyx_t_14, __pyx_t_11);
+      __Pyx_GIVEREF(__pyx_t_12);
+      PyTuple_SET_ITEM(__pyx_t_9, 4+__pyx_t_14, __pyx_t_12);
+      __Pyx_GIVEREF(__pyx_t_13);
+      PyTuple_SET_ITEM(__pyx_t_9, 5+__pyx_t_14, __pyx_t_13);
+      __pyx_t_8 = 0;
+      __pyx_t_2 = 0;
+      __pyx_t_4 = 0;
+      __pyx_t_11 = 0;
+      __pyx_t_12 = 0;
+      __pyx_t_13 = 0;
+      __pyx_t_3 = __Pyx_PyObject_Call(__pyx_t_7, __pyx_t_9, NULL); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 239, __pyx_L1_error)
+      __Pyx_GOTREF(__pyx_t_3);
+      __Pyx_DECREF(__pyx_t_9); __pyx_t_9 = 0;
+    }
+    __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
+    __Pyx_XDECREF_SET(__pyx_v_Coord, __pyx_t_3);
+    __pyx_t_3 = 0;
+
+240:         Text = "Z:"+ str(Zone[ZoneIDIndex]) +" L:"+ str(Zone[LevelIndex])
+
    __pyx_t_3 = PyObject_GetItem(__pyx_v_Zone, __pyx_v_ZoneIDIndex); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 240, __pyx_L1_error)
+    __Pyx_GOTREF(__pyx_t_3);
+    __pyx_t_7 = PyTuple_New(1); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 240, __pyx_L1_error)
+    __Pyx_GOTREF(__pyx_t_7);
+    __Pyx_GIVEREF(__pyx_t_3);
+    PyTuple_SET_ITEM(__pyx_t_7, 0, __pyx_t_3);
+    __pyx_t_3 = 0;
+    __pyx_t_3 = __Pyx_PyObject_Call(((PyObject *)(&PyString_Type)), __pyx_t_7, NULL); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 240, __pyx_L1_error)
+    __Pyx_GOTREF(__pyx_t_3);
+    __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
+    __pyx_t_7 = PyNumber_Add(__pyx_kp_s_Z, __pyx_t_3); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 240, __pyx_L1_error)
+    __Pyx_GOTREF(__pyx_t_7);
+    __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
+    __pyx_t_3 = PyNumber_Add(__pyx_t_7, __pyx_kp_s_L); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 240, __pyx_L1_error)
+    __Pyx_GOTREF(__pyx_t_3);
+    __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
+    __pyx_t_7 = PyObject_GetItem(__pyx_v_Zone, __pyx_v_LevelIndex); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 240, __pyx_L1_error)
+    __Pyx_GOTREF(__pyx_t_7);
+    __pyx_t_9 = PyTuple_New(1); if (unlikely(!__pyx_t_9)) __PYX_ERR(0, 240, __pyx_L1_error)
+    __Pyx_GOTREF(__pyx_t_9);
+    __Pyx_GIVEREF(__pyx_t_7);
+    PyTuple_SET_ITEM(__pyx_t_9, 0, __pyx_t_7);
+    __pyx_t_7 = 0;
+    __pyx_t_7 = __Pyx_PyObject_Call(((PyObject *)(&PyString_Type)), __pyx_t_9, NULL); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 240, __pyx_L1_error)
+    __Pyx_GOTREF(__pyx_t_7);
+    __Pyx_DECREF(__pyx_t_9); __pyx_t_9 = 0;
+    __pyx_t_9 = PyNumber_Add(__pyx_t_3, __pyx_t_7); if (unlikely(!__pyx_t_9)) __PYX_ERR(0, 240, __pyx_L1_error)
+    __Pyx_GOTREF(__pyx_t_9);
+    __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
+    __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
+    __Pyx_XDECREF_SET(__pyx_v_Text, __pyx_t_9);
+    __pyx_t_9 = 0;
+
+241:         Colour = (100,100,100)
+
    __pyx_t_15.f0 = 0x64;
+    __pyx_t_15.f1 = 0x64;
+    __pyx_t_15.f2 = 0x64;
+    __pyx_v_Colour = __pyx_t_15;
+
+242:         ZoneList.append(Monitor_Sprite(Coord,"NoFlyZone",Text,Colour))
+
    __pyx_t_7 = __Pyx_GetModuleGlobalName(__pyx_n_s_Monitor_Sprite); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 242, __pyx_L1_error)
+    __Pyx_GOTREF(__pyx_t_7);
+    __pyx_t_3 = __pyx_convert__to_py___pyx_ctuple_long__and_long__and_long(__pyx_v_Colour); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 242, __pyx_L1_error)
+    __Pyx_GOTREF(__pyx_t_3);
+    __pyx_t_13 = NULL;
+    __pyx_t_14 = 0;
+    if (CYTHON_UNPACK_METHODS && unlikely(PyMethod_Check(__pyx_t_7))) {
+      __pyx_t_13 = PyMethod_GET_SELF(__pyx_t_7);
+      if (likely(__pyx_t_13)) {
+        PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_7);
+        __Pyx_INCREF(__pyx_t_13);
+        __Pyx_INCREF(function);
+        __Pyx_DECREF_SET(__pyx_t_7, function);
+        __pyx_t_14 = 1;
+      }
+    }
+    #if CYTHON_FAST_PYCALL
+    if (PyFunction_Check(__pyx_t_7)) {
+      PyObject *__pyx_temp[5] = {__pyx_t_13, __pyx_v_Coord, __pyx_n_s_NoFlyZone, __pyx_v_Text, __pyx_t_3};
+      __pyx_t_9 = __Pyx_PyFunction_FastCall(__pyx_t_7, __pyx_temp+1-__pyx_t_14, 4+__pyx_t_14); if (unlikely(!__pyx_t_9)) __PYX_ERR(0, 242, __pyx_L1_error)
+      __Pyx_XDECREF(__pyx_t_13); __pyx_t_13 = 0;
+      __Pyx_GOTREF(__pyx_t_9);
+      __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
+    } else
+    #endif
+    #if CYTHON_FAST_PYCCALL
+    if (__Pyx_PyFastCFunction_Check(__pyx_t_7)) {
+      PyObject *__pyx_temp[5] = {__pyx_t_13, __pyx_v_Coord, __pyx_n_s_NoFlyZone, __pyx_v_Text, __pyx_t_3};
+      __pyx_t_9 = __Pyx_PyCFunction_FastCall(__pyx_t_7, __pyx_temp+1-__pyx_t_14, 4+__pyx_t_14); if (unlikely(!__pyx_t_9)) __PYX_ERR(0, 242, __pyx_L1_error)
+      __Pyx_XDECREF(__pyx_t_13); __pyx_t_13 = 0;
+      __Pyx_GOTREF(__pyx_t_9);
+      __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
+    } else
+    #endif
+    {
+      __pyx_t_12 = PyTuple_New(4+__pyx_t_14); if (unlikely(!__pyx_t_12)) __PYX_ERR(0, 242, __pyx_L1_error)
+      __Pyx_GOTREF(__pyx_t_12);
+      if (__pyx_t_13) {
+        __Pyx_GIVEREF(__pyx_t_13); PyTuple_SET_ITEM(__pyx_t_12, 0, __pyx_t_13); __pyx_t_13 = NULL;
+      }
+      __Pyx_INCREF(__pyx_v_Coord);
+      __Pyx_GIVEREF(__pyx_v_Coord);
+      PyTuple_SET_ITEM(__pyx_t_12, 0+__pyx_t_14, __pyx_v_Coord);
+      __Pyx_INCREF(__pyx_n_s_NoFlyZone);
+      __Pyx_GIVEREF(__pyx_n_s_NoFlyZone);
+      PyTuple_SET_ITEM(__pyx_t_12, 1+__pyx_t_14, __pyx_n_s_NoFlyZone);
+      __Pyx_INCREF(__pyx_v_Text);
+      __Pyx_GIVEREF(__pyx_v_Text);
+      PyTuple_SET_ITEM(__pyx_t_12, 2+__pyx_t_14, __pyx_v_Text);
+      __Pyx_GIVEREF(__pyx_t_3);
+      PyTuple_SET_ITEM(__pyx_t_12, 3+__pyx_t_14, __pyx_t_3);
+      __pyx_t_3 = 0;
+      __pyx_t_9 = __Pyx_PyObject_Call(__pyx_t_7, __pyx_t_12, NULL); if (unlikely(!__pyx_t_9)) __PYX_ERR(0, 242, __pyx_L1_error)
+      __Pyx_GOTREF(__pyx_t_9);
+      __Pyx_DECREF(__pyx_t_12); __pyx_t_12 = 0;
+    }
+    __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
+    __pyx_t_16 = __Pyx_PyList_Append(__pyx_v_ZoneList, __pyx_t_9); if (unlikely(__pyx_t_16 == -1)) __PYX_ERR(0, 242, __pyx_L1_error)
+    __Pyx_DECREF(__pyx_t_9); __pyx_t_9 = 0;
+
+243:     return ZoneList
+
  __Pyx_XDECREF(__pyx_r);
+  __Pyx_INCREF(__pyx_v_ZoneList);
+  __pyx_r = __pyx_v_ZoneList;
+  goto __pyx_L0;
+
 244: 
+
+245: def MakeSprites(M):
+
/* Python wrapper */
+static PyObject *__pyx_pw_6CAStar_19AATC_Monitor_Viewer_15MakeSprites(PyObject *__pyx_self, PyObject *__pyx_v_M); /*proto*/
+static PyMethodDef __pyx_mdef_6CAStar_19AATC_Monitor_Viewer_15MakeSprites = {"MakeSprites", (PyCFunction)__pyx_pw_6CAStar_19AATC_Monitor_Viewer_15MakeSprites, METH_O, 0};
+static PyObject *__pyx_pw_6CAStar_19AATC_Monitor_Viewer_15MakeSprites(PyObject *__pyx_self, PyObject *__pyx_v_M) {
+  PyObject *__pyx_r = 0;
+  __Pyx_RefNannyDeclarations
+  __Pyx_RefNannySetupContext("MakeSprites (wrapper)", 0);
+  __pyx_r = __pyx_pf_6CAStar_19AATC_Monitor_Viewer_14MakeSprites(__pyx_self, ((PyObject *)__pyx_v_M));
+
+  /* function exit code */
+  __Pyx_RefNannyFinishContext();
+  return __pyx_r;
+}
+
+static PyObject *__pyx_pf_6CAStar_19AATC_Monitor_Viewer_14MakeSprites(CYTHON_UNUSED PyObject *__pyx_self, PyObject *__pyx_v_M) {
+  PyObject *__pyx_v_SpriteList = NULL;
+  PyObject *__pyx_v_Sucess = NULL;
+  PyObject *__pyx_v_Message = NULL;
+  PyObject *__pyx_v_DronesAll = NULL;
+  PyObject *__pyx_v_DronesMonitor = NULL;
+  PyObject *__pyx_v_FlightsAll = NULL;
+  PyObject *__pyx_v_FlightsMonitor = NULL;
+  PyObject *__pyx_v_WaypointsAll = NULL;
+  PyObject *__pyx_v_WaypointsMonitor = NULL;
+  PyObject *__pyx_v_NoFlyZones = NULL;
+  PyObject *__pyx_r = NULL;
+  __Pyx_RefNannyDeclarations
+  __Pyx_RefNannySetupContext("MakeSprites", 0);
+/* … */
+  /* function exit code */
+  __pyx_L1_error:;
+  __Pyx_XDECREF(__pyx_t_1);
+  __Pyx_XDECREF(__pyx_t_2);
+  __Pyx_XDECREF(__pyx_t_3);
+  __Pyx_XDECREF(__pyx_t_4);
+  __Pyx_XDECREF(__pyx_t_5);
+  __Pyx_AddTraceback("CAStar.AATC_Monitor_Viewer.MakeSprites", __pyx_clineno, __pyx_lineno, __pyx_filename);
+  __pyx_r = NULL;
+  __pyx_L0:;
+  __Pyx_XDECREF(__pyx_v_SpriteList);
+  __Pyx_XDECREF(__pyx_v_Sucess);
+  __Pyx_XDECREF(__pyx_v_Message);
+  __Pyx_XDECREF(__pyx_v_DronesAll);
+  __Pyx_XDECREF(__pyx_v_DronesMonitor);
+  __Pyx_XDECREF(__pyx_v_FlightsAll);
+  __Pyx_XDECREF(__pyx_v_FlightsMonitor);
+  __Pyx_XDECREF(__pyx_v_WaypointsAll);
+  __Pyx_XDECREF(__pyx_v_WaypointsMonitor);
+  __Pyx_XDECREF(__pyx_v_NoFlyZones);
+  __Pyx_XGIVEREF(__pyx_r);
+  __Pyx_RefNannyFinishContext();
+  return __pyx_r;
+}
+/* … */
+  __pyx_tuple__77 = PyTuple_Pack(11, __pyx_n_s_M, __pyx_n_s_SpriteList, __pyx_n_s_Sucess, __pyx_n_s_Message, __pyx_n_s_DronesAll, __pyx_n_s_DronesMonitor, __pyx_n_s_FlightsAll, __pyx_n_s_FlightsMonitor, __pyx_n_s_WaypointsAll, __pyx_n_s_WaypointsMonitor, __pyx_n_s_NoFlyZones); if (unlikely(!__pyx_tuple__77)) __PYX_ERR(0, 245, __pyx_L1_error)
+  __Pyx_GOTREF(__pyx_tuple__77);
+  __Pyx_GIVEREF(__pyx_tuple__77);
+/* … */
+  __pyx_t_3 = PyCFunction_NewEx(&__pyx_mdef_6CAStar_19AATC_Monitor_Viewer_15MakeSprites, NULL, __pyx_n_s_CAStar_AATC_Monitor_Viewer); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 245, __pyx_L1_error)
+  __Pyx_GOTREF(__pyx_t_3);
+  if (PyDict_SetItem(__pyx_d, __pyx_n_s_MakeSprites, __pyx_t_3) < 0) __PYX_ERR(0, 245, __pyx_L1_error)
+  __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
+  __pyx_codeobj__78 = (PyObject*)__Pyx_PyCode_New(1, 0, 11, 0, 0, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__77, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_AATC_Monitor_Viewer_pyx, __pyx_n_s_MakeSprites, 245, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__78)) __PYX_ERR(0, 245, __pyx_L1_error)
+
+246:     print("Refreshing data")
+
  if (__Pyx_PrintOne(0, __pyx_kp_s_Refreshing_data) < 0) __PYX_ERR(0, 246, __pyx_L1_error)
+
+247:     SpriteList = []
+
  __pyx_t_1 = PyList_New(0); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 247, __pyx_L1_error)
+  __Pyx_GOTREF(__pyx_t_1);
+  __pyx_v_SpriteList = __pyx_t_1;
+  __pyx_t_1 = 0;
+
+248:     Sucess,Message,DronesAll = M.GetDronesAll()
+
  __pyx_t_2 = __Pyx_PyObject_GetAttrStr(__pyx_v_M, __pyx_n_s_GetDronesAll); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 248, __pyx_L1_error)
+  __Pyx_GOTREF(__pyx_t_2);
+  __pyx_t_3 = NULL;
+  if (CYTHON_UNPACK_METHODS && likely(PyMethod_Check(__pyx_t_2))) {
+    __pyx_t_3 = PyMethod_GET_SELF(__pyx_t_2);
+    if (likely(__pyx_t_3)) {
+      PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_2);
+      __Pyx_INCREF(__pyx_t_3);
+      __Pyx_INCREF(function);
+      __Pyx_DECREF_SET(__pyx_t_2, function);
+    }
+  }
+  if (__pyx_t_3) {
+    __pyx_t_1 = __Pyx_PyObject_CallOneArg(__pyx_t_2, __pyx_t_3); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 248, __pyx_L1_error)
+    __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
+  } else {
+    __pyx_t_1 = __Pyx_PyObject_CallNoArg(__pyx_t_2); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 248, __pyx_L1_error)
+  }
+  __Pyx_GOTREF(__pyx_t_1);
+  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
+  if ((likely(PyTuple_CheckExact(__pyx_t_1))) || (PyList_CheckExact(__pyx_t_1))) {
+    PyObject* sequence = __pyx_t_1;
+    #if !CYTHON_COMPILING_IN_PYPY
+    Py_ssize_t size = Py_SIZE(sequence);
+    #else
+    Py_ssize_t size = PySequence_Size(sequence);
+    #endif
+    if (unlikely(size != 3)) {
+      if (size > 3) __Pyx_RaiseTooManyValuesError(3);
+      else if (size >= 0) __Pyx_RaiseNeedMoreValuesError(size);
+      __PYX_ERR(0, 248, __pyx_L1_error)
+    }
+    #if CYTHON_ASSUME_SAFE_MACROS && !CYTHON_AVOID_BORROWED_REFS
+    if (likely(PyTuple_CheckExact(sequence))) {
+      __pyx_t_2 = PyTuple_GET_ITEM(sequence, 0); 
+      __pyx_t_3 = PyTuple_GET_ITEM(sequence, 1); 
+      __pyx_t_4 = PyTuple_GET_ITEM(sequence, 2); 
+    } else {
+      __pyx_t_2 = PyList_GET_ITEM(sequence, 0); 
+      __pyx_t_3 = PyList_GET_ITEM(sequence, 1); 
+      __pyx_t_4 = PyList_GET_ITEM(sequence, 2); 
+    }
+    __Pyx_INCREF(__pyx_t_2);
+    __Pyx_INCREF(__pyx_t_3);
+    __Pyx_INCREF(__pyx_t_4);
+    #else
+    __pyx_t_2 = PySequence_ITEM(sequence, 0); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 248, __pyx_L1_error)
+    __Pyx_GOTREF(__pyx_t_2);
+    __pyx_t_3 = PySequence_ITEM(sequence, 1); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 248, __pyx_L1_error)
+    __Pyx_GOTREF(__pyx_t_3);
+    __pyx_t_4 = PySequence_ITEM(sequence, 2); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 248, __pyx_L1_error)
+    __Pyx_GOTREF(__pyx_t_4);
+    #endif
+    __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
+  } else {
+    Py_ssize_t index = -1;
+    __pyx_t_5 = PyObject_GetIter(__pyx_t_1); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 248, __pyx_L1_error)
+    __Pyx_GOTREF(__pyx_t_5);
+    __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
+    __pyx_t_6 = Py_TYPE(__pyx_t_5)->tp_iternext;
+    index = 0; __pyx_t_2 = __pyx_t_6(__pyx_t_5); if (unlikely(!__pyx_t_2)) goto __pyx_L3_unpacking_failed;
+    __Pyx_GOTREF(__pyx_t_2);
+    index = 1; __pyx_t_3 = __pyx_t_6(__pyx_t_5); if (unlikely(!__pyx_t_3)) goto __pyx_L3_unpacking_failed;
+    __Pyx_GOTREF(__pyx_t_3);
+    index = 2; __pyx_t_4 = __pyx_t_6(__pyx_t_5); if (unlikely(!__pyx_t_4)) goto __pyx_L3_unpacking_failed;
+    __Pyx_GOTREF(__pyx_t_4);
+    if (__Pyx_IternextUnpackEndCheck(__pyx_t_6(__pyx_t_5), 3) < 0) __PYX_ERR(0, 248, __pyx_L1_error)
+    __pyx_t_6 = NULL;
+    __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
+    goto __pyx_L4_unpacking_done;
+    __pyx_L3_unpacking_failed:;
+    __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
+    __pyx_t_6 = NULL;
+    if (__Pyx_IterFinish() == 0) __Pyx_RaiseNeedMoreValuesError(index);
+    __PYX_ERR(0, 248, __pyx_L1_error)
+    __pyx_L4_unpacking_done:;
+  }
+  __pyx_v_Sucess = __pyx_t_2;
+  __pyx_t_2 = 0;
+  __pyx_v_Message = __pyx_t_3;
+  __pyx_t_3 = 0;
+  __pyx_v_DronesAll = __pyx_t_4;
+  __pyx_t_4 = 0;
+
+249:     if Sucess:
+
  __pyx_t_7 = __Pyx_PyObject_IsTrue(__pyx_v_Sucess); if (unlikely(__pyx_t_7 < 0)) __PYX_ERR(0, 249, __pyx_L1_error)
+  if (__pyx_t_7) {
+/* … */
+  }
+
+250:         SpriteList += MakeDroneSprites(Message,DronesAll)
+
    __pyx_t_4 = __Pyx_GetModuleGlobalName(__pyx_n_s_MakeDroneSprites); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 250, __pyx_L1_error)
+    __Pyx_GOTREF(__pyx_t_4);
+    __pyx_t_3 = NULL;
+    __pyx_t_8 = 0;
+    if (CYTHON_UNPACK_METHODS && unlikely(PyMethod_Check(__pyx_t_4))) {
+      __pyx_t_3 = PyMethod_GET_SELF(__pyx_t_4);
+      if (likely(__pyx_t_3)) {
+        PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_4);
+        __Pyx_INCREF(__pyx_t_3);
+        __Pyx_INCREF(function);
+        __Pyx_DECREF_SET(__pyx_t_4, function);
+        __pyx_t_8 = 1;
+      }
+    }
+    #if CYTHON_FAST_PYCALL
+    if (PyFunction_Check(__pyx_t_4)) {
+      PyObject *__pyx_temp[3] = {__pyx_t_3, __pyx_v_Message, __pyx_v_DronesAll};
+      __pyx_t_1 = __Pyx_PyFunction_FastCall(__pyx_t_4, __pyx_temp+1-__pyx_t_8, 2+__pyx_t_8); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 250, __pyx_L1_error)
+      __Pyx_XDECREF(__pyx_t_3); __pyx_t_3 = 0;
+      __Pyx_GOTREF(__pyx_t_1);
+    } else
+    #endif
+    #if CYTHON_FAST_PYCCALL
+    if (__Pyx_PyFastCFunction_Check(__pyx_t_4)) {
+      PyObject *__pyx_temp[3] = {__pyx_t_3, __pyx_v_Message, __pyx_v_DronesAll};
+      __pyx_t_1 = __Pyx_PyCFunction_FastCall(__pyx_t_4, __pyx_temp+1-__pyx_t_8, 2+__pyx_t_8); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 250, __pyx_L1_error)
+      __Pyx_XDECREF(__pyx_t_3); __pyx_t_3 = 0;
+      __Pyx_GOTREF(__pyx_t_1);
+    } else
+    #endif
+    {
+      __pyx_t_2 = PyTuple_New(2+__pyx_t_8); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 250, __pyx_L1_error)
+      __Pyx_GOTREF(__pyx_t_2);
+      if (__pyx_t_3) {
+        __Pyx_GIVEREF(__pyx_t_3); PyTuple_SET_ITEM(__pyx_t_2, 0, __pyx_t_3); __pyx_t_3 = NULL;
+      }
+      __Pyx_INCREF(__pyx_v_Message);
+      __Pyx_GIVEREF(__pyx_v_Message);
+      PyTuple_SET_ITEM(__pyx_t_2, 0+__pyx_t_8, __pyx_v_Message);
+      __Pyx_INCREF(__pyx_v_DronesAll);
+      __Pyx_GIVEREF(__pyx_v_DronesAll);
+      PyTuple_SET_ITEM(__pyx_t_2, 1+__pyx_t_8, __pyx_v_DronesAll);
+      __pyx_t_1 = __Pyx_PyObject_Call(__pyx_t_4, __pyx_t_2, NULL); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 250, __pyx_L1_error)
+      __Pyx_GOTREF(__pyx_t_1);
+      __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
+    }
+    __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
+    __pyx_t_4 = PyNumber_InPlaceAdd(__pyx_v_SpriteList, __pyx_t_1); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 250, __pyx_L1_error)
+    __Pyx_GOTREF(__pyx_t_4);
+    __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
+    __Pyx_DECREF_SET(__pyx_v_SpriteList, __pyx_t_4);
+    __pyx_t_4 = 0;
+
 251: 
+
+252:     Sucess,Message,DronesMonitor = M.GetMonitorDrones()
+
  __pyx_t_1 = __Pyx_PyObject_GetAttrStr(__pyx_v_M, __pyx_n_s_GetMonitorDrones); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 252, __pyx_L1_error)
+  __Pyx_GOTREF(__pyx_t_1);
+  __pyx_t_2 = NULL;
+  if (CYTHON_UNPACK_METHODS && likely(PyMethod_Check(__pyx_t_1))) {
+    __pyx_t_2 = PyMethod_GET_SELF(__pyx_t_1);
+    if (likely(__pyx_t_2)) {
+      PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_1);
+      __Pyx_INCREF(__pyx_t_2);
+      __Pyx_INCREF(function);
+      __Pyx_DECREF_SET(__pyx_t_1, function);
+    }
+  }
+  if (__pyx_t_2) {
+    __pyx_t_4 = __Pyx_PyObject_CallOneArg(__pyx_t_1, __pyx_t_2); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 252, __pyx_L1_error)
+    __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
+  } else {
+    __pyx_t_4 = __Pyx_PyObject_CallNoArg(__pyx_t_1); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 252, __pyx_L1_error)
+  }
+  __Pyx_GOTREF(__pyx_t_4);
+  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
+  if ((likely(PyTuple_CheckExact(__pyx_t_4))) || (PyList_CheckExact(__pyx_t_4))) {
+    PyObject* sequence = __pyx_t_4;
+    #if !CYTHON_COMPILING_IN_PYPY
+    Py_ssize_t size = Py_SIZE(sequence);
+    #else
+    Py_ssize_t size = PySequence_Size(sequence);
+    #endif
+    if (unlikely(size != 3)) {
+      if (size > 3) __Pyx_RaiseTooManyValuesError(3);
+      else if (size >= 0) __Pyx_RaiseNeedMoreValuesError(size);
+      __PYX_ERR(0, 252, __pyx_L1_error)
+    }
+    #if CYTHON_ASSUME_SAFE_MACROS && !CYTHON_AVOID_BORROWED_REFS
+    if (likely(PyTuple_CheckExact(sequence))) {
+      __pyx_t_1 = PyTuple_GET_ITEM(sequence, 0); 
+      __pyx_t_2 = PyTuple_GET_ITEM(sequence, 1); 
+      __pyx_t_3 = PyTuple_GET_ITEM(sequence, 2); 
+    } else {
+      __pyx_t_1 = PyList_GET_ITEM(sequence, 0); 
+      __pyx_t_2 = PyList_GET_ITEM(sequence, 1); 
+      __pyx_t_3 = PyList_GET_ITEM(sequence, 2); 
+    }
+    __Pyx_INCREF(__pyx_t_1);
+    __Pyx_INCREF(__pyx_t_2);
+    __Pyx_INCREF(__pyx_t_3);
+    #else
+    __pyx_t_1 = PySequence_ITEM(sequence, 0); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 252, __pyx_L1_error)
+    __Pyx_GOTREF(__pyx_t_1);
+    __pyx_t_2 = PySequence_ITEM(sequence, 1); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 252, __pyx_L1_error)
+    __Pyx_GOTREF(__pyx_t_2);
+    __pyx_t_3 = PySequence_ITEM(sequence, 2); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 252, __pyx_L1_error)
+    __Pyx_GOTREF(__pyx_t_3);
+    #endif
+    __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
+  } else {
+    Py_ssize_t index = -1;
+    __pyx_t_5 = PyObject_GetIter(__pyx_t_4); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 252, __pyx_L1_error)
+    __Pyx_GOTREF(__pyx_t_5);
+    __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
+    __pyx_t_6 = Py_TYPE(__pyx_t_5)->tp_iternext;
+    index = 0; __pyx_t_1 = __pyx_t_6(__pyx_t_5); if (unlikely(!__pyx_t_1)) goto __pyx_L6_unpacking_failed;
+    __Pyx_GOTREF(__pyx_t_1);
+    index = 1; __pyx_t_2 = __pyx_t_6(__pyx_t_5); if (unlikely(!__pyx_t_2)) goto __pyx_L6_unpacking_failed;
+    __Pyx_GOTREF(__pyx_t_2);
+    index = 2; __pyx_t_3 = __pyx_t_6(__pyx_t_5); if (unlikely(!__pyx_t_3)) goto __pyx_L6_unpacking_failed;
+    __Pyx_GOTREF(__pyx_t_3);
+    if (__Pyx_IternextUnpackEndCheck(__pyx_t_6(__pyx_t_5), 3) < 0) __PYX_ERR(0, 252, __pyx_L1_error)
+    __pyx_t_6 = NULL;
+    __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
+    goto __pyx_L7_unpacking_done;
+    __pyx_L6_unpacking_failed:;
+    __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
+    __pyx_t_6 = NULL;
+    if (__Pyx_IterFinish() == 0) __Pyx_RaiseNeedMoreValuesError(index);
+    __PYX_ERR(0, 252, __pyx_L1_error)
+    __pyx_L7_unpacking_done:;
+  }
+  __Pyx_DECREF_SET(__pyx_v_Sucess, __pyx_t_1);
+  __pyx_t_1 = 0;
+  __Pyx_DECREF_SET(__pyx_v_Message, __pyx_t_2);
+  __pyx_t_2 = 0;
+  __pyx_v_DronesMonitor = __pyx_t_3;
+  __pyx_t_3 = 0;
+
+253:     if Sucess:
+
  __pyx_t_7 = __Pyx_PyObject_IsTrue(__pyx_v_Sucess); if (unlikely(__pyx_t_7 < 0)) __PYX_ERR(0, 253, __pyx_L1_error)
+  if (__pyx_t_7) {
+/* … */
+  }
+
+254:         SpriteList += MakeDroneSprites(Message,DronesMonitor)
+
    __pyx_t_3 = __Pyx_GetModuleGlobalName(__pyx_n_s_MakeDroneSprites); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 254, __pyx_L1_error)
+    __Pyx_GOTREF(__pyx_t_3);
+    __pyx_t_2 = NULL;
+    __pyx_t_8 = 0;
+    if (CYTHON_UNPACK_METHODS && unlikely(PyMethod_Check(__pyx_t_3))) {
+      __pyx_t_2 = PyMethod_GET_SELF(__pyx_t_3);
+      if (likely(__pyx_t_2)) {
+        PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_3);
+        __Pyx_INCREF(__pyx_t_2);
+        __Pyx_INCREF(function);
+        __Pyx_DECREF_SET(__pyx_t_3, function);
+        __pyx_t_8 = 1;
+      }
+    }
+    #if CYTHON_FAST_PYCALL
+    if (PyFunction_Check(__pyx_t_3)) {
+      PyObject *__pyx_temp[3] = {__pyx_t_2, __pyx_v_Message, __pyx_v_DronesMonitor};
+      __pyx_t_4 = __Pyx_PyFunction_FastCall(__pyx_t_3, __pyx_temp+1-__pyx_t_8, 2+__pyx_t_8); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 254, __pyx_L1_error)
+      __Pyx_XDECREF(__pyx_t_2); __pyx_t_2 = 0;
+      __Pyx_GOTREF(__pyx_t_4);
+    } else
+    #endif
+    #if CYTHON_FAST_PYCCALL
+    if (__Pyx_PyFastCFunction_Check(__pyx_t_3)) {
+      PyObject *__pyx_temp[3] = {__pyx_t_2, __pyx_v_Message, __pyx_v_DronesMonitor};
+      __pyx_t_4 = __Pyx_PyCFunction_FastCall(__pyx_t_3, __pyx_temp+1-__pyx_t_8, 2+__pyx_t_8); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 254, __pyx_L1_error)
+      __Pyx_XDECREF(__pyx_t_2); __pyx_t_2 = 0;
+      __Pyx_GOTREF(__pyx_t_4);
+    } else
+    #endif
+    {
+      __pyx_t_1 = PyTuple_New(2+__pyx_t_8); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 254, __pyx_L1_error)
+      __Pyx_GOTREF(__pyx_t_1);
+      if (__pyx_t_2) {
+        __Pyx_GIVEREF(__pyx_t_2); PyTuple_SET_ITEM(__pyx_t_1, 0, __pyx_t_2); __pyx_t_2 = NULL;
+      }
+      __Pyx_INCREF(__pyx_v_Message);
+      __Pyx_GIVEREF(__pyx_v_Message);
+      PyTuple_SET_ITEM(__pyx_t_1, 0+__pyx_t_8, __pyx_v_Message);
+      __Pyx_INCREF(__pyx_v_DronesMonitor);
+      __Pyx_GIVEREF(__pyx_v_DronesMonitor);
+      PyTuple_SET_ITEM(__pyx_t_1, 1+__pyx_t_8, __pyx_v_DronesMonitor);
+      __pyx_t_4 = __Pyx_PyObject_Call(__pyx_t_3, __pyx_t_1, NULL); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 254, __pyx_L1_error)
+      __Pyx_GOTREF(__pyx_t_4);
+      __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
+    }
+    __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
+    __pyx_t_3 = PyNumber_InPlaceAdd(__pyx_v_SpriteList, __pyx_t_4); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 254, __pyx_L1_error)
+    __Pyx_GOTREF(__pyx_t_3);
+    __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
+    __Pyx_DECREF_SET(__pyx_v_SpriteList, __pyx_t_3);
+    __pyx_t_3 = 0;
+
 255: 
+
+256:     Sucess,Message,FlightsAll = M.GetFlightsAll()
+
  __pyx_t_4 = __Pyx_PyObject_GetAttrStr(__pyx_v_M, __pyx_n_s_GetFlightsAll); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 256, __pyx_L1_error)
+  __Pyx_GOTREF(__pyx_t_4);
+  __pyx_t_1 = NULL;
+  if (CYTHON_UNPACK_METHODS && likely(PyMethod_Check(__pyx_t_4))) {
+    __pyx_t_1 = PyMethod_GET_SELF(__pyx_t_4);
+    if (likely(__pyx_t_1)) {
+      PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_4);
+      __Pyx_INCREF(__pyx_t_1);
+      __Pyx_INCREF(function);
+      __Pyx_DECREF_SET(__pyx_t_4, function);
+    }
+  }
+  if (__pyx_t_1) {
+    __pyx_t_3 = __Pyx_PyObject_CallOneArg(__pyx_t_4, __pyx_t_1); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 256, __pyx_L1_error)
+    __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
+  } else {
+    __pyx_t_3 = __Pyx_PyObject_CallNoArg(__pyx_t_4); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 256, __pyx_L1_error)
+  }
+  __Pyx_GOTREF(__pyx_t_3);
+  __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
+  if ((likely(PyTuple_CheckExact(__pyx_t_3))) || (PyList_CheckExact(__pyx_t_3))) {
+    PyObject* sequence = __pyx_t_3;
+    #if !CYTHON_COMPILING_IN_PYPY
+    Py_ssize_t size = Py_SIZE(sequence);
+    #else
+    Py_ssize_t size = PySequence_Size(sequence);
+    #endif
+    if (unlikely(size != 3)) {
+      if (size > 3) __Pyx_RaiseTooManyValuesError(3);
+      else if (size >= 0) __Pyx_RaiseNeedMoreValuesError(size);
+      __PYX_ERR(0, 256, __pyx_L1_error)
+    }
+    #if CYTHON_ASSUME_SAFE_MACROS && !CYTHON_AVOID_BORROWED_REFS
+    if (likely(PyTuple_CheckExact(sequence))) {
+      __pyx_t_4 = PyTuple_GET_ITEM(sequence, 0); 
+      __pyx_t_1 = PyTuple_GET_ITEM(sequence, 1); 
+      __pyx_t_2 = PyTuple_GET_ITEM(sequence, 2); 
+    } else {
+      __pyx_t_4 = PyList_GET_ITEM(sequence, 0); 
+      __pyx_t_1 = PyList_GET_ITEM(sequence, 1); 
+      __pyx_t_2 = PyList_GET_ITEM(sequence, 2); 
+    }
+    __Pyx_INCREF(__pyx_t_4);
+    __Pyx_INCREF(__pyx_t_1);
+    __Pyx_INCREF(__pyx_t_2);
+    #else
+    __pyx_t_4 = PySequence_ITEM(sequence, 0); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 256, __pyx_L1_error)
+    __Pyx_GOTREF(__pyx_t_4);
+    __pyx_t_1 = PySequence_ITEM(sequence, 1); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 256, __pyx_L1_error)
+    __Pyx_GOTREF(__pyx_t_1);
+    __pyx_t_2 = PySequence_ITEM(sequence, 2); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 256, __pyx_L1_error)
+    __Pyx_GOTREF(__pyx_t_2);
+    #endif
+    __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
+  } else {
+    Py_ssize_t index = -1;
+    __pyx_t_5 = PyObject_GetIter(__pyx_t_3); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 256, __pyx_L1_error)
+    __Pyx_GOTREF(__pyx_t_5);
+    __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
+    __pyx_t_6 = Py_TYPE(__pyx_t_5)->tp_iternext;
+    index = 0; __pyx_t_4 = __pyx_t_6(__pyx_t_5); if (unlikely(!__pyx_t_4)) goto __pyx_L9_unpacking_failed;
+    __Pyx_GOTREF(__pyx_t_4);
+    index = 1; __pyx_t_1 = __pyx_t_6(__pyx_t_5); if (unlikely(!__pyx_t_1)) goto __pyx_L9_unpacking_failed;
+    __Pyx_GOTREF(__pyx_t_1);
+    index = 2; __pyx_t_2 = __pyx_t_6(__pyx_t_5); if (unlikely(!__pyx_t_2)) goto __pyx_L9_unpacking_failed;
+    __Pyx_GOTREF(__pyx_t_2);
+    if (__Pyx_IternextUnpackEndCheck(__pyx_t_6(__pyx_t_5), 3) < 0) __PYX_ERR(0, 256, __pyx_L1_error)
+    __pyx_t_6 = NULL;
+    __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
+    goto __pyx_L10_unpacking_done;
+    __pyx_L9_unpacking_failed:;
+    __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
+    __pyx_t_6 = NULL;
+    if (__Pyx_IterFinish() == 0) __Pyx_RaiseNeedMoreValuesError(index);
+    __PYX_ERR(0, 256, __pyx_L1_error)
+    __pyx_L10_unpacking_done:;
+  }
+  __Pyx_DECREF_SET(__pyx_v_Sucess, __pyx_t_4);
+  __pyx_t_4 = 0;
+  __Pyx_DECREF_SET(__pyx_v_Message, __pyx_t_1);
+  __pyx_t_1 = 0;
+  __pyx_v_FlightsAll = __pyx_t_2;
+  __pyx_t_2 = 0;
+
+257:     if Sucess:
+
  __pyx_t_7 = __Pyx_PyObject_IsTrue(__pyx_v_Sucess); if (unlikely(__pyx_t_7 < 0)) __PYX_ERR(0, 257, __pyx_L1_error)
+  if (__pyx_t_7) {
+/* … */
+  }
+
+258:         SpriteList += MakeFlightSprites(Message,FlightsAll)
+
    __pyx_t_2 = __Pyx_GetModuleGlobalName(__pyx_n_s_MakeFlightSprites); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 258, __pyx_L1_error)
+    __Pyx_GOTREF(__pyx_t_2);
+    __pyx_t_1 = NULL;
+    __pyx_t_8 = 0;
+    if (CYTHON_UNPACK_METHODS && unlikely(PyMethod_Check(__pyx_t_2))) {
+      __pyx_t_1 = PyMethod_GET_SELF(__pyx_t_2);
+      if (likely(__pyx_t_1)) {
+        PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_2);
+        __Pyx_INCREF(__pyx_t_1);
+        __Pyx_INCREF(function);
+        __Pyx_DECREF_SET(__pyx_t_2, function);
+        __pyx_t_8 = 1;
+      }
+    }
+    #if CYTHON_FAST_PYCALL
+    if (PyFunction_Check(__pyx_t_2)) {
+      PyObject *__pyx_temp[3] = {__pyx_t_1, __pyx_v_Message, __pyx_v_FlightsAll};
+      __pyx_t_3 = __Pyx_PyFunction_FastCall(__pyx_t_2, __pyx_temp+1-__pyx_t_8, 2+__pyx_t_8); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 258, __pyx_L1_error)
+      __Pyx_XDECREF(__pyx_t_1); __pyx_t_1 = 0;
+      __Pyx_GOTREF(__pyx_t_3);
+    } else
+    #endif
+    #if CYTHON_FAST_PYCCALL
+    if (__Pyx_PyFastCFunction_Check(__pyx_t_2)) {
+      PyObject *__pyx_temp[3] = {__pyx_t_1, __pyx_v_Message, __pyx_v_FlightsAll};
+      __pyx_t_3 = __Pyx_PyCFunction_FastCall(__pyx_t_2, __pyx_temp+1-__pyx_t_8, 2+__pyx_t_8); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 258, __pyx_L1_error)
+      __Pyx_XDECREF(__pyx_t_1); __pyx_t_1 = 0;
+      __Pyx_GOTREF(__pyx_t_3);
+    } else
+    #endif
+    {
+      __pyx_t_4 = PyTuple_New(2+__pyx_t_8); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 258, __pyx_L1_error)
+      __Pyx_GOTREF(__pyx_t_4);
+      if (__pyx_t_1) {
+        __Pyx_GIVEREF(__pyx_t_1); PyTuple_SET_ITEM(__pyx_t_4, 0, __pyx_t_1); __pyx_t_1 = NULL;
+      }
+      __Pyx_INCREF(__pyx_v_Message);
+      __Pyx_GIVEREF(__pyx_v_Message);
+      PyTuple_SET_ITEM(__pyx_t_4, 0+__pyx_t_8, __pyx_v_Message);
+      __Pyx_INCREF(__pyx_v_FlightsAll);
+      __Pyx_GIVEREF(__pyx_v_FlightsAll);
+      PyTuple_SET_ITEM(__pyx_t_4, 1+__pyx_t_8, __pyx_v_FlightsAll);
+      __pyx_t_3 = __Pyx_PyObject_Call(__pyx_t_2, __pyx_t_4, NULL); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 258, __pyx_L1_error)
+      __Pyx_GOTREF(__pyx_t_3);
+      __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
+    }
+    __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
+    __pyx_t_2 = PyNumber_InPlaceAdd(__pyx_v_SpriteList, __pyx_t_3); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 258, __pyx_L1_error)
+    __Pyx_GOTREF(__pyx_t_2);
+    __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
+    __Pyx_DECREF_SET(__pyx_v_SpriteList, __pyx_t_2);
+    __pyx_t_2 = 0;
+
 259: 
+
+260:     Sucess,Message,FlightsMonitor = M.GetMonitorFlights()
+
  __pyx_t_3 = __Pyx_PyObject_GetAttrStr(__pyx_v_M, __pyx_n_s_GetMonitorFlights); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 260, __pyx_L1_error)
+  __Pyx_GOTREF(__pyx_t_3);
+  __pyx_t_4 = NULL;
+  if (CYTHON_UNPACK_METHODS && likely(PyMethod_Check(__pyx_t_3))) {
+    __pyx_t_4 = PyMethod_GET_SELF(__pyx_t_3);
+    if (likely(__pyx_t_4)) {
+      PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_3);
+      __Pyx_INCREF(__pyx_t_4);
+      __Pyx_INCREF(function);
+      __Pyx_DECREF_SET(__pyx_t_3, function);
+    }
+  }
+  if (__pyx_t_4) {
+    __pyx_t_2 = __Pyx_PyObject_CallOneArg(__pyx_t_3, __pyx_t_4); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 260, __pyx_L1_error)
+    __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
+  } else {
+    __pyx_t_2 = __Pyx_PyObject_CallNoArg(__pyx_t_3); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 260, __pyx_L1_error)
+  }
+  __Pyx_GOTREF(__pyx_t_2);
+  __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
+  if ((likely(PyTuple_CheckExact(__pyx_t_2))) || (PyList_CheckExact(__pyx_t_2))) {
+    PyObject* sequence = __pyx_t_2;
+    #if !CYTHON_COMPILING_IN_PYPY
+    Py_ssize_t size = Py_SIZE(sequence);
+    #else
+    Py_ssize_t size = PySequence_Size(sequence);
+    #endif
+    if (unlikely(size != 3)) {
+      if (size > 3) __Pyx_RaiseTooManyValuesError(3);
+      else if (size >= 0) __Pyx_RaiseNeedMoreValuesError(size);
+      __PYX_ERR(0, 260, __pyx_L1_error)
+    }
+    #if CYTHON_ASSUME_SAFE_MACROS && !CYTHON_AVOID_BORROWED_REFS
+    if (likely(PyTuple_CheckExact(sequence))) {
+      __pyx_t_3 = PyTuple_GET_ITEM(sequence, 0); 
+      __pyx_t_4 = PyTuple_GET_ITEM(sequence, 1); 
+      __pyx_t_1 = PyTuple_GET_ITEM(sequence, 2); 
+    } else {
+      __pyx_t_3 = PyList_GET_ITEM(sequence, 0); 
+      __pyx_t_4 = PyList_GET_ITEM(sequence, 1); 
+      __pyx_t_1 = PyList_GET_ITEM(sequence, 2); 
+    }
+    __Pyx_INCREF(__pyx_t_3);
+    __Pyx_INCREF(__pyx_t_4);
+    __Pyx_INCREF(__pyx_t_1);
+    #else
+    __pyx_t_3 = PySequence_ITEM(sequence, 0); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 260, __pyx_L1_error)
+    __Pyx_GOTREF(__pyx_t_3);
+    __pyx_t_4 = PySequence_ITEM(sequence, 1); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 260, __pyx_L1_error)
+    __Pyx_GOTREF(__pyx_t_4);
+    __pyx_t_1 = PySequence_ITEM(sequence, 2); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 260, __pyx_L1_error)
+    __Pyx_GOTREF(__pyx_t_1);
+    #endif
+    __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
+  } else {
+    Py_ssize_t index = -1;
+    __pyx_t_5 = PyObject_GetIter(__pyx_t_2); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 260, __pyx_L1_error)
+    __Pyx_GOTREF(__pyx_t_5);
+    __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
+    __pyx_t_6 = Py_TYPE(__pyx_t_5)->tp_iternext;
+    index = 0; __pyx_t_3 = __pyx_t_6(__pyx_t_5); if (unlikely(!__pyx_t_3)) goto __pyx_L12_unpacking_failed;
+    __Pyx_GOTREF(__pyx_t_3);
+    index = 1; __pyx_t_4 = __pyx_t_6(__pyx_t_5); if (unlikely(!__pyx_t_4)) goto __pyx_L12_unpacking_failed;
+    __Pyx_GOTREF(__pyx_t_4);
+    index = 2; __pyx_t_1 = __pyx_t_6(__pyx_t_5); if (unlikely(!__pyx_t_1)) goto __pyx_L12_unpacking_failed;
+    __Pyx_GOTREF(__pyx_t_1);
+    if (__Pyx_IternextUnpackEndCheck(__pyx_t_6(__pyx_t_5), 3) < 0) __PYX_ERR(0, 260, __pyx_L1_error)
+    __pyx_t_6 = NULL;
+    __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
+    goto __pyx_L13_unpacking_done;
+    __pyx_L12_unpacking_failed:;
+    __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
+    __pyx_t_6 = NULL;
+    if (__Pyx_IterFinish() == 0) __Pyx_RaiseNeedMoreValuesError(index);
+    __PYX_ERR(0, 260, __pyx_L1_error)
+    __pyx_L13_unpacking_done:;
+  }
+  __Pyx_DECREF_SET(__pyx_v_Sucess, __pyx_t_3);
+  __pyx_t_3 = 0;
+  __Pyx_DECREF_SET(__pyx_v_Message, __pyx_t_4);
+  __pyx_t_4 = 0;
+  __pyx_v_FlightsMonitor = __pyx_t_1;
+  __pyx_t_1 = 0;
+
+261:     if Sucess:
+
  __pyx_t_7 = __Pyx_PyObject_IsTrue(__pyx_v_Sucess); if (unlikely(__pyx_t_7 < 0)) __PYX_ERR(0, 261, __pyx_L1_error)
+  if (__pyx_t_7) {
+/* … */
+  }
+
+262:         SpriteList += MakeFlightSprites(Message,FlightsMonitor)
+
    __pyx_t_1 = __Pyx_GetModuleGlobalName(__pyx_n_s_MakeFlightSprites); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 262, __pyx_L1_error)
+    __Pyx_GOTREF(__pyx_t_1);
+    __pyx_t_4 = NULL;
+    __pyx_t_8 = 0;
+    if (CYTHON_UNPACK_METHODS && unlikely(PyMethod_Check(__pyx_t_1))) {
+      __pyx_t_4 = PyMethod_GET_SELF(__pyx_t_1);
+      if (likely(__pyx_t_4)) {
+        PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_1);
+        __Pyx_INCREF(__pyx_t_4);
+        __Pyx_INCREF(function);
+        __Pyx_DECREF_SET(__pyx_t_1, function);
+        __pyx_t_8 = 1;
+      }
+    }
+    #if CYTHON_FAST_PYCALL
+    if (PyFunction_Check(__pyx_t_1)) {
+      PyObject *__pyx_temp[3] = {__pyx_t_4, __pyx_v_Message, __pyx_v_FlightsMonitor};
+      __pyx_t_2 = __Pyx_PyFunction_FastCall(__pyx_t_1, __pyx_temp+1-__pyx_t_8, 2+__pyx_t_8); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 262, __pyx_L1_error)
+      __Pyx_XDECREF(__pyx_t_4); __pyx_t_4 = 0;
+      __Pyx_GOTREF(__pyx_t_2);
+    } else
+    #endif
+    #if CYTHON_FAST_PYCCALL
+    if (__Pyx_PyFastCFunction_Check(__pyx_t_1)) {
+      PyObject *__pyx_temp[3] = {__pyx_t_4, __pyx_v_Message, __pyx_v_FlightsMonitor};
+      __pyx_t_2 = __Pyx_PyCFunction_FastCall(__pyx_t_1, __pyx_temp+1-__pyx_t_8, 2+__pyx_t_8); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 262, __pyx_L1_error)
+      __Pyx_XDECREF(__pyx_t_4); __pyx_t_4 = 0;
+      __Pyx_GOTREF(__pyx_t_2);
+    } else
+    #endif
+    {
+      __pyx_t_3 = PyTuple_New(2+__pyx_t_8); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 262, __pyx_L1_error)
+      __Pyx_GOTREF(__pyx_t_3);
+      if (__pyx_t_4) {
+        __Pyx_GIVEREF(__pyx_t_4); PyTuple_SET_ITEM(__pyx_t_3, 0, __pyx_t_4); __pyx_t_4 = NULL;
+      }
+      __Pyx_INCREF(__pyx_v_Message);
+      __Pyx_GIVEREF(__pyx_v_Message);
+      PyTuple_SET_ITEM(__pyx_t_3, 0+__pyx_t_8, __pyx_v_Message);
+      __Pyx_INCREF(__pyx_v_FlightsMonitor);
+      __Pyx_GIVEREF(__pyx_v_FlightsMonitor);
+      PyTuple_SET_ITEM(__pyx_t_3, 1+__pyx_t_8, __pyx_v_FlightsMonitor);
+      __pyx_t_2 = __Pyx_PyObject_Call(__pyx_t_1, __pyx_t_3, NULL); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 262, __pyx_L1_error)
+      __Pyx_GOTREF(__pyx_t_2);
+      __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
+    }
+    __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
+    __pyx_t_1 = PyNumber_InPlaceAdd(__pyx_v_SpriteList, __pyx_t_2); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 262, __pyx_L1_error)
+    __Pyx_GOTREF(__pyx_t_1);
+    __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
+    __Pyx_DECREF_SET(__pyx_v_SpriteList, __pyx_t_1);
+    __pyx_t_1 = 0;
+
 263: 
+
+264:     Sucess,Message,WaypointsAll = M.GetFlightWaypointsAll()
+
  __pyx_t_2 = __Pyx_PyObject_GetAttrStr(__pyx_v_M, __pyx_n_s_GetFlightWaypointsAll); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 264, __pyx_L1_error)
+  __Pyx_GOTREF(__pyx_t_2);
+  __pyx_t_3 = NULL;
+  if (CYTHON_UNPACK_METHODS && likely(PyMethod_Check(__pyx_t_2))) {
+    __pyx_t_3 = PyMethod_GET_SELF(__pyx_t_2);
+    if (likely(__pyx_t_3)) {
+      PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_2);
+      __Pyx_INCREF(__pyx_t_3);
+      __Pyx_INCREF(function);
+      __Pyx_DECREF_SET(__pyx_t_2, function);
+    }
+  }
+  if (__pyx_t_3) {
+    __pyx_t_1 = __Pyx_PyObject_CallOneArg(__pyx_t_2, __pyx_t_3); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 264, __pyx_L1_error)
+    __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
+  } else {
+    __pyx_t_1 = __Pyx_PyObject_CallNoArg(__pyx_t_2); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 264, __pyx_L1_error)
+  }
+  __Pyx_GOTREF(__pyx_t_1);
+  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
+  if ((likely(PyTuple_CheckExact(__pyx_t_1))) || (PyList_CheckExact(__pyx_t_1))) {
+    PyObject* sequence = __pyx_t_1;
+    #if !CYTHON_COMPILING_IN_PYPY
+    Py_ssize_t size = Py_SIZE(sequence);
+    #else
+    Py_ssize_t size = PySequence_Size(sequence);
+    #endif
+    if (unlikely(size != 3)) {
+      if (size > 3) __Pyx_RaiseTooManyValuesError(3);
+      else if (size >= 0) __Pyx_RaiseNeedMoreValuesError(size);
+      __PYX_ERR(0, 264, __pyx_L1_error)
+    }
+    #if CYTHON_ASSUME_SAFE_MACROS && !CYTHON_AVOID_BORROWED_REFS
+    if (likely(PyTuple_CheckExact(sequence))) {
+      __pyx_t_2 = PyTuple_GET_ITEM(sequence, 0); 
+      __pyx_t_3 = PyTuple_GET_ITEM(sequence, 1); 
+      __pyx_t_4 = PyTuple_GET_ITEM(sequence, 2); 
+    } else {
+      __pyx_t_2 = PyList_GET_ITEM(sequence, 0); 
+      __pyx_t_3 = PyList_GET_ITEM(sequence, 1); 
+      __pyx_t_4 = PyList_GET_ITEM(sequence, 2); 
+    }
+    __Pyx_INCREF(__pyx_t_2);
+    __Pyx_INCREF(__pyx_t_3);
+    __Pyx_INCREF(__pyx_t_4);
+    #else
+    __pyx_t_2 = PySequence_ITEM(sequence, 0); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 264, __pyx_L1_error)
+    __Pyx_GOTREF(__pyx_t_2);
+    __pyx_t_3 = PySequence_ITEM(sequence, 1); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 264, __pyx_L1_error)
+    __Pyx_GOTREF(__pyx_t_3);
+    __pyx_t_4 = PySequence_ITEM(sequence, 2); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 264, __pyx_L1_error)
+    __Pyx_GOTREF(__pyx_t_4);
+    #endif
+    __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
+  } else {
+    Py_ssize_t index = -1;
+    __pyx_t_5 = PyObject_GetIter(__pyx_t_1); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 264, __pyx_L1_error)
+    __Pyx_GOTREF(__pyx_t_5);
+    __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
+    __pyx_t_6 = Py_TYPE(__pyx_t_5)->tp_iternext;
+    index = 0; __pyx_t_2 = __pyx_t_6(__pyx_t_5); if (unlikely(!__pyx_t_2)) goto __pyx_L15_unpacking_failed;
+    __Pyx_GOTREF(__pyx_t_2);
+    index = 1; __pyx_t_3 = __pyx_t_6(__pyx_t_5); if (unlikely(!__pyx_t_3)) goto __pyx_L15_unpacking_failed;
+    __Pyx_GOTREF(__pyx_t_3);
+    index = 2; __pyx_t_4 = __pyx_t_6(__pyx_t_5); if (unlikely(!__pyx_t_4)) goto __pyx_L15_unpacking_failed;
+    __Pyx_GOTREF(__pyx_t_4);
+    if (__Pyx_IternextUnpackEndCheck(__pyx_t_6(__pyx_t_5), 3) < 0) __PYX_ERR(0, 264, __pyx_L1_error)
+    __pyx_t_6 = NULL;
+    __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
+    goto __pyx_L16_unpacking_done;
+    __pyx_L15_unpacking_failed:;
+    __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
+    __pyx_t_6 = NULL;
+    if (__Pyx_IterFinish() == 0) __Pyx_RaiseNeedMoreValuesError(index);
+    __PYX_ERR(0, 264, __pyx_L1_error)
+    __pyx_L16_unpacking_done:;
+  }
+  __Pyx_DECREF_SET(__pyx_v_Sucess, __pyx_t_2);
+  __pyx_t_2 = 0;
+  __Pyx_DECREF_SET(__pyx_v_Message, __pyx_t_3);
+  __pyx_t_3 = 0;
+  __pyx_v_WaypointsAll = __pyx_t_4;
+  __pyx_t_4 = 0;
+
+265:     if Sucess:
+
  __pyx_t_7 = __Pyx_PyObject_IsTrue(__pyx_v_Sucess); if (unlikely(__pyx_t_7 < 0)) __PYX_ERR(0, 265, __pyx_L1_error)
+  if (__pyx_t_7) {
+/* … */
+  }
+
+266:         SpriteList += MakeWaypointSprites(Message,WaypointsAll)
+
    __pyx_t_4 = __Pyx_GetModuleGlobalName(__pyx_n_s_MakeWaypointSprites); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 266, __pyx_L1_error)
+    __Pyx_GOTREF(__pyx_t_4);
+    __pyx_t_3 = NULL;
+    __pyx_t_8 = 0;
+    if (CYTHON_UNPACK_METHODS && unlikely(PyMethod_Check(__pyx_t_4))) {
+      __pyx_t_3 = PyMethod_GET_SELF(__pyx_t_4);
+      if (likely(__pyx_t_3)) {
+        PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_4);
+        __Pyx_INCREF(__pyx_t_3);
+        __Pyx_INCREF(function);
+        __Pyx_DECREF_SET(__pyx_t_4, function);
+        __pyx_t_8 = 1;
+      }
+    }
+    #if CYTHON_FAST_PYCALL
+    if (PyFunction_Check(__pyx_t_4)) {
+      PyObject *__pyx_temp[3] = {__pyx_t_3, __pyx_v_Message, __pyx_v_WaypointsAll};
+      __pyx_t_1 = __Pyx_PyFunction_FastCall(__pyx_t_4, __pyx_temp+1-__pyx_t_8, 2+__pyx_t_8); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 266, __pyx_L1_error)
+      __Pyx_XDECREF(__pyx_t_3); __pyx_t_3 = 0;
+      __Pyx_GOTREF(__pyx_t_1);
+    } else
+    #endif
+    #if CYTHON_FAST_PYCCALL
+    if (__Pyx_PyFastCFunction_Check(__pyx_t_4)) {
+      PyObject *__pyx_temp[3] = {__pyx_t_3, __pyx_v_Message, __pyx_v_WaypointsAll};
+      __pyx_t_1 = __Pyx_PyCFunction_FastCall(__pyx_t_4, __pyx_temp+1-__pyx_t_8, 2+__pyx_t_8); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 266, __pyx_L1_error)
+      __Pyx_XDECREF(__pyx_t_3); __pyx_t_3 = 0;
+      __Pyx_GOTREF(__pyx_t_1);
+    } else
+    #endif
+    {
+      __pyx_t_2 = PyTuple_New(2+__pyx_t_8); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 266, __pyx_L1_error)
+      __Pyx_GOTREF(__pyx_t_2);
+      if (__pyx_t_3) {
+        __Pyx_GIVEREF(__pyx_t_3); PyTuple_SET_ITEM(__pyx_t_2, 0, __pyx_t_3); __pyx_t_3 = NULL;
+      }
+      __Pyx_INCREF(__pyx_v_Message);
+      __Pyx_GIVEREF(__pyx_v_Message);
+      PyTuple_SET_ITEM(__pyx_t_2, 0+__pyx_t_8, __pyx_v_Message);
+      __Pyx_INCREF(__pyx_v_WaypointsAll);
+      __Pyx_GIVEREF(__pyx_v_WaypointsAll);
+      PyTuple_SET_ITEM(__pyx_t_2, 1+__pyx_t_8, __pyx_v_WaypointsAll);
+      __pyx_t_1 = __Pyx_PyObject_Call(__pyx_t_4, __pyx_t_2, NULL); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 266, __pyx_L1_error)
+      __Pyx_GOTREF(__pyx_t_1);
+      __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
+    }
+    __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
+    __pyx_t_4 = PyNumber_InPlaceAdd(__pyx_v_SpriteList, __pyx_t_1); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 266, __pyx_L1_error)
+    __Pyx_GOTREF(__pyx_t_4);
+    __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
+    __Pyx_DECREF_SET(__pyx_v_SpriteList, __pyx_t_4);
+    __pyx_t_4 = 0;
+
 267: 
+
+268:     Sucess,Message,WaypointsMonitor = M.GetMonitorFlightWaypoints()
+
  __pyx_t_1 = __Pyx_PyObject_GetAttrStr(__pyx_v_M, __pyx_n_s_GetMonitorFlightWaypoints); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 268, __pyx_L1_error)
+  __Pyx_GOTREF(__pyx_t_1);
+  __pyx_t_2 = NULL;
+  if (CYTHON_UNPACK_METHODS && likely(PyMethod_Check(__pyx_t_1))) {
+    __pyx_t_2 = PyMethod_GET_SELF(__pyx_t_1);
+    if (likely(__pyx_t_2)) {
+      PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_1);
+      __Pyx_INCREF(__pyx_t_2);
+      __Pyx_INCREF(function);
+      __Pyx_DECREF_SET(__pyx_t_1, function);
+    }
+  }
+  if (__pyx_t_2) {
+    __pyx_t_4 = __Pyx_PyObject_CallOneArg(__pyx_t_1, __pyx_t_2); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 268, __pyx_L1_error)
+    __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
+  } else {
+    __pyx_t_4 = __Pyx_PyObject_CallNoArg(__pyx_t_1); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 268, __pyx_L1_error)
+  }
+  __Pyx_GOTREF(__pyx_t_4);
+  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
+  if ((likely(PyTuple_CheckExact(__pyx_t_4))) || (PyList_CheckExact(__pyx_t_4))) {
+    PyObject* sequence = __pyx_t_4;
+    #if !CYTHON_COMPILING_IN_PYPY
+    Py_ssize_t size = Py_SIZE(sequence);
+    #else
+    Py_ssize_t size = PySequence_Size(sequence);
+    #endif
+    if (unlikely(size != 3)) {
+      if (size > 3) __Pyx_RaiseTooManyValuesError(3);
+      else if (size >= 0) __Pyx_RaiseNeedMoreValuesError(size);
+      __PYX_ERR(0, 268, __pyx_L1_error)
+    }
+    #if CYTHON_ASSUME_SAFE_MACROS && !CYTHON_AVOID_BORROWED_REFS
+    if (likely(PyTuple_CheckExact(sequence))) {
+      __pyx_t_1 = PyTuple_GET_ITEM(sequence, 0); 
+      __pyx_t_2 = PyTuple_GET_ITEM(sequence, 1); 
+      __pyx_t_3 = PyTuple_GET_ITEM(sequence, 2); 
+    } else {
+      __pyx_t_1 = PyList_GET_ITEM(sequence, 0); 
+      __pyx_t_2 = PyList_GET_ITEM(sequence, 1); 
+      __pyx_t_3 = PyList_GET_ITEM(sequence, 2); 
+    }
+    __Pyx_INCREF(__pyx_t_1);
+    __Pyx_INCREF(__pyx_t_2);
+    __Pyx_INCREF(__pyx_t_3);
+    #else
+    __pyx_t_1 = PySequence_ITEM(sequence, 0); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 268, __pyx_L1_error)
+    __Pyx_GOTREF(__pyx_t_1);
+    __pyx_t_2 = PySequence_ITEM(sequence, 1); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 268, __pyx_L1_error)
+    __Pyx_GOTREF(__pyx_t_2);
+    __pyx_t_3 = PySequence_ITEM(sequence, 2); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 268, __pyx_L1_error)
+    __Pyx_GOTREF(__pyx_t_3);
+    #endif
+    __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
+  } else {
+    Py_ssize_t index = -1;
+    __pyx_t_5 = PyObject_GetIter(__pyx_t_4); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 268, __pyx_L1_error)
+    __Pyx_GOTREF(__pyx_t_5);
+    __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
+    __pyx_t_6 = Py_TYPE(__pyx_t_5)->tp_iternext;
+    index = 0; __pyx_t_1 = __pyx_t_6(__pyx_t_5); if (unlikely(!__pyx_t_1)) goto __pyx_L18_unpacking_failed;
+    __Pyx_GOTREF(__pyx_t_1);
+    index = 1; __pyx_t_2 = __pyx_t_6(__pyx_t_5); if (unlikely(!__pyx_t_2)) goto __pyx_L18_unpacking_failed;
+    __Pyx_GOTREF(__pyx_t_2);
+    index = 2; __pyx_t_3 = __pyx_t_6(__pyx_t_5); if (unlikely(!__pyx_t_3)) goto __pyx_L18_unpacking_failed;
+    __Pyx_GOTREF(__pyx_t_3);
+    if (__Pyx_IternextUnpackEndCheck(__pyx_t_6(__pyx_t_5), 3) < 0) __PYX_ERR(0, 268, __pyx_L1_error)
+    __pyx_t_6 = NULL;
+    __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
+    goto __pyx_L19_unpacking_done;
+    __pyx_L18_unpacking_failed:;
+    __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
+    __pyx_t_6 = NULL;
+    if (__Pyx_IterFinish() == 0) __Pyx_RaiseNeedMoreValuesError(index);
+    __PYX_ERR(0, 268, __pyx_L1_error)
+    __pyx_L19_unpacking_done:;
+  }
+  __Pyx_DECREF_SET(__pyx_v_Sucess, __pyx_t_1);
+  __pyx_t_1 = 0;
+  __Pyx_DECREF_SET(__pyx_v_Message, __pyx_t_2);
+  __pyx_t_2 = 0;
+  __pyx_v_WaypointsMonitor = __pyx_t_3;
+  __pyx_t_3 = 0;
+
+269:     if Sucess:
+
  __pyx_t_7 = __Pyx_PyObject_IsTrue(__pyx_v_Sucess); if (unlikely(__pyx_t_7 < 0)) __PYX_ERR(0, 269, __pyx_L1_error)
+  if (__pyx_t_7) {
+/* … */
+  }
+
+270:         SpriteList += MakeWaypointSprites(Message,WaypointsMonitor)
+
    __pyx_t_3 = __Pyx_GetModuleGlobalName(__pyx_n_s_MakeWaypointSprites); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 270, __pyx_L1_error)
+    __Pyx_GOTREF(__pyx_t_3);
+    __pyx_t_2 = NULL;
+    __pyx_t_8 = 0;
+    if (CYTHON_UNPACK_METHODS && unlikely(PyMethod_Check(__pyx_t_3))) {
+      __pyx_t_2 = PyMethod_GET_SELF(__pyx_t_3);
+      if (likely(__pyx_t_2)) {
+        PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_3);
+        __Pyx_INCREF(__pyx_t_2);
+        __Pyx_INCREF(function);
+        __Pyx_DECREF_SET(__pyx_t_3, function);
+        __pyx_t_8 = 1;
+      }
+    }
+    #if CYTHON_FAST_PYCALL
+    if (PyFunction_Check(__pyx_t_3)) {
+      PyObject *__pyx_temp[3] = {__pyx_t_2, __pyx_v_Message, __pyx_v_WaypointsMonitor};
+      __pyx_t_4 = __Pyx_PyFunction_FastCall(__pyx_t_3, __pyx_temp+1-__pyx_t_8, 2+__pyx_t_8); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 270, __pyx_L1_error)
+      __Pyx_XDECREF(__pyx_t_2); __pyx_t_2 = 0;
+      __Pyx_GOTREF(__pyx_t_4);
+    } else
+    #endif
+    #if CYTHON_FAST_PYCCALL
+    if (__Pyx_PyFastCFunction_Check(__pyx_t_3)) {
+      PyObject *__pyx_temp[3] = {__pyx_t_2, __pyx_v_Message, __pyx_v_WaypointsMonitor};
+      __pyx_t_4 = __Pyx_PyCFunction_FastCall(__pyx_t_3, __pyx_temp+1-__pyx_t_8, 2+__pyx_t_8); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 270, __pyx_L1_error)
+      __Pyx_XDECREF(__pyx_t_2); __pyx_t_2 = 0;
+      __Pyx_GOTREF(__pyx_t_4);
+    } else
+    #endif
+    {
+      __pyx_t_1 = PyTuple_New(2+__pyx_t_8); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 270, __pyx_L1_error)
+      __Pyx_GOTREF(__pyx_t_1);
+      if (__pyx_t_2) {
+        __Pyx_GIVEREF(__pyx_t_2); PyTuple_SET_ITEM(__pyx_t_1, 0, __pyx_t_2); __pyx_t_2 = NULL;
+      }
+      __Pyx_INCREF(__pyx_v_Message);
+      __Pyx_GIVEREF(__pyx_v_Message);
+      PyTuple_SET_ITEM(__pyx_t_1, 0+__pyx_t_8, __pyx_v_Message);
+      __Pyx_INCREF(__pyx_v_WaypointsMonitor);
+      __Pyx_GIVEREF(__pyx_v_WaypointsMonitor);
+      PyTuple_SET_ITEM(__pyx_t_1, 1+__pyx_t_8, __pyx_v_WaypointsMonitor);
+      __pyx_t_4 = __Pyx_PyObject_Call(__pyx_t_3, __pyx_t_1, NULL); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 270, __pyx_L1_error)
+      __Pyx_GOTREF(__pyx_t_4);
+      __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
+    }
+    __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
+    __pyx_t_3 = PyNumber_InPlaceAdd(__pyx_v_SpriteList, __pyx_t_4); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 270, __pyx_L1_error)
+    __Pyx_GOTREF(__pyx_t_3);
+    __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
+    __Pyx_DECREF_SET(__pyx_v_SpriteList, __pyx_t_3);
+    __pyx_t_3 = 0;
+
 271: 
+
+272:     Sucess,Message,NoFlyZones = M.GetNoFlyZones()
+
  __pyx_t_4 = __Pyx_PyObject_GetAttrStr(__pyx_v_M, __pyx_n_s_GetNoFlyZones); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 272, __pyx_L1_error)
+  __Pyx_GOTREF(__pyx_t_4);
+  __pyx_t_1 = NULL;
+  if (CYTHON_UNPACK_METHODS && likely(PyMethod_Check(__pyx_t_4))) {
+    __pyx_t_1 = PyMethod_GET_SELF(__pyx_t_4);
+    if (likely(__pyx_t_1)) {
+      PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_4);
+      __Pyx_INCREF(__pyx_t_1);
+      __Pyx_INCREF(function);
+      __Pyx_DECREF_SET(__pyx_t_4, function);
+    }
+  }
+  if (__pyx_t_1) {
+    __pyx_t_3 = __Pyx_PyObject_CallOneArg(__pyx_t_4, __pyx_t_1); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 272, __pyx_L1_error)
+    __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
+  } else {
+    __pyx_t_3 = __Pyx_PyObject_CallNoArg(__pyx_t_4); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 272, __pyx_L1_error)
+  }
+  __Pyx_GOTREF(__pyx_t_3);
+  __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
+  if ((likely(PyTuple_CheckExact(__pyx_t_3))) || (PyList_CheckExact(__pyx_t_3))) {
+    PyObject* sequence = __pyx_t_3;
+    #if !CYTHON_COMPILING_IN_PYPY
+    Py_ssize_t size = Py_SIZE(sequence);
+    #else
+    Py_ssize_t size = PySequence_Size(sequence);
+    #endif
+    if (unlikely(size != 3)) {
+      if (size > 3) __Pyx_RaiseTooManyValuesError(3);
+      else if (size >= 0) __Pyx_RaiseNeedMoreValuesError(size);
+      __PYX_ERR(0, 272, __pyx_L1_error)
+    }
+    #if CYTHON_ASSUME_SAFE_MACROS && !CYTHON_AVOID_BORROWED_REFS
+    if (likely(PyTuple_CheckExact(sequence))) {
+      __pyx_t_4 = PyTuple_GET_ITEM(sequence, 0); 
+      __pyx_t_1 = PyTuple_GET_ITEM(sequence, 1); 
+      __pyx_t_2 = PyTuple_GET_ITEM(sequence, 2); 
+    } else {
+      __pyx_t_4 = PyList_GET_ITEM(sequence, 0); 
+      __pyx_t_1 = PyList_GET_ITEM(sequence, 1); 
+      __pyx_t_2 = PyList_GET_ITEM(sequence, 2); 
+    }
+    __Pyx_INCREF(__pyx_t_4);
+    __Pyx_INCREF(__pyx_t_1);
+    __Pyx_INCREF(__pyx_t_2);
+    #else
+    __pyx_t_4 = PySequence_ITEM(sequence, 0); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 272, __pyx_L1_error)
+    __Pyx_GOTREF(__pyx_t_4);
+    __pyx_t_1 = PySequence_ITEM(sequence, 1); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 272, __pyx_L1_error)
+    __Pyx_GOTREF(__pyx_t_1);
+    __pyx_t_2 = PySequence_ITEM(sequence, 2); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 272, __pyx_L1_error)
+    __Pyx_GOTREF(__pyx_t_2);
+    #endif
+    __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
+  } else {
+    Py_ssize_t index = -1;
+    __pyx_t_5 = PyObject_GetIter(__pyx_t_3); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 272, __pyx_L1_error)
+    __Pyx_GOTREF(__pyx_t_5);
+    __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
+    __pyx_t_6 = Py_TYPE(__pyx_t_5)->tp_iternext;
+    index = 0; __pyx_t_4 = __pyx_t_6(__pyx_t_5); if (unlikely(!__pyx_t_4)) goto __pyx_L21_unpacking_failed;
+    __Pyx_GOTREF(__pyx_t_4);
+    index = 1; __pyx_t_1 = __pyx_t_6(__pyx_t_5); if (unlikely(!__pyx_t_1)) goto __pyx_L21_unpacking_failed;
+    __Pyx_GOTREF(__pyx_t_1);
+    index = 2; __pyx_t_2 = __pyx_t_6(__pyx_t_5); if (unlikely(!__pyx_t_2)) goto __pyx_L21_unpacking_failed;
+    __Pyx_GOTREF(__pyx_t_2);
+    if (__Pyx_IternextUnpackEndCheck(__pyx_t_6(__pyx_t_5), 3) < 0) __PYX_ERR(0, 272, __pyx_L1_error)
+    __pyx_t_6 = NULL;
+    __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
+    goto __pyx_L22_unpacking_done;
+    __pyx_L21_unpacking_failed:;
+    __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
+    __pyx_t_6 = NULL;
+    if (__Pyx_IterFinish() == 0) __Pyx_RaiseNeedMoreValuesError(index);
+    __PYX_ERR(0, 272, __pyx_L1_error)
+    __pyx_L22_unpacking_done:;
+  }
+  __Pyx_DECREF_SET(__pyx_v_Sucess, __pyx_t_4);
+  __pyx_t_4 = 0;
+  __Pyx_DECREF_SET(__pyx_v_Message, __pyx_t_1);
+  __pyx_t_1 = 0;
+  __pyx_v_NoFlyZones = __pyx_t_2;
+  __pyx_t_2 = 0;
+
+273:     if Sucess:
+
  __pyx_t_7 = __Pyx_PyObject_IsTrue(__pyx_v_Sucess); if (unlikely(__pyx_t_7 < 0)) __PYX_ERR(0, 273, __pyx_L1_error)
+  if (__pyx_t_7) {
+/* … */
+  }
+
+274:         SpriteList += MakeZoneSprites(Message,NoFlyZones)
+
    __pyx_t_2 = __Pyx_GetModuleGlobalName(__pyx_n_s_MakeZoneSprites); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 274, __pyx_L1_error)
+    __Pyx_GOTREF(__pyx_t_2);
+    __pyx_t_1 = NULL;
+    __pyx_t_8 = 0;
+    if (CYTHON_UNPACK_METHODS && unlikely(PyMethod_Check(__pyx_t_2))) {
+      __pyx_t_1 = PyMethod_GET_SELF(__pyx_t_2);
+      if (likely(__pyx_t_1)) {
+        PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_2);
+        __Pyx_INCREF(__pyx_t_1);
+        __Pyx_INCREF(function);
+        __Pyx_DECREF_SET(__pyx_t_2, function);
+        __pyx_t_8 = 1;
+      }
+    }
+    #if CYTHON_FAST_PYCALL
+    if (PyFunction_Check(__pyx_t_2)) {
+      PyObject *__pyx_temp[3] = {__pyx_t_1, __pyx_v_Message, __pyx_v_NoFlyZones};
+      __pyx_t_3 = __Pyx_PyFunction_FastCall(__pyx_t_2, __pyx_temp+1-__pyx_t_8, 2+__pyx_t_8); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 274, __pyx_L1_error)
+      __Pyx_XDECREF(__pyx_t_1); __pyx_t_1 = 0;
+      __Pyx_GOTREF(__pyx_t_3);
+    } else
+    #endif
+    #if CYTHON_FAST_PYCCALL
+    if (__Pyx_PyFastCFunction_Check(__pyx_t_2)) {
+      PyObject *__pyx_temp[3] = {__pyx_t_1, __pyx_v_Message, __pyx_v_NoFlyZones};
+      __pyx_t_3 = __Pyx_PyCFunction_FastCall(__pyx_t_2, __pyx_temp+1-__pyx_t_8, 2+__pyx_t_8); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 274, __pyx_L1_error)
+      __Pyx_XDECREF(__pyx_t_1); __pyx_t_1 = 0;
+      __Pyx_GOTREF(__pyx_t_3);
+    } else
+    #endif
+    {
+      __pyx_t_4 = PyTuple_New(2+__pyx_t_8); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 274, __pyx_L1_error)
+      __Pyx_GOTREF(__pyx_t_4);
+      if (__pyx_t_1) {
+        __Pyx_GIVEREF(__pyx_t_1); PyTuple_SET_ITEM(__pyx_t_4, 0, __pyx_t_1); __pyx_t_1 = NULL;
+      }
+      __Pyx_INCREF(__pyx_v_Message);
+      __Pyx_GIVEREF(__pyx_v_Message);
+      PyTuple_SET_ITEM(__pyx_t_4, 0+__pyx_t_8, __pyx_v_Message);
+      __Pyx_INCREF(__pyx_v_NoFlyZones);
+      __Pyx_GIVEREF(__pyx_v_NoFlyZones);
+      PyTuple_SET_ITEM(__pyx_t_4, 1+__pyx_t_8, __pyx_v_NoFlyZones);
+      __pyx_t_3 = __Pyx_PyObject_Call(__pyx_t_2, __pyx_t_4, NULL); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 274, __pyx_L1_error)
+      __Pyx_GOTREF(__pyx_t_3);
+      __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
+    }
+    __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
+    __pyx_t_2 = PyNumber_InPlaceAdd(__pyx_v_SpriteList, __pyx_t_3); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 274, __pyx_L1_error)
+    __Pyx_GOTREF(__pyx_t_2);
+    __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
+    __Pyx_DECREF_SET(__pyx_v_SpriteList, __pyx_t_2);
+    __pyx_t_2 = 0;
+
 275: 
+
 276:     #Sprites are created in this function to simplify code in case of an error(False)
+
+277:     print("Refreshed data")
+
  if (__Pyx_PrintOne(0, __pyx_kp_s_Refreshed_data) < 0) __PYX_ERR(0, 277, __pyx_L1_error)
+
+278:     return SpriteList #All sprites which were sucessfully created
+
  __Pyx_XDECREF(__pyx_r);
+  __Pyx_INCREF(__pyx_v_SpriteList);
+  __pyx_r = __pyx_v_SpriteList;
+  goto __pyx_L0;
+
 279: 
+
 280: 
+
 281: 
+
+282: xpixel = 1200
+
  if (PyDict_SetItem(__pyx_d, __pyx_n_s_xpixel, __pyx_int_1200) < 0) __PYX_ERR(0, 282, __pyx_L1_error)
+
+283: ypixel = 700
+
  if (PyDict_SetItem(__pyx_d, __pyx_n_s_ypixel, __pyx_int_700) < 0) __PYX_ERR(0, 283, __pyx_L1_error)
+
+284: Refresh_Delay = 60
+
  if (PyDict_SetItem(__pyx_d, __pyx_n_s_Refresh_Delay, __pyx_int_60) < 0) __PYX_ERR(0, 284, __pyx_L1_error)
+
+285: clock = pygame.time.Clock()
+
  __pyx_t_1 = __Pyx_GetModuleGlobalName(__pyx_n_s_pygame); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 285, __pyx_L1_error)
+  __Pyx_GOTREF(__pyx_t_1);
+  __pyx_t_2 = __Pyx_PyObject_GetAttrStr(__pyx_t_1, __pyx_n_s_time); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 285, __pyx_L1_error)
+  __Pyx_GOTREF(__pyx_t_2);
+  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
+  __pyx_t_1 = __Pyx_PyObject_GetAttrStr(__pyx_t_2, __pyx_n_s_Clock); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 285, __pyx_L1_error)
+  __Pyx_GOTREF(__pyx_t_1);
+  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
+  __pyx_t_2 = NULL;
+  if (CYTHON_UNPACK_METHODS && likely(PyMethod_Check(__pyx_t_1))) {
+    __pyx_t_2 = PyMethod_GET_SELF(__pyx_t_1);
+    if (likely(__pyx_t_2)) {
+      PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_1);
+      __Pyx_INCREF(__pyx_t_2);
+      __Pyx_INCREF(function);
+      __Pyx_DECREF_SET(__pyx_t_1, function);
+    }
+  }
+  if (__pyx_t_2) {
+    __pyx_t_3 = __Pyx_PyObject_CallOneArg(__pyx_t_1, __pyx_t_2); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 285, __pyx_L1_error)
+    __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
+  } else {
+    __pyx_t_3 = __Pyx_PyObject_CallNoArg(__pyx_t_1); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 285, __pyx_L1_error)
+  }
+  __Pyx_GOTREF(__pyx_t_3);
+  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
+  if (PyDict_SetItem(__pyx_d, __pyx_n_s_clock, __pyx_t_3) < 0) __PYX_ERR(0, 285, __pyx_L1_error)
+  __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
+
+286: pressed = pygame.key.get_pressed
+
  __pyx_t_3 = __Pyx_GetModuleGlobalName(__pyx_n_s_pygame); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 286, __pyx_L1_error)
+  __Pyx_GOTREF(__pyx_t_3);
+  __pyx_t_1 = __Pyx_PyObject_GetAttrStr(__pyx_t_3, __pyx_n_s_key); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 286, __pyx_L1_error)
+  __Pyx_GOTREF(__pyx_t_1);
+  __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
+  __pyx_t_3 = __Pyx_PyObject_GetAttrStr(__pyx_t_1, __pyx_n_s_get_pressed); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 286, __pyx_L1_error)
+  __Pyx_GOTREF(__pyx_t_3);
+  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
+  if (PyDict_SetItem(__pyx_d, __pyx_n_s_pressed, __pyx_t_3) < 0) __PYX_ERR(0, 286, __pyx_L1_error)
+  __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
+
+287: Exit = "N"
+
  if (PyDict_SetItem(__pyx_d, __pyx_n_s_Exit, __pyx_n_s_N_2) < 0) __PYX_ERR(0, 287, __pyx_L1_error)
+
+288: while Exit != "Y":
+
  while (1) {
+    __pyx_t_3 = __Pyx_GetModuleGlobalName(__pyx_n_s_Exit); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 288, __pyx_L1_error)
+    __Pyx_GOTREF(__pyx_t_3);
+    __pyx_t_5 = (__Pyx_PyString_Equals(__pyx_t_3, __pyx_n_s_Y, Py_NE)); if (unlikely(__pyx_t_5 < 0)) __PYX_ERR(0, 288, __pyx_L1_error)
+    __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
+    if (!__pyx_t_5) break;
+
+289:     try:
+
    {
+      /*try:*/ {
+/* … */
+      }
+      __Pyx_XDECREF(__pyx_t_6); __pyx_t_6 = 0;
+      __Pyx_XDECREF(__pyx_t_7); __pyx_t_7 = 0;
+      __Pyx_XDECREF(__pyx_t_8); __pyx_t_8 = 0;
+      goto __pyx_L11_try_end;
+      __pyx_L4_error:;
+      __Pyx_PyThreadState_assign
+      __Pyx_XDECREF(__pyx_t_11); __pyx_t_11 = 0;
+      __Pyx_XDECREF(__pyx_t_1); __pyx_t_1 = 0;
+      __Pyx_XDECREF(__pyx_t_10); __pyx_t_10 = 0;
+      __Pyx_XDECREF(__pyx_t_9); __pyx_t_9 = 0;
+      __Pyx_XDECREF(__pyx_t_2); __pyx_t_2 = 0;
+      __Pyx_XDECREF(__pyx_t_4); __pyx_t_4 = 0;
+      __Pyx_XDECREF(__pyx_t_13); __pyx_t_13 = 0;
+      __Pyx_XDECREF(__pyx_t_3); __pyx_t_3 = 0;
+/* … */
+      __Pyx_PyThreadState_assign
+      __Pyx_XGIVEREF(__pyx_t_6);
+      __Pyx_XGIVEREF(__pyx_t_7);
+      __Pyx_XGIVEREF(__pyx_t_8);
+      __Pyx_ExceptionReset(__pyx_t_6, __pyx_t_7, __pyx_t_8);
+      goto __pyx_L1_error;
+      __pyx_L5_exception_handled:;
+      __Pyx_PyThreadState_assign
+      __Pyx_XGIVEREF(__pyx_t_6);
+      __Pyx_XGIVEREF(__pyx_t_7);
+      __Pyx_XGIVEREF(__pyx_t_8);
+      __Pyx_ExceptionReset(__pyx_t_6, __pyx_t_7, __pyx_t_8);
+      __pyx_L11_try_end:;
+    }
+  }
+
+290:         M = AATC_Monitor.CreateMonitorInterface(IP = "127.0.0.1",Port = 8001)
+
        __pyx_t_3 = __Pyx_GetModuleGlobalName(__pyx_n_s_AATC_Monitor); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 290, __pyx_L4_error)
+        __Pyx_GOTREF(__pyx_t_3);
+        __pyx_t_1 = __Pyx_PyObject_GetAttrStr(__pyx_t_3, __pyx_n_s_CreateMonitorInterface); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 290, __pyx_L4_error)
+        __Pyx_GOTREF(__pyx_t_1);
+        __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
+        __pyx_t_3 = PyDict_New(); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 290, __pyx_L4_error)
+        __Pyx_GOTREF(__pyx_t_3);
+        if (PyDict_SetItem(__pyx_t_3, __pyx_n_s_IP, __pyx_kp_s_127_0_0_1) < 0) __PYX_ERR(0, 290, __pyx_L4_error)
+        if (PyDict_SetItem(__pyx_t_3, __pyx_n_s_Port, __pyx_int_8001) < 0) __PYX_ERR(0, 290, __pyx_L4_error)
+        __pyx_t_2 = __Pyx_PyObject_Call(__pyx_t_1, __pyx_empty_tuple, __pyx_t_3); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 290, __pyx_L4_error)
+        __Pyx_GOTREF(__pyx_t_2);
+        __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
+        __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
+        if (PyDict_SetItem(__pyx_d, __pyx_n_s_M, __pyx_t_2) < 0) __PYX_ERR(0, 290, __pyx_L4_error)
+        __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
+
+291:         M.Login("Zini","")
+
        __pyx_t_2 = __Pyx_GetModuleGlobalName(__pyx_n_s_M); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 291, __pyx_L4_error)
+        __Pyx_GOTREF(__pyx_t_2);
+        __pyx_t_3 = __Pyx_PyObject_GetAttrStr(__pyx_t_2, __pyx_n_s_Login); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 291, __pyx_L4_error)
+        __Pyx_GOTREF(__pyx_t_3);
+        __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
+        __pyx_t_2 = __Pyx_PyObject_Call(__pyx_t_3, __pyx_tuple__79, NULL); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 291, __pyx_L4_error)
+        __Pyx_GOTREF(__pyx_t_2);
+        __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
+        __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
+/* … */
+  __pyx_tuple__79 = PyTuple_Pack(2, __pyx_n_s_Zini, __pyx_kp_s__2); if (unlikely(!__pyx_tuple__79)) __PYX_ERR(0, 291, __pyx_L1_error)
+  __Pyx_GOTREF(__pyx_tuple__79);
+  __Pyx_GIVEREF(__pyx_tuple__79);
+
 292:         #Sucess,Message,Data =  M.GetCoordDetails()
+
 293:         #MinCoords,MaxCoords,StepCoords = Data[0],Data[1],Data[2]
+
+294:         MinCoords,MaxCoords = AATC_Coordinate.Coordinate(0,0,0),AATC_Coordinate.Coordinate(1,1,50)
+
        __pyx_t_2 = __Pyx_GetModuleGlobalName(__pyx_n_s_AATC_Coordinate); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 294, __pyx_L4_error)
+        __Pyx_GOTREF(__pyx_t_2);
+        __pyx_t_3 = __Pyx_PyObject_GetAttrStr(__pyx_t_2, __pyx_n_s_Coordinate); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 294, __pyx_L4_error)
+        __Pyx_GOTREF(__pyx_t_3);
+        __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
+        __pyx_t_2 = __Pyx_PyObject_Call(__pyx_t_3, __pyx_tuple__80, NULL); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 294, __pyx_L4_error)
+        __Pyx_GOTREF(__pyx_t_2);
+        __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
+        __pyx_t_3 = __Pyx_GetModuleGlobalName(__pyx_n_s_AATC_Coordinate); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 294, __pyx_L4_error)
+        __Pyx_GOTREF(__pyx_t_3);
+        __pyx_t_1 = __Pyx_PyObject_GetAttrStr(__pyx_t_3, __pyx_n_s_Coordinate); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 294, __pyx_L4_error)
+        __Pyx_GOTREF(__pyx_t_1);
+        __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
+/* … */
+  __pyx_tuple__80 = PyTuple_Pack(3, __pyx_int_0, __pyx_int_0, __pyx_int_0); if (unlikely(!__pyx_tuple__80)) __PYX_ERR(0, 294, __pyx_L1_error)
+  __Pyx_GOTREF(__pyx_tuple__80);
+  __Pyx_GIVEREF(__pyx_tuple__80);
+        __pyx_t_3 = __Pyx_PyObject_Call(__pyx_t_1, __pyx_tuple__81, NULL); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 294, __pyx_L4_error)
+        __Pyx_GOTREF(__pyx_t_3);
+        __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
+        if (PyDict_SetItem(__pyx_d, __pyx_n_s_MinCoords, __pyx_t_2) < 0) __PYX_ERR(0, 294, __pyx_L4_error)
+        __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
+        if (PyDict_SetItem(__pyx_d, __pyx_n_s_MaxCoords, __pyx_t_3) < 0) __PYX_ERR(0, 294, __pyx_L4_error)
+        __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
+  __pyx_tuple__81 = PyTuple_Pack(3, __pyx_int_1, __pyx_int_1, __pyx_int_50); if (unlikely(!__pyx_tuple__81)) __PYX_ERR(0, 294, __pyx_L1_error)
+  __Pyx_GOTREF(__pyx_tuple__81);
+  __Pyx_GIVEREF(__pyx_tuple__81);
+
+295:         MonCamera = Camera(xpixel,ypixel,MinCoords,MaxCoords)
+
        __pyx_t_2 = __Pyx_GetModuleGlobalName(__pyx_n_s_Camera); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 295, __pyx_L4_error)
+        __Pyx_GOTREF(__pyx_t_2);
+        __pyx_t_1 = __Pyx_GetModuleGlobalName(__pyx_n_s_xpixel); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 295, __pyx_L4_error)
+        __Pyx_GOTREF(__pyx_t_1);
+        __pyx_t_4 = __Pyx_GetModuleGlobalName(__pyx_n_s_ypixel); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 295, __pyx_L4_error)
+        __Pyx_GOTREF(__pyx_t_4);
+        __pyx_t_9 = __Pyx_GetModuleGlobalName(__pyx_n_s_MinCoords); if (unlikely(!__pyx_t_9)) __PYX_ERR(0, 295, __pyx_L4_error)
+        __Pyx_GOTREF(__pyx_t_9);
+        __pyx_t_10 = __Pyx_GetModuleGlobalName(__pyx_n_s_MaxCoords); if (unlikely(!__pyx_t_10)) __PYX_ERR(0, 295, __pyx_L4_error)
+        __Pyx_GOTREF(__pyx_t_10);
+        __pyx_t_11 = NULL;
+        __pyx_t_12 = 0;
+        if (CYTHON_UNPACK_METHODS && unlikely(PyMethod_Check(__pyx_t_2))) {
+          __pyx_t_11 = PyMethod_GET_SELF(__pyx_t_2);
+          if (likely(__pyx_t_11)) {
+            PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_2);
+            __Pyx_INCREF(__pyx_t_11);
+            __Pyx_INCREF(function);
+            __Pyx_DECREF_SET(__pyx_t_2, function);
+            __pyx_t_12 = 1;
+          }
+        }
+        #if CYTHON_FAST_PYCALL
+        if (PyFunction_Check(__pyx_t_2)) {
+          PyObject *__pyx_temp[5] = {__pyx_t_11, __pyx_t_1, __pyx_t_4, __pyx_t_9, __pyx_t_10};
+          __pyx_t_3 = __Pyx_PyFunction_FastCall(__pyx_t_2, __pyx_temp+1-__pyx_t_12, 4+__pyx_t_12); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 295, __pyx_L4_error)
+          __Pyx_XDECREF(__pyx_t_11); __pyx_t_11 = 0;
+          __Pyx_GOTREF(__pyx_t_3);
+          __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
+          __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
+          __Pyx_DECREF(__pyx_t_9); __pyx_t_9 = 0;
+          __Pyx_DECREF(__pyx_t_10); __pyx_t_10 = 0;
+        } else
+        #endif
+        #if CYTHON_FAST_PYCCALL
+        if (__Pyx_PyFastCFunction_Check(__pyx_t_2)) {
+          PyObject *__pyx_temp[5] = {__pyx_t_11, __pyx_t_1, __pyx_t_4, __pyx_t_9, __pyx_t_10};
+          __pyx_t_3 = __Pyx_PyCFunction_FastCall(__pyx_t_2, __pyx_temp+1-__pyx_t_12, 4+__pyx_t_12); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 295, __pyx_L4_error)
+          __Pyx_XDECREF(__pyx_t_11); __pyx_t_11 = 0;
+          __Pyx_GOTREF(__pyx_t_3);
+          __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
+          __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
+          __Pyx_DECREF(__pyx_t_9); __pyx_t_9 = 0;
+          __Pyx_DECREF(__pyx_t_10); __pyx_t_10 = 0;
+        } else
+        #endif
+        {
+          __pyx_t_13 = PyTuple_New(4+__pyx_t_12); if (unlikely(!__pyx_t_13)) __PYX_ERR(0, 295, __pyx_L4_error)
+          __Pyx_GOTREF(__pyx_t_13);
+          if (__pyx_t_11) {
+            __Pyx_GIVEREF(__pyx_t_11); PyTuple_SET_ITEM(__pyx_t_13, 0, __pyx_t_11); __pyx_t_11 = NULL;
+          }
+          __Pyx_GIVEREF(__pyx_t_1);
+          PyTuple_SET_ITEM(__pyx_t_13, 0+__pyx_t_12, __pyx_t_1);
+          __Pyx_GIVEREF(__pyx_t_4);
+          PyTuple_SET_ITEM(__pyx_t_13, 1+__pyx_t_12, __pyx_t_4);
+          __Pyx_GIVEREF(__pyx_t_9);
+          PyTuple_SET_ITEM(__pyx_t_13, 2+__pyx_t_12, __pyx_t_9);
+          __Pyx_GIVEREF(__pyx_t_10);
+          PyTuple_SET_ITEM(__pyx_t_13, 3+__pyx_t_12, __pyx_t_10);
+          __pyx_t_1 = 0;
+          __pyx_t_4 = 0;
+          __pyx_t_9 = 0;
+          __pyx_t_10 = 0;
+          __pyx_t_3 = __Pyx_PyObject_Call(__pyx_t_2, __pyx_t_13, NULL); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 295, __pyx_L4_error)
+          __Pyx_GOTREF(__pyx_t_3);
+          __Pyx_DECREF(__pyx_t_13); __pyx_t_13 = 0;
+        }
+        __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
+        if (PyDict_SetItem(__pyx_d, __pyx_n_s_MonCamera, __pyx_t_3) < 0) __PYX_ERR(0, 295, __pyx_L4_error)
+        __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
+
+296:         while True:
+
        while (1) {
+
+297:             MonCamera.ResetDrawObject()
+
          __pyx_t_2 = __Pyx_GetModuleGlobalName(__pyx_n_s_MonCamera); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 297, __pyx_L4_error)
+          __Pyx_GOTREF(__pyx_t_2);
+          __pyx_t_13 = __Pyx_PyObject_GetAttrStr(__pyx_t_2, __pyx_n_s_ResetDrawObject); if (unlikely(!__pyx_t_13)) __PYX_ERR(0, 297, __pyx_L4_error)
+          __Pyx_GOTREF(__pyx_t_13);
+          __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
+          __pyx_t_2 = NULL;
+          if (CYTHON_UNPACK_METHODS && unlikely(PyMethod_Check(__pyx_t_13))) {
+            __pyx_t_2 = PyMethod_GET_SELF(__pyx_t_13);
+            if (likely(__pyx_t_2)) {
+              PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_13);
+              __Pyx_INCREF(__pyx_t_2);
+              __Pyx_INCREF(function);
+              __Pyx_DECREF_SET(__pyx_t_13, function);
+            }
+          }
+          if (__pyx_t_2) {
+            __pyx_t_3 = __Pyx_PyObject_CallOneArg(__pyx_t_13, __pyx_t_2); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 297, __pyx_L4_error)
+            __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
+          } else {
+            __pyx_t_3 = __Pyx_PyObject_CallNoArg(__pyx_t_13); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 297, __pyx_L4_error)
+          }
+          __Pyx_GOTREF(__pyx_t_3);
+          __Pyx_DECREF(__pyx_t_13); __pyx_t_13 = 0;
+          __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
+
+298:             Sprites = MakeSprites(M)
+
          __pyx_t_13 = __Pyx_GetModuleGlobalName(__pyx_n_s_MakeSprites); if (unlikely(!__pyx_t_13)) __PYX_ERR(0, 298, __pyx_L4_error)
+          __Pyx_GOTREF(__pyx_t_13);
+          __pyx_t_2 = __Pyx_GetModuleGlobalName(__pyx_n_s_M); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 298, __pyx_L4_error)
+          __Pyx_GOTREF(__pyx_t_2);
+          __pyx_t_10 = NULL;
+          if (CYTHON_UNPACK_METHODS && unlikely(PyMethod_Check(__pyx_t_13))) {
+            __pyx_t_10 = PyMethod_GET_SELF(__pyx_t_13);
+            if (likely(__pyx_t_10)) {
+              PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_13);
+              __Pyx_INCREF(__pyx_t_10);
+              __Pyx_INCREF(function);
+              __Pyx_DECREF_SET(__pyx_t_13, function);
+            }
+          }
+          if (!__pyx_t_10) {
+            __pyx_t_3 = __Pyx_PyObject_CallOneArg(__pyx_t_13, __pyx_t_2); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 298, __pyx_L4_error)
+            __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
+            __Pyx_GOTREF(__pyx_t_3);
+          } else {
+            #if CYTHON_FAST_PYCALL
+            if (PyFunction_Check(__pyx_t_13)) {
+              PyObject *__pyx_temp[2] = {__pyx_t_10, __pyx_t_2};
+              __pyx_t_3 = __Pyx_PyFunction_FastCall(__pyx_t_13, __pyx_temp+1-1, 1+1); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 298, __pyx_L4_error)
+              __Pyx_XDECREF(__pyx_t_10); __pyx_t_10 = 0;
+              __Pyx_GOTREF(__pyx_t_3);
+              __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
+            } else
+            #endif
+            #if CYTHON_FAST_PYCCALL
+            if (__Pyx_PyFastCFunction_Check(__pyx_t_13)) {
+              PyObject *__pyx_temp[2] = {__pyx_t_10, __pyx_t_2};
+              __pyx_t_3 = __Pyx_PyCFunction_FastCall(__pyx_t_13, __pyx_temp+1-1, 1+1); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 298, __pyx_L4_error)
+              __Pyx_XDECREF(__pyx_t_10); __pyx_t_10 = 0;
+              __Pyx_GOTREF(__pyx_t_3);
+              __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
+            } else
+            #endif
+            {
+              __pyx_t_9 = PyTuple_New(1+1); if (unlikely(!__pyx_t_9)) __PYX_ERR(0, 298, __pyx_L4_error)
+              __Pyx_GOTREF(__pyx_t_9);
+              __Pyx_GIVEREF(__pyx_t_10); PyTuple_SET_ITEM(__pyx_t_9, 0, __pyx_t_10); __pyx_t_10 = NULL;
+              __Pyx_GIVEREF(__pyx_t_2);
+              PyTuple_SET_ITEM(__pyx_t_9, 0+1, __pyx_t_2);
+              __pyx_t_2 = 0;
+              __pyx_t_3 = __Pyx_PyObject_Call(__pyx_t_13, __pyx_t_9, NULL); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 298, __pyx_L4_error)
+              __Pyx_GOTREF(__pyx_t_3);
+              __Pyx_DECREF(__pyx_t_9); __pyx_t_9 = 0;
+            }
+          }
+          __Pyx_DECREF(__pyx_t_13); __pyx_t_13 = 0;
+          if (PyDict_SetItem(__pyx_d, __pyx_n_s_Sprites, __pyx_t_3) < 0) __PYX_ERR(0, 298, __pyx_L4_error)
+          __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
+
 299:             #font = (None, 30)
+
+300:             for sprite in Sprites:
+
          __pyx_t_3 = __Pyx_GetModuleGlobalName(__pyx_n_s_Sprites); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 300, __pyx_L4_error)
+          __Pyx_GOTREF(__pyx_t_3);
+          if (likely(PyList_CheckExact(__pyx_t_3)) || PyTuple_CheckExact(__pyx_t_3)) {
+            __pyx_t_13 = __pyx_t_3; __Pyx_INCREF(__pyx_t_13); __pyx_t_14 = 0;
+            __pyx_t_15 = NULL;
+          } else {
+            __pyx_t_14 = -1; __pyx_t_13 = PyObject_GetIter(__pyx_t_3); if (unlikely(!__pyx_t_13)) __PYX_ERR(0, 300, __pyx_L4_error)
+            __Pyx_GOTREF(__pyx_t_13);
+            __pyx_t_15 = Py_TYPE(__pyx_t_13)->tp_iternext; if (unlikely(!__pyx_t_15)) __PYX_ERR(0, 300, __pyx_L4_error)
+          }
+          __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
+          for (;;) {
+            if (likely(!__pyx_t_15)) {
+              if (likely(PyList_CheckExact(__pyx_t_13))) {
+                if (__pyx_t_14 >= PyList_GET_SIZE(__pyx_t_13)) break;
+                #if CYTHON_ASSUME_SAFE_MACROS && !CYTHON_AVOID_BORROWED_REFS
+                __pyx_t_3 = PyList_GET_ITEM(__pyx_t_13, __pyx_t_14); __Pyx_INCREF(__pyx_t_3); __pyx_t_14++; if (unlikely(0 < 0)) __PYX_ERR(0, 300, __pyx_L4_error)
+                #else
+                __pyx_t_3 = PySequence_ITEM(__pyx_t_13, __pyx_t_14); __pyx_t_14++; if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 300, __pyx_L4_error)
+                __Pyx_GOTREF(__pyx_t_3);
+                #endif
+              } else {
+                if (__pyx_t_14 >= PyTuple_GET_SIZE(__pyx_t_13)) break;
+                #if CYTHON_ASSUME_SAFE_MACROS && !CYTHON_AVOID_BORROWED_REFS
+                __pyx_t_3 = PyTuple_GET_ITEM(__pyx_t_13, __pyx_t_14); __Pyx_INCREF(__pyx_t_3); __pyx_t_14++; if (unlikely(0 < 0)) __PYX_ERR(0, 300, __pyx_L4_error)
+                #else
+                __pyx_t_3 = PySequence_ITEM(__pyx_t_13, __pyx_t_14); __pyx_t_14++; if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 300, __pyx_L4_error)
+                __Pyx_GOTREF(__pyx_t_3);
+                #endif
+              }
+            } else {
+              __pyx_t_3 = __pyx_t_15(__pyx_t_13);
+              if (unlikely(!__pyx_t_3)) {
+                PyObject* exc_type = PyErr_Occurred();
+                if (exc_type) {
+                  if (likely(exc_type == PyExc_StopIteration || PyErr_GivenExceptionMatches(exc_type, PyExc_StopIteration))) PyErr_Clear();
+                  else __PYX_ERR(0, 300, __pyx_L4_error)
+                }
+                break;
+              }
+              __Pyx_GOTREF(__pyx_t_3);
+            }
+            if (PyDict_SetItem(__pyx_d, __pyx_n_s_sprite, __pyx_t_3) < 0) __PYX_ERR(0, 300, __pyx_L4_error)
+            __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
+/* … */
+          }
+          __Pyx_DECREF(__pyx_t_13); __pyx_t_13 = 0;
+
+301:                 MonCamera.AddDrawObject(sprite,False)
+
            __pyx_t_9 = __Pyx_GetModuleGlobalName(__pyx_n_s_MonCamera); if (unlikely(!__pyx_t_9)) __PYX_ERR(0, 301, __pyx_L4_error)
+            __Pyx_GOTREF(__pyx_t_9);
+            __pyx_t_2 = __Pyx_PyObject_GetAttrStr(__pyx_t_9, __pyx_n_s_AddDrawObject); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 301, __pyx_L4_error)
+            __Pyx_GOTREF(__pyx_t_2);
+            __Pyx_DECREF(__pyx_t_9); __pyx_t_9 = 0;
+            __pyx_t_9 = __Pyx_GetModuleGlobalName(__pyx_n_s_sprite); if (unlikely(!__pyx_t_9)) __PYX_ERR(0, 301, __pyx_L4_error)
+            __Pyx_GOTREF(__pyx_t_9);
+            __pyx_t_10 = NULL;
+            __pyx_t_12 = 0;
+            if (CYTHON_UNPACK_METHODS && unlikely(PyMethod_Check(__pyx_t_2))) {
+              __pyx_t_10 = PyMethod_GET_SELF(__pyx_t_2);
+              if (likely(__pyx_t_10)) {
+                PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_2);
+                __Pyx_INCREF(__pyx_t_10);
+                __Pyx_INCREF(function);
+                __Pyx_DECREF_SET(__pyx_t_2, function);
+                __pyx_t_12 = 1;
+              }
+            }
+            #if CYTHON_FAST_PYCALL
+            if (PyFunction_Check(__pyx_t_2)) {
+              PyObject *__pyx_temp[3] = {__pyx_t_10, __pyx_t_9, Py_False};
+              __pyx_t_3 = __Pyx_PyFunction_FastCall(__pyx_t_2, __pyx_temp+1-__pyx_t_12, 2+__pyx_t_12); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 301, __pyx_L4_error)
+              __Pyx_XDECREF(__pyx_t_10); __pyx_t_10 = 0;
+              __Pyx_GOTREF(__pyx_t_3);
+              __Pyx_DECREF(__pyx_t_9); __pyx_t_9 = 0;
+            } else
+            #endif
+            #if CYTHON_FAST_PYCCALL
+            if (__Pyx_PyFastCFunction_Check(__pyx_t_2)) {
+              PyObject *__pyx_temp[3] = {__pyx_t_10, __pyx_t_9, Py_False};
+              __pyx_t_3 = __Pyx_PyCFunction_FastCall(__pyx_t_2, __pyx_temp+1-__pyx_t_12, 2+__pyx_t_12); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 301, __pyx_L4_error)
+              __Pyx_XDECREF(__pyx_t_10); __pyx_t_10 = 0;
+              __Pyx_GOTREF(__pyx_t_3);
+              __Pyx_DECREF(__pyx_t_9); __pyx_t_9 = 0;
+            } else
+            #endif
+            {
+              __pyx_t_4 = PyTuple_New(2+__pyx_t_12); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 301, __pyx_L4_error)
+              __Pyx_GOTREF(__pyx_t_4);
+              if (__pyx_t_10) {
+                __Pyx_GIVEREF(__pyx_t_10); PyTuple_SET_ITEM(__pyx_t_4, 0, __pyx_t_10); __pyx_t_10 = NULL;
+              }
+              __Pyx_GIVEREF(__pyx_t_9);
+              PyTuple_SET_ITEM(__pyx_t_4, 0+__pyx_t_12, __pyx_t_9);
+              __Pyx_INCREF(Py_False);
+              __Pyx_GIVEREF(Py_False);
+              PyTuple_SET_ITEM(__pyx_t_4, 1+__pyx_t_12, Py_False);
+              __pyx_t_9 = 0;
+              __pyx_t_3 = __Pyx_PyObject_Call(__pyx_t_2, __pyx_t_4, NULL); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 301, __pyx_L4_error)
+              __Pyx_GOTREF(__pyx_t_3);
+              __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
+            }
+            __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
+            __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
+
 302: 
+
+303:             Last_Refresh_Time = time.time()
+
          __pyx_t_3 = __Pyx_GetModuleGlobalName(__pyx_n_s_time); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 303, __pyx_L4_error)
+          __Pyx_GOTREF(__pyx_t_3);
+          __pyx_t_2 = __Pyx_PyObject_GetAttrStr(__pyx_t_3, __pyx_n_s_time); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 303, __pyx_L4_error)
+          __Pyx_GOTREF(__pyx_t_2);
+          __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
+          __pyx_t_3 = NULL;
+          if (CYTHON_UNPACK_METHODS && unlikely(PyMethod_Check(__pyx_t_2))) {
+            __pyx_t_3 = PyMethod_GET_SELF(__pyx_t_2);
+            if (likely(__pyx_t_3)) {
+              PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_2);
+              __Pyx_INCREF(__pyx_t_3);
+              __Pyx_INCREF(function);
+              __Pyx_DECREF_SET(__pyx_t_2, function);
+            }
+          }
+          if (__pyx_t_3) {
+            __pyx_t_13 = __Pyx_PyObject_CallOneArg(__pyx_t_2, __pyx_t_3); if (unlikely(!__pyx_t_13)) __PYX_ERR(0, 303, __pyx_L4_error)
+            __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
+          } else {
+            __pyx_t_13 = __Pyx_PyObject_CallNoArg(__pyx_t_2); if (unlikely(!__pyx_t_13)) __PYX_ERR(0, 303, __pyx_L4_error)
+          }
+          __Pyx_GOTREF(__pyx_t_13);
+          __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
+          if (PyDict_SetItem(__pyx_d, __pyx_n_s_Last_Refresh_Time, __pyx_t_13) < 0) __PYX_ERR(0, 303, __pyx_L4_error)
+          __Pyx_DECREF(__pyx_t_13); __pyx_t_13 = 0;
+
+304:             refresh = False
+
          if (PyDict_SetItem(__pyx_d, __pyx_n_s_refresh, Py_False) < 0) __PYX_ERR(0, 304, __pyx_L4_error)
+
+305:             while not refresh:
+
          while (1) {
+            __pyx_t_13 = __Pyx_GetModuleGlobalName(__pyx_n_s_refresh); if (unlikely(!__pyx_t_13)) __PYX_ERR(0, 305, __pyx_L4_error)
+            __Pyx_GOTREF(__pyx_t_13);
+            __pyx_t_5 = __Pyx_PyObject_IsTrue(__pyx_t_13); if (unlikely(__pyx_t_5 < 0)) __PYX_ERR(0, 305, __pyx_L4_error)
+            __Pyx_DECREF(__pyx_t_13); __pyx_t_13 = 0;
+            __pyx_t_16 = ((!__pyx_t_5) != 0);
+            if (!__pyx_t_16) break;
+
+306:                 MonCamera.CameraWipe()
+
            __pyx_t_2 = __Pyx_GetModuleGlobalName(__pyx_n_s_MonCamera); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 306, __pyx_L4_error)
+            __Pyx_GOTREF(__pyx_t_2);
+            __pyx_t_3 = __Pyx_PyObject_GetAttrStr(__pyx_t_2, __pyx_n_s_CameraWipe); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 306, __pyx_L4_error)
+            __Pyx_GOTREF(__pyx_t_3);
+            __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
+            __pyx_t_2 = NULL;
+            if (CYTHON_UNPACK_METHODS && unlikely(PyMethod_Check(__pyx_t_3))) {
+              __pyx_t_2 = PyMethod_GET_SELF(__pyx_t_3);
+              if (likely(__pyx_t_2)) {
+                PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_3);
+                __Pyx_INCREF(__pyx_t_2);
+                __Pyx_INCREF(function);
+                __Pyx_DECREF_SET(__pyx_t_3, function);
+              }
+            }
+            if (__pyx_t_2) {
+              __pyx_t_13 = __Pyx_PyObject_CallOneArg(__pyx_t_3, __pyx_t_2); if (unlikely(!__pyx_t_13)) __PYX_ERR(0, 306, __pyx_L4_error)
+              __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
+            } else {
+              __pyx_t_13 = __Pyx_PyObject_CallNoArg(__pyx_t_3); if (unlikely(!__pyx_t_13)) __PYX_ERR(0, 306, __pyx_L4_error)
+            }
+            __Pyx_GOTREF(__pyx_t_13);
+            __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
+            __Pyx_DECREF(__pyx_t_13); __pyx_t_13 = 0;
+
+307:                 if time.time() >= (Last_Refresh_Time + Refresh_Delay):
+
            __pyx_t_3 = __Pyx_GetModuleGlobalName(__pyx_n_s_time); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 307, __pyx_L4_error)
+            __Pyx_GOTREF(__pyx_t_3);
+            __pyx_t_2 = __Pyx_PyObject_GetAttrStr(__pyx_t_3, __pyx_n_s_time); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 307, __pyx_L4_error)
+            __Pyx_GOTREF(__pyx_t_2);
+            __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
+            __pyx_t_3 = NULL;
+            if (CYTHON_UNPACK_METHODS && unlikely(PyMethod_Check(__pyx_t_2))) {
+              __pyx_t_3 = PyMethod_GET_SELF(__pyx_t_2);
+              if (likely(__pyx_t_3)) {
+                PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_2);
+                __Pyx_INCREF(__pyx_t_3);
+                __Pyx_INCREF(function);
+                __Pyx_DECREF_SET(__pyx_t_2, function);
+              }
+            }
+            if (__pyx_t_3) {
+              __pyx_t_13 = __Pyx_PyObject_CallOneArg(__pyx_t_2, __pyx_t_3); if (unlikely(!__pyx_t_13)) __PYX_ERR(0, 307, __pyx_L4_error)
+              __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
+            } else {
+              __pyx_t_13 = __Pyx_PyObject_CallNoArg(__pyx_t_2); if (unlikely(!__pyx_t_13)) __PYX_ERR(0, 307, __pyx_L4_error)
+            }
+            __Pyx_GOTREF(__pyx_t_13);
+            __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
+            __pyx_t_2 = __Pyx_GetModuleGlobalName(__pyx_n_s_Last_Refresh_Time); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 307, __pyx_L4_error)
+            __Pyx_GOTREF(__pyx_t_2);
+            __pyx_t_3 = __Pyx_GetModuleGlobalName(__pyx_n_s_Refresh_Delay); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 307, __pyx_L4_error)
+            __Pyx_GOTREF(__pyx_t_3);
+            __pyx_t_4 = PyNumber_Add(__pyx_t_2, __pyx_t_3); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 307, __pyx_L4_error)
+            __Pyx_GOTREF(__pyx_t_4);
+            __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
+            __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
+            __pyx_t_3 = PyObject_RichCompare(__pyx_t_13, __pyx_t_4, Py_GE); __Pyx_XGOTREF(__pyx_t_3); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 307, __pyx_L4_error)
+            __Pyx_DECREF(__pyx_t_13); __pyx_t_13 = 0;
+            __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
+            __pyx_t_16 = __Pyx_PyObject_IsTrue(__pyx_t_3); if (unlikely(__pyx_t_16 < 0)) __PYX_ERR(0, 307, __pyx_L4_error)
+            __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
+            if (__pyx_t_16) {
+/* … */
+            }
+
+308:                     refresh = True
+
              if (PyDict_SetItem(__pyx_d, __pyx_n_s_refresh, Py_True) < 0) __PYX_ERR(0, 308, __pyx_L4_error)
+
+309:                 for event in pygame.event.get():
+
            __pyx_t_4 = __Pyx_GetModuleGlobalName(__pyx_n_s_pygame); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 309, __pyx_L4_error)
+            __Pyx_GOTREF(__pyx_t_4);
+            __pyx_t_13 = __Pyx_PyObject_GetAttrStr(__pyx_t_4, __pyx_n_s_event); if (unlikely(!__pyx_t_13)) __PYX_ERR(0, 309, __pyx_L4_error)
+            __Pyx_GOTREF(__pyx_t_13);
+            __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
+            __pyx_t_4 = __Pyx_PyObject_GetAttrStr(__pyx_t_13, __pyx_n_s_get); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 309, __pyx_L4_error)
+            __Pyx_GOTREF(__pyx_t_4);
+            __Pyx_DECREF(__pyx_t_13); __pyx_t_13 = 0;
+            __pyx_t_13 = NULL;
+            if (CYTHON_UNPACK_METHODS && likely(PyMethod_Check(__pyx_t_4))) {
+              __pyx_t_13 = PyMethod_GET_SELF(__pyx_t_4);
+              if (likely(__pyx_t_13)) {
+                PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_4);
+                __Pyx_INCREF(__pyx_t_13);
+                __Pyx_INCREF(function);
+                __Pyx_DECREF_SET(__pyx_t_4, function);
+              }
+            }
+            if (__pyx_t_13) {
+              __pyx_t_3 = __Pyx_PyObject_CallOneArg(__pyx_t_4, __pyx_t_13); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 309, __pyx_L4_error)
+              __Pyx_DECREF(__pyx_t_13); __pyx_t_13 = 0;
+            } else {
+              __pyx_t_3 = __Pyx_PyObject_CallNoArg(__pyx_t_4); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 309, __pyx_L4_error)
+            }
+            __Pyx_GOTREF(__pyx_t_3);
+            __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
+            if (likely(PyList_CheckExact(__pyx_t_3)) || PyTuple_CheckExact(__pyx_t_3)) {
+              __pyx_t_4 = __pyx_t_3; __Pyx_INCREF(__pyx_t_4); __pyx_t_14 = 0;
+              __pyx_t_15 = NULL;
+            } else {
+              __pyx_t_14 = -1; __pyx_t_4 = PyObject_GetIter(__pyx_t_3); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 309, __pyx_L4_error)
+              __Pyx_GOTREF(__pyx_t_4);
+              __pyx_t_15 = Py_TYPE(__pyx_t_4)->tp_iternext; if (unlikely(!__pyx_t_15)) __PYX_ERR(0, 309, __pyx_L4_error)
+            }
+            __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
+            for (;;) {
+              if (likely(!__pyx_t_15)) {
+                if (likely(PyList_CheckExact(__pyx_t_4))) {
+                  if (__pyx_t_14 >= PyList_GET_SIZE(__pyx_t_4)) break;
+                  #if CYTHON_ASSUME_SAFE_MACROS && !CYTHON_AVOID_BORROWED_REFS
+                  __pyx_t_3 = PyList_GET_ITEM(__pyx_t_4, __pyx_t_14); __Pyx_INCREF(__pyx_t_3); __pyx_t_14++; if (unlikely(0 < 0)) __PYX_ERR(0, 309, __pyx_L4_error)
+                  #else
+                  __pyx_t_3 = PySequence_ITEM(__pyx_t_4, __pyx_t_14); __pyx_t_14++; if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 309, __pyx_L4_error)
+                  __Pyx_GOTREF(__pyx_t_3);
+                  #endif
+                } else {
+                  if (__pyx_t_14 >= PyTuple_GET_SIZE(__pyx_t_4)) break;
+                  #if CYTHON_ASSUME_SAFE_MACROS && !CYTHON_AVOID_BORROWED_REFS
+                  __pyx_t_3 = PyTuple_GET_ITEM(__pyx_t_4, __pyx_t_14); __Pyx_INCREF(__pyx_t_3); __pyx_t_14++; if (unlikely(0 < 0)) __PYX_ERR(0, 309, __pyx_L4_error)
+                  #else
+                  __pyx_t_3 = PySequence_ITEM(__pyx_t_4, __pyx_t_14); __pyx_t_14++; if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 309, __pyx_L4_error)
+                  __Pyx_GOTREF(__pyx_t_3);
+                  #endif
+                }
+              } else {
+                __pyx_t_3 = __pyx_t_15(__pyx_t_4);
+                if (unlikely(!__pyx_t_3)) {
+                  PyObject* exc_type = PyErr_Occurred();
+                  if (exc_type) {
+                    if (likely(exc_type == PyExc_StopIteration || PyErr_GivenExceptionMatches(exc_type, PyExc_StopIteration))) PyErr_Clear();
+                    else __PYX_ERR(0, 309, __pyx_L4_error)
+                  }
+                  break;
+                }
+                __Pyx_GOTREF(__pyx_t_3);
+              }
+              if (PyDict_SetItem(__pyx_d, __pyx_n_s_event, __pyx_t_3) < 0) __PYX_ERR(0, 309, __pyx_L4_error)
+              __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
+/* … */
+            }
+            __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
+
+310:                     if event.type == pygame.QUIT:
+
              __pyx_t_3 = __Pyx_GetModuleGlobalName(__pyx_n_s_event); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 310, __pyx_L4_error)
+              __Pyx_GOTREF(__pyx_t_3);
+              __pyx_t_13 = __Pyx_PyObject_GetAttrStr(__pyx_t_3, __pyx_n_s_type); if (unlikely(!__pyx_t_13)) __PYX_ERR(0, 310, __pyx_L4_error)
+              __Pyx_GOTREF(__pyx_t_13);
+              __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
+              __pyx_t_3 = __Pyx_GetModuleGlobalName(__pyx_n_s_pygame); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 310, __pyx_L4_error)
+              __Pyx_GOTREF(__pyx_t_3);
+              __pyx_t_2 = __Pyx_PyObject_GetAttrStr(__pyx_t_3, __pyx_n_s_QUIT); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 310, __pyx_L4_error)
+              __Pyx_GOTREF(__pyx_t_2);
+              __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
+              __pyx_t_3 = PyObject_RichCompare(__pyx_t_13, __pyx_t_2, Py_EQ); __Pyx_XGOTREF(__pyx_t_3); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 310, __pyx_L4_error)
+              __Pyx_DECREF(__pyx_t_13); __pyx_t_13 = 0;
+              __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
+              __pyx_t_16 = __Pyx_PyObject_IsTrue(__pyx_t_3); if (unlikely(__pyx_t_16 < 0)) __PYX_ERR(0, 310, __pyx_L4_error)
+              __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
+              if (__pyx_t_16) {
+/* … */
+                goto __pyx_L21;
+              }
+
+311:                         print("Monitor exit was called")
+
                if (__Pyx_PrintOne(0, __pyx_kp_s_Monitor_exit_was_called) < 0) __PYX_ERR(0, 311, __pyx_L4_error)
+
+312:                         pygame.quit()
+
                __pyx_t_2 = __Pyx_GetModuleGlobalName(__pyx_n_s_pygame); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 312, __pyx_L4_error)
+                __Pyx_GOTREF(__pyx_t_2);
+                __pyx_t_13 = __Pyx_PyObject_GetAttrStr(__pyx_t_2, __pyx_n_s_quit); if (unlikely(!__pyx_t_13)) __PYX_ERR(0, 312, __pyx_L4_error)
+                __Pyx_GOTREF(__pyx_t_13);
+                __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
+                __pyx_t_2 = NULL;
+                if (CYTHON_UNPACK_METHODS && unlikely(PyMethod_Check(__pyx_t_13))) {
+                  __pyx_t_2 = PyMethod_GET_SELF(__pyx_t_13);
+                  if (likely(__pyx_t_2)) {
+                    PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_13);
+                    __Pyx_INCREF(__pyx_t_2);
+                    __Pyx_INCREF(function);
+                    __Pyx_DECREF_SET(__pyx_t_13, function);
+                  }
+                }
+                if (__pyx_t_2) {
+                  __pyx_t_3 = __Pyx_PyObject_CallOneArg(__pyx_t_13, __pyx_t_2); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 312, __pyx_L4_error)
+                  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
+                } else {
+                  __pyx_t_3 = __Pyx_PyObject_CallNoArg(__pyx_t_13); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 312, __pyx_L4_error)
+                }
+                __Pyx_GOTREF(__pyx_t_3);
+                __Pyx_DECREF(__pyx_t_13); __pyx_t_13 = 0;
+                __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
+
+313:                         sys.exit()
+
                __pyx_t_13 = __Pyx_GetModuleGlobalName(__pyx_n_s_sys); if (unlikely(!__pyx_t_13)) __PYX_ERR(0, 313, __pyx_L4_error)
+                __Pyx_GOTREF(__pyx_t_13);
+                __pyx_t_2 = __Pyx_PyObject_GetAttrStr(__pyx_t_13, __pyx_n_s_exit); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 313, __pyx_L4_error)
+                __Pyx_GOTREF(__pyx_t_2);
+                __Pyx_DECREF(__pyx_t_13); __pyx_t_13 = 0;
+                __pyx_t_13 = NULL;
+                if (CYTHON_UNPACK_METHODS && unlikely(PyMethod_Check(__pyx_t_2))) {
+                  __pyx_t_13 = PyMethod_GET_SELF(__pyx_t_2);
+                  if (likely(__pyx_t_13)) {
+                    PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_2);
+                    __Pyx_INCREF(__pyx_t_13);
+                    __Pyx_INCREF(function);
+                    __Pyx_DECREF_SET(__pyx_t_2, function);
+                  }
+                }
+                if (__pyx_t_13) {
+                  __pyx_t_3 = __Pyx_PyObject_CallOneArg(__pyx_t_2, __pyx_t_13); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 313, __pyx_L4_error)
+                  __Pyx_DECREF(__pyx_t_13); __pyx_t_13 = 0;
+                } else {
+                  __pyx_t_3 = __Pyx_PyObject_CallNoArg(__pyx_t_2); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 313, __pyx_L4_error)
+                }
+                __Pyx_GOTREF(__pyx_t_3);
+                __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
+                __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
+
 314: 
+
+315:                     elif event.type == pygame.MOUSEBUTTONDOWN:
+
              __pyx_t_3 = __Pyx_GetModuleGlobalName(__pyx_n_s_event); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 315, __pyx_L4_error)
+              __Pyx_GOTREF(__pyx_t_3);
+              __pyx_t_2 = __Pyx_PyObject_GetAttrStr(__pyx_t_3, __pyx_n_s_type); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 315, __pyx_L4_error)
+              __Pyx_GOTREF(__pyx_t_2);
+              __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
+              __pyx_t_3 = __Pyx_GetModuleGlobalName(__pyx_n_s_pygame); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 315, __pyx_L4_error)
+              __Pyx_GOTREF(__pyx_t_3);
+              __pyx_t_13 = __Pyx_PyObject_GetAttrStr(__pyx_t_3, __pyx_n_s_MOUSEBUTTONDOWN); if (unlikely(!__pyx_t_13)) __PYX_ERR(0, 315, __pyx_L4_error)
+              __Pyx_GOTREF(__pyx_t_13);
+              __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
+              __pyx_t_3 = PyObject_RichCompare(__pyx_t_2, __pyx_t_13, Py_EQ); __Pyx_XGOTREF(__pyx_t_3); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 315, __pyx_L4_error)
+              __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
+              __Pyx_DECREF(__pyx_t_13); __pyx_t_13 = 0;
+              __pyx_t_16 = __Pyx_PyObject_IsTrue(__pyx_t_3); if (unlikely(__pyx_t_16 < 0)) __PYX_ERR(0, 315, __pyx_L4_error)
+              __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
+              if (__pyx_t_16) {
+/* … */
+                goto __pyx_L21;
+              }
+
+316:                         print("Camera details")                  #Mainly for debugging
+
                if (__Pyx_PrintOne(0, __pyx_kp_s_Camera_details) < 0) __PYX_ERR(0, 316, __pyx_L4_error)
+
+317:                         print(MonCamera.GetZoom())
+
                __pyx_t_13 = __Pyx_GetModuleGlobalName(__pyx_n_s_MonCamera); if (unlikely(!__pyx_t_13)) __PYX_ERR(0, 317, __pyx_L4_error)
+                __Pyx_GOTREF(__pyx_t_13);
+                __pyx_t_2 = __Pyx_PyObject_GetAttrStr(__pyx_t_13, __pyx_n_s_GetZoom); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 317, __pyx_L4_error)
+                __Pyx_GOTREF(__pyx_t_2);
+                __Pyx_DECREF(__pyx_t_13); __pyx_t_13 = 0;
+                __pyx_t_13 = NULL;
+                if (CYTHON_UNPACK_METHODS && unlikely(PyMethod_Check(__pyx_t_2))) {
+                  __pyx_t_13 = PyMethod_GET_SELF(__pyx_t_2);
+                  if (likely(__pyx_t_13)) {
+                    PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_2);
+                    __Pyx_INCREF(__pyx_t_13);
+                    __Pyx_INCREF(function);
+                    __Pyx_DECREF_SET(__pyx_t_2, function);
+                  }
+                }
+                if (__pyx_t_13) {
+                  __pyx_t_3 = __Pyx_PyObject_CallOneArg(__pyx_t_2, __pyx_t_13); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 317, __pyx_L4_error)
+                  __Pyx_DECREF(__pyx_t_13); __pyx_t_13 = 0;
+                } else {
+                  __pyx_t_3 = __Pyx_PyObject_CallNoArg(__pyx_t_2); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 317, __pyx_L4_error)
+                }
+                __Pyx_GOTREF(__pyx_t_3);
+                __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
+                if (__Pyx_PrintOne(0, __pyx_t_3) < 0) __PYX_ERR(0, 317, __pyx_L4_error)
+                __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
+
+318:                         print(MonCamera.CameraCoord.Get_X())
+
                __pyx_t_2 = __Pyx_GetModuleGlobalName(__pyx_n_s_MonCamera); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 318, __pyx_L4_error)
+                __Pyx_GOTREF(__pyx_t_2);
+                __pyx_t_13 = __Pyx_PyObject_GetAttrStr(__pyx_t_2, __pyx_n_s_CameraCoord); if (unlikely(!__pyx_t_13)) __PYX_ERR(0, 318, __pyx_L4_error)
+                __Pyx_GOTREF(__pyx_t_13);
+                __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
+                __pyx_t_2 = __Pyx_PyObject_GetAttrStr(__pyx_t_13, __pyx_n_s_Get_X); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 318, __pyx_L4_error)
+                __Pyx_GOTREF(__pyx_t_2);
+                __Pyx_DECREF(__pyx_t_13); __pyx_t_13 = 0;
+                __pyx_t_13 = NULL;
+                if (CYTHON_UNPACK_METHODS && likely(PyMethod_Check(__pyx_t_2))) {
+                  __pyx_t_13 = PyMethod_GET_SELF(__pyx_t_2);
+                  if (likely(__pyx_t_13)) {
+                    PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_2);
+                    __Pyx_INCREF(__pyx_t_13);
+                    __Pyx_INCREF(function);
+                    __Pyx_DECREF_SET(__pyx_t_2, function);
+                  }
+                }
+                if (__pyx_t_13) {
+                  __pyx_t_3 = __Pyx_PyObject_CallOneArg(__pyx_t_2, __pyx_t_13); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 318, __pyx_L4_error)
+                  __Pyx_DECREF(__pyx_t_13); __pyx_t_13 = 0;
+                } else {
+                  __pyx_t_3 = __Pyx_PyObject_CallNoArg(__pyx_t_2); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 318, __pyx_L4_error)
+                }
+                __Pyx_GOTREF(__pyx_t_3);
+                __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
+                if (__Pyx_PrintOne(0, __pyx_t_3) < 0) __PYX_ERR(0, 318, __pyx_L4_error)
+                __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
+
+319:                         print(MonCamera.CameraCoord.Get_Y())
+
                __pyx_t_2 = __Pyx_GetModuleGlobalName(__pyx_n_s_MonCamera); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 319, __pyx_L4_error)
+                __Pyx_GOTREF(__pyx_t_2);
+                __pyx_t_13 = __Pyx_PyObject_GetAttrStr(__pyx_t_2, __pyx_n_s_CameraCoord); if (unlikely(!__pyx_t_13)) __PYX_ERR(0, 319, __pyx_L4_error)
+                __Pyx_GOTREF(__pyx_t_13);
+                __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
+                __pyx_t_2 = __Pyx_PyObject_GetAttrStr(__pyx_t_13, __pyx_n_s_Get_Y); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 319, __pyx_L4_error)
+                __Pyx_GOTREF(__pyx_t_2);
+                __Pyx_DECREF(__pyx_t_13); __pyx_t_13 = 0;
+                __pyx_t_13 = NULL;
+                if (CYTHON_UNPACK_METHODS && likely(PyMethod_Check(__pyx_t_2))) {
+                  __pyx_t_13 = PyMethod_GET_SELF(__pyx_t_2);
+                  if (likely(__pyx_t_13)) {
+                    PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_2);
+                    __Pyx_INCREF(__pyx_t_13);
+                    __Pyx_INCREF(function);
+                    __Pyx_DECREF_SET(__pyx_t_2, function);
+                  }
+                }
+                if (__pyx_t_13) {
+                  __pyx_t_3 = __Pyx_PyObject_CallOneArg(__pyx_t_2, __pyx_t_13); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 319, __pyx_L4_error)
+                  __Pyx_DECREF(__pyx_t_13); __pyx_t_13 = 0;
+                } else {
+                  __pyx_t_3 = __Pyx_PyObject_CallNoArg(__pyx_t_2); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 319, __pyx_L4_error)
+                }
+                __Pyx_GOTREF(__pyx_t_3);
+                __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
+                if (__Pyx_PrintOne(0, __pyx_t_3) < 0) __PYX_ERR(0, 319, __pyx_L4_error)
+                __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
+
+320:                         print(MonCamera.CameraCoord.Get_XSize())
+
                __pyx_t_2 = __Pyx_GetModuleGlobalName(__pyx_n_s_MonCamera); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 320, __pyx_L4_error)
+                __Pyx_GOTREF(__pyx_t_2);
+                __pyx_t_13 = __Pyx_PyObject_GetAttrStr(__pyx_t_2, __pyx_n_s_CameraCoord); if (unlikely(!__pyx_t_13)) __PYX_ERR(0, 320, __pyx_L4_error)
+                __Pyx_GOTREF(__pyx_t_13);
+                __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
+                __pyx_t_2 = __Pyx_PyObject_GetAttrStr(__pyx_t_13, __pyx_n_s_Get_XSize); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 320, __pyx_L4_error)
+                __Pyx_GOTREF(__pyx_t_2);
+                __Pyx_DECREF(__pyx_t_13); __pyx_t_13 = 0;
+                __pyx_t_13 = NULL;
+                if (CYTHON_UNPACK_METHODS && likely(PyMethod_Check(__pyx_t_2))) {
+                  __pyx_t_13 = PyMethod_GET_SELF(__pyx_t_2);
+                  if (likely(__pyx_t_13)) {
+                    PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_2);
+                    __Pyx_INCREF(__pyx_t_13);
+                    __Pyx_INCREF(function);
+                    __Pyx_DECREF_SET(__pyx_t_2, function);
+                  }
+                }
+                if (__pyx_t_13) {
+                  __pyx_t_3 = __Pyx_PyObject_CallOneArg(__pyx_t_2, __pyx_t_13); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 320, __pyx_L4_error)
+                  __Pyx_DECREF(__pyx_t_13); __pyx_t_13 = 0;
+                } else {
+                  __pyx_t_3 = __Pyx_PyObject_CallNoArg(__pyx_t_2); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 320, __pyx_L4_error)
+                }
+                __Pyx_GOTREF(__pyx_t_3);
+                __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
+                if (__Pyx_PrintOne(0, __pyx_t_3) < 0) __PYX_ERR(0, 320, __pyx_L4_error)
+                __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
+
+321:                         print(MonCamera.CameraCoord.Get_YSize())
+
                __pyx_t_2 = __Pyx_GetModuleGlobalName(__pyx_n_s_MonCamera); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 321, __pyx_L4_error)
+                __Pyx_GOTREF(__pyx_t_2);
+                __pyx_t_13 = __Pyx_PyObject_GetAttrStr(__pyx_t_2, __pyx_n_s_CameraCoord); if (unlikely(!__pyx_t_13)) __PYX_ERR(0, 321, __pyx_L4_error)
+                __Pyx_GOTREF(__pyx_t_13);
+                __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
+                __pyx_t_2 = __Pyx_PyObject_GetAttrStr(__pyx_t_13, __pyx_n_s_Get_YSize); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 321, __pyx_L4_error)
+                __Pyx_GOTREF(__pyx_t_2);
+                __Pyx_DECREF(__pyx_t_13); __pyx_t_13 = 0;
+                __pyx_t_13 = NULL;
+                if (CYTHON_UNPACK_METHODS && likely(PyMethod_Check(__pyx_t_2))) {
+                  __pyx_t_13 = PyMethod_GET_SELF(__pyx_t_2);
+                  if (likely(__pyx_t_13)) {
+                    PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_2);
+                    __Pyx_INCREF(__pyx_t_13);
+                    __Pyx_INCREF(function);
+                    __Pyx_DECREF_SET(__pyx_t_2, function);
+                  }
+                }
+                if (__pyx_t_13) {
+                  __pyx_t_3 = __Pyx_PyObject_CallOneArg(__pyx_t_2, __pyx_t_13); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 321, __pyx_L4_error)
+                  __Pyx_DECREF(__pyx_t_13); __pyx_t_13 = 0;
+                } else {
+                  __pyx_t_3 = __Pyx_PyObject_CallNoArg(__pyx_t_2); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 321, __pyx_L4_error)
+                }
+                __Pyx_GOTREF(__pyx_t_3);
+                __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
+                if (__Pyx_PrintOne(0, __pyx_t_3) < 0) __PYX_ERR(0, 321, __pyx_L4_error)
+                __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
+
+322:                         print(len(MonCamera.DrawObjects))
+
                __pyx_t_3 = __Pyx_GetModuleGlobalName(__pyx_n_s_MonCamera); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 322, __pyx_L4_error)
+                __Pyx_GOTREF(__pyx_t_3);
+                __pyx_t_2 = __Pyx_PyObject_GetAttrStr(__pyx_t_3, __pyx_n_s_DrawObjects); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 322, __pyx_L4_error)
+                __Pyx_GOTREF(__pyx_t_2);
+                __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
+                __pyx_t_17 = PyObject_Length(__pyx_t_2); if (unlikely(__pyx_t_17 == -1)) __PYX_ERR(0, 322, __pyx_L4_error)
+                __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
+                __pyx_t_2 = PyInt_FromSsize_t(__pyx_t_17); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 322, __pyx_L4_error)
+                __Pyx_GOTREF(__pyx_t_2);
+                if (__Pyx_PrintOne(0, __pyx_t_2) < 0) __PYX_ERR(0, 322, __pyx_L4_error)
+                __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
+
+323:                         print("FPS:"+str(clock.get_fps()))
+
                __pyx_t_3 = __Pyx_GetModuleGlobalName(__pyx_n_s_clock); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 323, __pyx_L4_error)
+                __Pyx_GOTREF(__pyx_t_3);
+                __pyx_t_13 = __Pyx_PyObject_GetAttrStr(__pyx_t_3, __pyx_n_s_get_fps); if (unlikely(!__pyx_t_13)) __PYX_ERR(0, 323, __pyx_L4_error)
+                __Pyx_GOTREF(__pyx_t_13);
+                __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
+                __pyx_t_3 = NULL;
+                if (CYTHON_UNPACK_METHODS && unlikely(PyMethod_Check(__pyx_t_13))) {
+                  __pyx_t_3 = PyMethod_GET_SELF(__pyx_t_13);
+                  if (likely(__pyx_t_3)) {
+                    PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_13);
+                    __Pyx_INCREF(__pyx_t_3);
+                    __Pyx_INCREF(function);
+                    __Pyx_DECREF_SET(__pyx_t_13, function);
+                  }
+                }
+                if (__pyx_t_3) {
+                  __pyx_t_2 = __Pyx_PyObject_CallOneArg(__pyx_t_13, __pyx_t_3); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 323, __pyx_L4_error)
+                  __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
+                } else {
+                  __pyx_t_2 = __Pyx_PyObject_CallNoArg(__pyx_t_13); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 323, __pyx_L4_error)
+                }
+                __Pyx_GOTREF(__pyx_t_2);
+                __Pyx_DECREF(__pyx_t_13); __pyx_t_13 = 0;
+                __pyx_t_13 = PyTuple_New(1); if (unlikely(!__pyx_t_13)) __PYX_ERR(0, 323, __pyx_L4_error)
+                __Pyx_GOTREF(__pyx_t_13);
+                __Pyx_GIVEREF(__pyx_t_2);
+                PyTuple_SET_ITEM(__pyx_t_13, 0, __pyx_t_2);
+                __pyx_t_2 = 0;
+                __pyx_t_2 = __Pyx_PyObject_Call(((PyObject *)(&PyString_Type)), __pyx_t_13, NULL); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 323, __pyx_L4_error)
+                __Pyx_GOTREF(__pyx_t_2);
+                __Pyx_DECREF(__pyx_t_13); __pyx_t_13 = 0;
+                __pyx_t_13 = PyNumber_Add(__pyx_kp_s_FPS, __pyx_t_2); if (unlikely(!__pyx_t_13)) __PYX_ERR(0, 323, __pyx_L4_error)
+                __Pyx_GOTREF(__pyx_t_13);
+                __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
+                if (__Pyx_PrintOne(0, __pyx_t_13) < 0) __PYX_ERR(0, 323, __pyx_L4_error)
+                __Pyx_DECREF(__pyx_t_13); __pyx_t_13 = 0;
+
+324:                     elif event.type == pygame.KEYDOWN:
+
              __pyx_t_13 = __Pyx_GetModuleGlobalName(__pyx_n_s_event); if (unlikely(!__pyx_t_13)) __PYX_ERR(0, 324, __pyx_L4_error)
+              __Pyx_GOTREF(__pyx_t_13);
+              __pyx_t_2 = __Pyx_PyObject_GetAttrStr(__pyx_t_13, __pyx_n_s_type); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 324, __pyx_L4_error)
+              __Pyx_GOTREF(__pyx_t_2);
+              __Pyx_DECREF(__pyx_t_13); __pyx_t_13 = 0;
+              __pyx_t_13 = __Pyx_GetModuleGlobalName(__pyx_n_s_pygame); if (unlikely(!__pyx_t_13)) __PYX_ERR(0, 324, __pyx_L4_error)
+              __Pyx_GOTREF(__pyx_t_13);
+              __pyx_t_3 = __Pyx_PyObject_GetAttrStr(__pyx_t_13, __pyx_n_s_KEYDOWN); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 324, __pyx_L4_error)
+              __Pyx_GOTREF(__pyx_t_3);
+              __Pyx_DECREF(__pyx_t_13); __pyx_t_13 = 0;
+              __pyx_t_13 = PyObject_RichCompare(__pyx_t_2, __pyx_t_3, Py_EQ); __Pyx_XGOTREF(__pyx_t_13); if (unlikely(!__pyx_t_13)) __PYX_ERR(0, 324, __pyx_L4_error)
+              __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
+              __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
+              __pyx_t_16 = __Pyx_PyObject_IsTrue(__pyx_t_13); if (unlikely(__pyx_t_16 < 0)) __PYX_ERR(0, 324, __pyx_L4_error)
+              __Pyx_DECREF(__pyx_t_13); __pyx_t_13 = 0;
+              if (__pyx_t_16) {
+              }
+              __pyx_L21:;
+
 325:                         pass
+
 326: 
+
 327: 
+
+328:                 CameraCoord = MonCamera.Get_Coord()
+
            __pyx_t_13 = __Pyx_GetModuleGlobalName(__pyx_n_s_MonCamera); if (unlikely(!__pyx_t_13)) __PYX_ERR(0, 328, __pyx_L4_error)
+            __Pyx_GOTREF(__pyx_t_13);
+            __pyx_t_3 = __Pyx_PyObject_GetAttrStr(__pyx_t_13, __pyx_n_s_Get_Coord); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 328, __pyx_L4_error)
+            __Pyx_GOTREF(__pyx_t_3);
+            __Pyx_DECREF(__pyx_t_13); __pyx_t_13 = 0;
+            __pyx_t_13 = NULL;
+            if (CYTHON_UNPACK_METHODS && unlikely(PyMethod_Check(__pyx_t_3))) {
+              __pyx_t_13 = PyMethod_GET_SELF(__pyx_t_3);
+              if (likely(__pyx_t_13)) {
+                PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_3);
+                __Pyx_INCREF(__pyx_t_13);
+                __Pyx_INCREF(function);
+                __Pyx_DECREF_SET(__pyx_t_3, function);
+              }
+            }
+            if (__pyx_t_13) {
+              __pyx_t_4 = __Pyx_PyObject_CallOneArg(__pyx_t_3, __pyx_t_13); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 328, __pyx_L4_error)
+              __Pyx_DECREF(__pyx_t_13); __pyx_t_13 = 0;
+            } else {
+              __pyx_t_4 = __Pyx_PyObject_CallNoArg(__pyx_t_3); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 328, __pyx_L4_error)
+            }
+            __Pyx_GOTREF(__pyx_t_4);
+            __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
+            if (PyDict_SetItem(__pyx_d, __pyx_n_s_CameraCoord, __pyx_t_4) < 0) __PYX_ERR(0, 328, __pyx_L4_error)
+            __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
+
+329:                 if pressed()[pygame.K_w]:   #Shift camera
+
            __pyx_t_3 = __Pyx_GetModuleGlobalName(__pyx_n_s_pressed); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 329, __pyx_L4_error)
+            __Pyx_GOTREF(__pyx_t_3);
+            __pyx_t_13 = NULL;
+            if (CYTHON_UNPACK_METHODS && unlikely(PyMethod_Check(__pyx_t_3))) {
+              __pyx_t_13 = PyMethod_GET_SELF(__pyx_t_3);
+              if (likely(__pyx_t_13)) {
+                PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_3);
+                __Pyx_INCREF(__pyx_t_13);
+                __Pyx_INCREF(function);
+                __Pyx_DECREF_SET(__pyx_t_3, function);
+              }
+            }
+            if (__pyx_t_13) {
+              __pyx_t_4 = __Pyx_PyObject_CallOneArg(__pyx_t_3, __pyx_t_13); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 329, __pyx_L4_error)
+              __Pyx_DECREF(__pyx_t_13); __pyx_t_13 = 0;
+            } else {
+              __pyx_t_4 = __Pyx_PyObject_CallNoArg(__pyx_t_3); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 329, __pyx_L4_error)
+            }
+            __Pyx_GOTREF(__pyx_t_4);
+            __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
+            __pyx_t_3 = __Pyx_GetModuleGlobalName(__pyx_n_s_pygame); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 329, __pyx_L4_error)
+            __Pyx_GOTREF(__pyx_t_3);
+            __pyx_t_13 = __Pyx_PyObject_GetAttrStr(__pyx_t_3, __pyx_n_s_K_w); if (unlikely(!__pyx_t_13)) __PYX_ERR(0, 329, __pyx_L4_error)
+            __Pyx_GOTREF(__pyx_t_13);
+            __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
+            __pyx_t_3 = PyObject_GetItem(__pyx_t_4, __pyx_t_13); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 329, __pyx_L4_error)
+            __Pyx_GOTREF(__pyx_t_3);
+            __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
+            __Pyx_DECREF(__pyx_t_13); __pyx_t_13 = 0;
+            __pyx_t_16 = __Pyx_PyObject_IsTrue(__pyx_t_3); if (unlikely(__pyx_t_16 < 0)) __PYX_ERR(0, 329, __pyx_L4_error)
+            __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
+            if (__pyx_t_16) {
+/* … */
+            }
+
+330:                     MonCamera.IncrementCameraCoordY(-0.01*CameraCoord.Get_XSize())  #/ as Greater zoom means need more fidelety
+
              __pyx_t_13 = __Pyx_GetModuleGlobalName(__pyx_n_s_MonCamera); if (unlikely(!__pyx_t_13)) __PYX_ERR(0, 330, __pyx_L4_error)
+              __Pyx_GOTREF(__pyx_t_13);
+              __pyx_t_4 = __Pyx_PyObject_GetAttrStr(__pyx_t_13, __pyx_n_s_IncrementCameraCoordY); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 330, __pyx_L4_error)
+              __Pyx_GOTREF(__pyx_t_4);
+              __Pyx_DECREF(__pyx_t_13); __pyx_t_13 = 0;
+              __pyx_t_2 = __Pyx_GetModuleGlobalName(__pyx_n_s_CameraCoord); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 330, __pyx_L4_error)
+              __Pyx_GOTREF(__pyx_t_2);
+              __pyx_t_9 = __Pyx_PyObject_GetAttrStr(__pyx_t_2, __pyx_n_s_Get_XSize); if (unlikely(!__pyx_t_9)) __PYX_ERR(0, 330, __pyx_L4_error)
+              __Pyx_GOTREF(__pyx_t_9);
+              __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
+              __pyx_t_2 = NULL;
+              if (CYTHON_UNPACK_METHODS && unlikely(PyMethod_Check(__pyx_t_9))) {
+                __pyx_t_2 = PyMethod_GET_SELF(__pyx_t_9);
+                if (likely(__pyx_t_2)) {
+                  PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_9);
+                  __Pyx_INCREF(__pyx_t_2);
+                  __Pyx_INCREF(function);
+                  __Pyx_DECREF_SET(__pyx_t_9, function);
+                }
+              }
+              if (__pyx_t_2) {
+                __pyx_t_13 = __Pyx_PyObject_CallOneArg(__pyx_t_9, __pyx_t_2); if (unlikely(!__pyx_t_13)) __PYX_ERR(0, 330, __pyx_L4_error)
+                __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
+              } else {
+                __pyx_t_13 = __Pyx_PyObject_CallNoArg(__pyx_t_9); if (unlikely(!__pyx_t_13)) __PYX_ERR(0, 330, __pyx_L4_error)
+              }
+              __Pyx_GOTREF(__pyx_t_13);
+              __Pyx_DECREF(__pyx_t_9); __pyx_t_9 = 0;
+              __pyx_t_9 = PyNumber_Multiply(__pyx_float_neg_0_01, __pyx_t_13); if (unlikely(!__pyx_t_9)) __PYX_ERR(0, 330, __pyx_L4_error)
+              __Pyx_GOTREF(__pyx_t_9);
+              __Pyx_DECREF(__pyx_t_13); __pyx_t_13 = 0;
+              __pyx_t_13 = NULL;
+              if (CYTHON_UNPACK_METHODS && unlikely(PyMethod_Check(__pyx_t_4))) {
+                __pyx_t_13 = PyMethod_GET_SELF(__pyx_t_4);
+                if (likely(__pyx_t_13)) {
+                  PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_4);
+                  __Pyx_INCREF(__pyx_t_13);
+                  __Pyx_INCREF(function);
+                  __Pyx_DECREF_SET(__pyx_t_4, function);
+                }
+              }
+              if (!__pyx_t_13) {
+                __pyx_t_3 = __Pyx_PyObject_CallOneArg(__pyx_t_4, __pyx_t_9); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 330, __pyx_L4_error)
+                __Pyx_DECREF(__pyx_t_9); __pyx_t_9 = 0;
+                __Pyx_GOTREF(__pyx_t_3);
+              } else {
+                #if CYTHON_FAST_PYCALL
+                if (PyFunction_Check(__pyx_t_4)) {
+                  PyObject *__pyx_temp[2] = {__pyx_t_13, __pyx_t_9};
+                  __pyx_t_3 = __Pyx_PyFunction_FastCall(__pyx_t_4, __pyx_temp+1-1, 1+1); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 330, __pyx_L4_error)
+                  __Pyx_XDECREF(__pyx_t_13); __pyx_t_13 = 0;
+                  __Pyx_GOTREF(__pyx_t_3);
+                  __Pyx_DECREF(__pyx_t_9); __pyx_t_9 = 0;
+                } else
+                #endif
+                #if CYTHON_FAST_PYCCALL
+                if (__Pyx_PyFastCFunction_Check(__pyx_t_4)) {
+                  PyObject *__pyx_temp[2] = {__pyx_t_13, __pyx_t_9};
+                  __pyx_t_3 = __Pyx_PyCFunction_FastCall(__pyx_t_4, __pyx_temp+1-1, 1+1); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 330, __pyx_L4_error)
+                  __Pyx_XDECREF(__pyx_t_13); __pyx_t_13 = 0;
+                  __Pyx_GOTREF(__pyx_t_3);
+                  __Pyx_DECREF(__pyx_t_9); __pyx_t_9 = 0;
+                } else
+                #endif
+                {
+                  __pyx_t_2 = PyTuple_New(1+1); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 330, __pyx_L4_error)
+                  __Pyx_GOTREF(__pyx_t_2);
+                  __Pyx_GIVEREF(__pyx_t_13); PyTuple_SET_ITEM(__pyx_t_2, 0, __pyx_t_13); __pyx_t_13 = NULL;
+                  __Pyx_GIVEREF(__pyx_t_9);
+                  PyTuple_SET_ITEM(__pyx_t_2, 0+1, __pyx_t_9);
+                  __pyx_t_9 = 0;
+                  __pyx_t_3 = __Pyx_PyObject_Call(__pyx_t_4, __pyx_t_2, NULL); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 330, __pyx_L4_error)
+                  __Pyx_GOTREF(__pyx_t_3);
+                  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
+                }
+              }
+              __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
+              __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
+
+331:                 if pressed()[pygame.K_s]:
+
            __pyx_t_4 = __Pyx_GetModuleGlobalName(__pyx_n_s_pressed); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 331, __pyx_L4_error)
+            __Pyx_GOTREF(__pyx_t_4);
+            __pyx_t_2 = NULL;
+            if (CYTHON_UNPACK_METHODS && unlikely(PyMethod_Check(__pyx_t_4))) {
+              __pyx_t_2 = PyMethod_GET_SELF(__pyx_t_4);
+              if (likely(__pyx_t_2)) {
+                PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_4);
+                __Pyx_INCREF(__pyx_t_2);
+                __Pyx_INCREF(function);
+                __Pyx_DECREF_SET(__pyx_t_4, function);
+              }
+            }
+            if (__pyx_t_2) {
+              __pyx_t_3 = __Pyx_PyObject_CallOneArg(__pyx_t_4, __pyx_t_2); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 331, __pyx_L4_error)
+              __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
+            } else {
+              __pyx_t_3 = __Pyx_PyObject_CallNoArg(__pyx_t_4); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 331, __pyx_L4_error)
+            }
+            __Pyx_GOTREF(__pyx_t_3);
+            __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
+            __pyx_t_4 = __Pyx_GetModuleGlobalName(__pyx_n_s_pygame); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 331, __pyx_L4_error)
+            __Pyx_GOTREF(__pyx_t_4);
+            __pyx_t_2 = __Pyx_PyObject_GetAttrStr(__pyx_t_4, __pyx_n_s_K_s); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 331, __pyx_L4_error)
+            __Pyx_GOTREF(__pyx_t_2);
+            __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
+            __pyx_t_4 = PyObject_GetItem(__pyx_t_3, __pyx_t_2); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 331, __pyx_L4_error)
+            __Pyx_GOTREF(__pyx_t_4);
+            __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
+            __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
+            __pyx_t_16 = __Pyx_PyObject_IsTrue(__pyx_t_4); if (unlikely(__pyx_t_16 < 0)) __PYX_ERR(0, 331, __pyx_L4_error)
+            __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
+            if (__pyx_t_16) {
+/* … */
+            }
+
+332:                     MonCamera.IncrementCameraCoordY(0.01*CameraCoord.Get_XSize())
+
              __pyx_t_2 = __Pyx_GetModuleGlobalName(__pyx_n_s_MonCamera); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 332, __pyx_L4_error)
+              __Pyx_GOTREF(__pyx_t_2);
+              __pyx_t_3 = __Pyx_PyObject_GetAttrStr(__pyx_t_2, __pyx_n_s_IncrementCameraCoordY); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 332, __pyx_L4_error)
+              __Pyx_GOTREF(__pyx_t_3);
+              __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
+              __pyx_t_9 = __Pyx_GetModuleGlobalName(__pyx_n_s_CameraCoord); if (unlikely(!__pyx_t_9)) __PYX_ERR(0, 332, __pyx_L4_error)
+              __Pyx_GOTREF(__pyx_t_9);
+              __pyx_t_13 = __Pyx_PyObject_GetAttrStr(__pyx_t_9, __pyx_n_s_Get_XSize); if (unlikely(!__pyx_t_13)) __PYX_ERR(0, 332, __pyx_L4_error)
+              __Pyx_GOTREF(__pyx_t_13);
+              __Pyx_DECREF(__pyx_t_9); __pyx_t_9 = 0;
+              __pyx_t_9 = NULL;
+              if (CYTHON_UNPACK_METHODS && unlikely(PyMethod_Check(__pyx_t_13))) {
+                __pyx_t_9 = PyMethod_GET_SELF(__pyx_t_13);
+                if (likely(__pyx_t_9)) {
+                  PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_13);
+                  __Pyx_INCREF(__pyx_t_9);
+                  __Pyx_INCREF(function);
+                  __Pyx_DECREF_SET(__pyx_t_13, function);
+                }
+              }
+              if (__pyx_t_9) {
+                __pyx_t_2 = __Pyx_PyObject_CallOneArg(__pyx_t_13, __pyx_t_9); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 332, __pyx_L4_error)
+                __Pyx_DECREF(__pyx_t_9); __pyx_t_9 = 0;
+              } else {
+                __pyx_t_2 = __Pyx_PyObject_CallNoArg(__pyx_t_13); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 332, __pyx_L4_error)
+              }
+              __Pyx_GOTREF(__pyx_t_2);
+              __Pyx_DECREF(__pyx_t_13); __pyx_t_13 = 0;
+              __pyx_t_13 = PyNumber_Multiply(__pyx_float_0_01, __pyx_t_2); if (unlikely(!__pyx_t_13)) __PYX_ERR(0, 332, __pyx_L4_error)
+              __Pyx_GOTREF(__pyx_t_13);
+              __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
+              __pyx_t_2 = NULL;
+              if (CYTHON_UNPACK_METHODS && unlikely(PyMethod_Check(__pyx_t_3))) {
+                __pyx_t_2 = PyMethod_GET_SELF(__pyx_t_3);
+                if (likely(__pyx_t_2)) {
+                  PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_3);
+                  __Pyx_INCREF(__pyx_t_2);
+                  __Pyx_INCREF(function);
+                  __Pyx_DECREF_SET(__pyx_t_3, function);
+                }
+              }
+              if (!__pyx_t_2) {
+                __pyx_t_4 = __Pyx_PyObject_CallOneArg(__pyx_t_3, __pyx_t_13); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 332, __pyx_L4_error)
+                __Pyx_DECREF(__pyx_t_13); __pyx_t_13 = 0;
+                __Pyx_GOTREF(__pyx_t_4);
+              } else {
+                #if CYTHON_FAST_PYCALL
+                if (PyFunction_Check(__pyx_t_3)) {
+                  PyObject *__pyx_temp[2] = {__pyx_t_2, __pyx_t_13};
+                  __pyx_t_4 = __Pyx_PyFunction_FastCall(__pyx_t_3, __pyx_temp+1-1, 1+1); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 332, __pyx_L4_error)
+                  __Pyx_XDECREF(__pyx_t_2); __pyx_t_2 = 0;
+                  __Pyx_GOTREF(__pyx_t_4);
+                  __Pyx_DECREF(__pyx_t_13); __pyx_t_13 = 0;
+                } else
+                #endif
+                #if CYTHON_FAST_PYCCALL
+                if (__Pyx_PyFastCFunction_Check(__pyx_t_3)) {
+                  PyObject *__pyx_temp[2] = {__pyx_t_2, __pyx_t_13};
+                  __pyx_t_4 = __Pyx_PyCFunction_FastCall(__pyx_t_3, __pyx_temp+1-1, 1+1); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 332, __pyx_L4_error)
+                  __Pyx_XDECREF(__pyx_t_2); __pyx_t_2 = 0;
+                  __Pyx_GOTREF(__pyx_t_4);
+                  __Pyx_DECREF(__pyx_t_13); __pyx_t_13 = 0;
+                } else
+                #endif
+                {
+                  __pyx_t_9 = PyTuple_New(1+1); if (unlikely(!__pyx_t_9)) __PYX_ERR(0, 332, __pyx_L4_error)
+                  __Pyx_GOTREF(__pyx_t_9);
+                  __Pyx_GIVEREF(__pyx_t_2); PyTuple_SET_ITEM(__pyx_t_9, 0, __pyx_t_2); __pyx_t_2 = NULL;
+                  __Pyx_GIVEREF(__pyx_t_13);
+                  PyTuple_SET_ITEM(__pyx_t_9, 0+1, __pyx_t_13);
+                  __pyx_t_13 = 0;
+                  __pyx_t_4 = __Pyx_PyObject_Call(__pyx_t_3, __pyx_t_9, NULL); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 332, __pyx_L4_error)
+                  __Pyx_GOTREF(__pyx_t_4);
+                  __Pyx_DECREF(__pyx_t_9); __pyx_t_9 = 0;
+                }
+              }
+              __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
+              __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
+
+333:                 if pressed()[pygame.K_a]:
+
            __pyx_t_3 = __Pyx_GetModuleGlobalName(__pyx_n_s_pressed); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 333, __pyx_L4_error)
+            __Pyx_GOTREF(__pyx_t_3);
+            __pyx_t_9 = NULL;
+            if (CYTHON_UNPACK_METHODS && unlikely(PyMethod_Check(__pyx_t_3))) {
+              __pyx_t_9 = PyMethod_GET_SELF(__pyx_t_3);
+              if (likely(__pyx_t_9)) {
+                PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_3);
+                __Pyx_INCREF(__pyx_t_9);
+                __Pyx_INCREF(function);
+                __Pyx_DECREF_SET(__pyx_t_3, function);
+              }
+            }
+            if (__pyx_t_9) {
+              __pyx_t_4 = __Pyx_PyObject_CallOneArg(__pyx_t_3, __pyx_t_9); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 333, __pyx_L4_error)
+              __Pyx_DECREF(__pyx_t_9); __pyx_t_9 = 0;
+            } else {
+              __pyx_t_4 = __Pyx_PyObject_CallNoArg(__pyx_t_3); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 333, __pyx_L4_error)
+            }
+            __Pyx_GOTREF(__pyx_t_4);
+            __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
+            __pyx_t_3 = __Pyx_GetModuleGlobalName(__pyx_n_s_pygame); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 333, __pyx_L4_error)
+            __Pyx_GOTREF(__pyx_t_3);
+            __pyx_t_9 = __Pyx_PyObject_GetAttrStr(__pyx_t_3, __pyx_n_s_K_a); if (unlikely(!__pyx_t_9)) __PYX_ERR(0, 333, __pyx_L4_error)
+            __Pyx_GOTREF(__pyx_t_9);
+            __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
+            __pyx_t_3 = PyObject_GetItem(__pyx_t_4, __pyx_t_9); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 333, __pyx_L4_error)
+            __Pyx_GOTREF(__pyx_t_3);
+            __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
+            __Pyx_DECREF(__pyx_t_9); __pyx_t_9 = 0;
+            __pyx_t_16 = __Pyx_PyObject_IsTrue(__pyx_t_3); if (unlikely(__pyx_t_16 < 0)) __PYX_ERR(0, 333, __pyx_L4_error)
+            __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
+            if (__pyx_t_16) {
+/* … */
+            }
+
+334:                     MonCamera.IncrementCameraCoordX(-0.01*CameraCoord.Get_XSize())
+
              __pyx_t_9 = __Pyx_GetModuleGlobalName(__pyx_n_s_MonCamera); if (unlikely(!__pyx_t_9)) __PYX_ERR(0, 334, __pyx_L4_error)
+              __Pyx_GOTREF(__pyx_t_9);
+              __pyx_t_4 = __Pyx_PyObject_GetAttrStr(__pyx_t_9, __pyx_n_s_IncrementCameraCoordX); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 334, __pyx_L4_error)
+              __Pyx_GOTREF(__pyx_t_4);
+              __Pyx_DECREF(__pyx_t_9); __pyx_t_9 = 0;
+              __pyx_t_13 = __Pyx_GetModuleGlobalName(__pyx_n_s_CameraCoord); if (unlikely(!__pyx_t_13)) __PYX_ERR(0, 334, __pyx_L4_error)
+              __Pyx_GOTREF(__pyx_t_13);
+              __pyx_t_2 = __Pyx_PyObject_GetAttrStr(__pyx_t_13, __pyx_n_s_Get_XSize); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 334, __pyx_L4_error)
+              __Pyx_GOTREF(__pyx_t_2);
+              __Pyx_DECREF(__pyx_t_13); __pyx_t_13 = 0;
+              __pyx_t_13 = NULL;
+              if (CYTHON_UNPACK_METHODS && unlikely(PyMethod_Check(__pyx_t_2))) {
+                __pyx_t_13 = PyMethod_GET_SELF(__pyx_t_2);
+                if (likely(__pyx_t_13)) {
+                  PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_2);
+                  __Pyx_INCREF(__pyx_t_13);
+                  __Pyx_INCREF(function);
+                  __Pyx_DECREF_SET(__pyx_t_2, function);
+                }
+              }
+              if (__pyx_t_13) {
+                __pyx_t_9 = __Pyx_PyObject_CallOneArg(__pyx_t_2, __pyx_t_13); if (unlikely(!__pyx_t_9)) __PYX_ERR(0, 334, __pyx_L4_error)
+                __Pyx_DECREF(__pyx_t_13); __pyx_t_13 = 0;
+              } else {
+                __pyx_t_9 = __Pyx_PyObject_CallNoArg(__pyx_t_2); if (unlikely(!__pyx_t_9)) __PYX_ERR(0, 334, __pyx_L4_error)
+              }
+              __Pyx_GOTREF(__pyx_t_9);
+              __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
+              __pyx_t_2 = PyNumber_Multiply(__pyx_float_neg_0_01, __pyx_t_9); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 334, __pyx_L4_error)
+              __Pyx_GOTREF(__pyx_t_2);
+              __Pyx_DECREF(__pyx_t_9); __pyx_t_9 = 0;
+              __pyx_t_9 = NULL;
+              if (CYTHON_UNPACK_METHODS && unlikely(PyMethod_Check(__pyx_t_4))) {
+                __pyx_t_9 = PyMethod_GET_SELF(__pyx_t_4);
+                if (likely(__pyx_t_9)) {
+                  PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_4);
+                  __Pyx_INCREF(__pyx_t_9);
+                  __Pyx_INCREF(function);
+                  __Pyx_DECREF_SET(__pyx_t_4, function);
+                }
+              }
+              if (!__pyx_t_9) {
+                __pyx_t_3 = __Pyx_PyObject_CallOneArg(__pyx_t_4, __pyx_t_2); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 334, __pyx_L4_error)
+                __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
+                __Pyx_GOTREF(__pyx_t_3);
+              } else {
+                #if CYTHON_FAST_PYCALL
+                if (PyFunction_Check(__pyx_t_4)) {
+                  PyObject *__pyx_temp[2] = {__pyx_t_9, __pyx_t_2};
+                  __pyx_t_3 = __Pyx_PyFunction_FastCall(__pyx_t_4, __pyx_temp+1-1, 1+1); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 334, __pyx_L4_error)
+                  __Pyx_XDECREF(__pyx_t_9); __pyx_t_9 = 0;
+                  __Pyx_GOTREF(__pyx_t_3);
+                  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
+                } else
+                #endif
+                #if CYTHON_FAST_PYCCALL
+                if (__Pyx_PyFastCFunction_Check(__pyx_t_4)) {
+                  PyObject *__pyx_temp[2] = {__pyx_t_9, __pyx_t_2};
+                  __pyx_t_3 = __Pyx_PyCFunction_FastCall(__pyx_t_4, __pyx_temp+1-1, 1+1); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 334, __pyx_L4_error)
+                  __Pyx_XDECREF(__pyx_t_9); __pyx_t_9 = 0;
+                  __Pyx_GOTREF(__pyx_t_3);
+                  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
+                } else
+                #endif
+                {
+                  __pyx_t_13 = PyTuple_New(1+1); if (unlikely(!__pyx_t_13)) __PYX_ERR(0, 334, __pyx_L4_error)
+                  __Pyx_GOTREF(__pyx_t_13);
+                  __Pyx_GIVEREF(__pyx_t_9); PyTuple_SET_ITEM(__pyx_t_13, 0, __pyx_t_9); __pyx_t_9 = NULL;
+                  __Pyx_GIVEREF(__pyx_t_2);
+                  PyTuple_SET_ITEM(__pyx_t_13, 0+1, __pyx_t_2);
+                  __pyx_t_2 = 0;
+                  __pyx_t_3 = __Pyx_PyObject_Call(__pyx_t_4, __pyx_t_13, NULL); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 334, __pyx_L4_error)
+                  __Pyx_GOTREF(__pyx_t_3);
+                  __Pyx_DECREF(__pyx_t_13); __pyx_t_13 = 0;
+                }
+              }
+              __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
+              __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
+
+335:                 if pressed()[pygame.K_d]:
+
            __pyx_t_4 = __Pyx_GetModuleGlobalName(__pyx_n_s_pressed); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 335, __pyx_L4_error)
+            __Pyx_GOTREF(__pyx_t_4);
+            __pyx_t_13 = NULL;
+            if (CYTHON_UNPACK_METHODS && unlikely(PyMethod_Check(__pyx_t_4))) {
+              __pyx_t_13 = PyMethod_GET_SELF(__pyx_t_4);
+              if (likely(__pyx_t_13)) {
+                PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_4);
+                __Pyx_INCREF(__pyx_t_13);
+                __Pyx_INCREF(function);
+                __Pyx_DECREF_SET(__pyx_t_4, function);
+              }
+            }
+            if (__pyx_t_13) {
+              __pyx_t_3 = __Pyx_PyObject_CallOneArg(__pyx_t_4, __pyx_t_13); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 335, __pyx_L4_error)
+              __Pyx_DECREF(__pyx_t_13); __pyx_t_13 = 0;
+            } else {
+              __pyx_t_3 = __Pyx_PyObject_CallNoArg(__pyx_t_4); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 335, __pyx_L4_error)
+            }
+            __Pyx_GOTREF(__pyx_t_3);
+            __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
+            __pyx_t_4 = __Pyx_GetModuleGlobalName(__pyx_n_s_pygame); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 335, __pyx_L4_error)
+            __Pyx_GOTREF(__pyx_t_4);
+            __pyx_t_13 = __Pyx_PyObject_GetAttrStr(__pyx_t_4, __pyx_n_s_K_d); if (unlikely(!__pyx_t_13)) __PYX_ERR(0, 335, __pyx_L4_error)
+            __Pyx_GOTREF(__pyx_t_13);
+            __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
+            __pyx_t_4 = PyObject_GetItem(__pyx_t_3, __pyx_t_13); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 335, __pyx_L4_error)
+            __Pyx_GOTREF(__pyx_t_4);
+            __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
+            __Pyx_DECREF(__pyx_t_13); __pyx_t_13 = 0;
+            __pyx_t_16 = __Pyx_PyObject_IsTrue(__pyx_t_4); if (unlikely(__pyx_t_16 < 0)) __PYX_ERR(0, 335, __pyx_L4_error)
+            __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
+            if (__pyx_t_16) {
+/* … */
+            }
+
+336:                     MonCamera.IncrementCameraCoordX(0.01*CameraCoord.Get_XSize())
+
              __pyx_t_13 = __Pyx_GetModuleGlobalName(__pyx_n_s_MonCamera); if (unlikely(!__pyx_t_13)) __PYX_ERR(0, 336, __pyx_L4_error)
+              __Pyx_GOTREF(__pyx_t_13);
+              __pyx_t_3 = __Pyx_PyObject_GetAttrStr(__pyx_t_13, __pyx_n_s_IncrementCameraCoordX); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 336, __pyx_L4_error)
+              __Pyx_GOTREF(__pyx_t_3);
+              __Pyx_DECREF(__pyx_t_13); __pyx_t_13 = 0;
+              __pyx_t_2 = __Pyx_GetModuleGlobalName(__pyx_n_s_CameraCoord); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 336, __pyx_L4_error)
+              __Pyx_GOTREF(__pyx_t_2);
+              __pyx_t_9 = __Pyx_PyObject_GetAttrStr(__pyx_t_2, __pyx_n_s_Get_XSize); if (unlikely(!__pyx_t_9)) __PYX_ERR(0, 336, __pyx_L4_error)
+              __Pyx_GOTREF(__pyx_t_9);
+              __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
+              __pyx_t_2 = NULL;
+              if (CYTHON_UNPACK_METHODS && unlikely(PyMethod_Check(__pyx_t_9))) {
+                __pyx_t_2 = PyMethod_GET_SELF(__pyx_t_9);
+                if (likely(__pyx_t_2)) {
+                  PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_9);
+                  __Pyx_INCREF(__pyx_t_2);
+                  __Pyx_INCREF(function);
+                  __Pyx_DECREF_SET(__pyx_t_9, function);
+                }
+              }
+              if (__pyx_t_2) {
+                __pyx_t_13 = __Pyx_PyObject_CallOneArg(__pyx_t_9, __pyx_t_2); if (unlikely(!__pyx_t_13)) __PYX_ERR(0, 336, __pyx_L4_error)
+                __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
+              } else {
+                __pyx_t_13 = __Pyx_PyObject_CallNoArg(__pyx_t_9); if (unlikely(!__pyx_t_13)) __PYX_ERR(0, 336, __pyx_L4_error)
+              }
+              __Pyx_GOTREF(__pyx_t_13);
+              __Pyx_DECREF(__pyx_t_9); __pyx_t_9 = 0;
+              __pyx_t_9 = PyNumber_Multiply(__pyx_float_0_01, __pyx_t_13); if (unlikely(!__pyx_t_9)) __PYX_ERR(0, 336, __pyx_L4_error)
+              __Pyx_GOTREF(__pyx_t_9);
+              __Pyx_DECREF(__pyx_t_13); __pyx_t_13 = 0;
+              __pyx_t_13 = NULL;
+              if (CYTHON_UNPACK_METHODS && unlikely(PyMethod_Check(__pyx_t_3))) {
+                __pyx_t_13 = PyMethod_GET_SELF(__pyx_t_3);
+                if (likely(__pyx_t_13)) {
+                  PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_3);
+                  __Pyx_INCREF(__pyx_t_13);
+                  __Pyx_INCREF(function);
+                  __Pyx_DECREF_SET(__pyx_t_3, function);
+                }
+              }
+              if (!__pyx_t_13) {
+                __pyx_t_4 = __Pyx_PyObject_CallOneArg(__pyx_t_3, __pyx_t_9); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 336, __pyx_L4_error)
+                __Pyx_DECREF(__pyx_t_9); __pyx_t_9 = 0;
+                __Pyx_GOTREF(__pyx_t_4);
+              } else {
+                #if CYTHON_FAST_PYCALL
+                if (PyFunction_Check(__pyx_t_3)) {
+                  PyObject *__pyx_temp[2] = {__pyx_t_13, __pyx_t_9};
+                  __pyx_t_4 = __Pyx_PyFunction_FastCall(__pyx_t_3, __pyx_temp+1-1, 1+1); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 336, __pyx_L4_error)
+                  __Pyx_XDECREF(__pyx_t_13); __pyx_t_13 = 0;
+                  __Pyx_GOTREF(__pyx_t_4);
+                  __Pyx_DECREF(__pyx_t_9); __pyx_t_9 = 0;
+                } else
+                #endif
+                #if CYTHON_FAST_PYCCALL
+                if (__Pyx_PyFastCFunction_Check(__pyx_t_3)) {
+                  PyObject *__pyx_temp[2] = {__pyx_t_13, __pyx_t_9};
+                  __pyx_t_4 = __Pyx_PyCFunction_FastCall(__pyx_t_3, __pyx_temp+1-1, 1+1); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 336, __pyx_L4_error)
+                  __Pyx_XDECREF(__pyx_t_13); __pyx_t_13 = 0;
+                  __Pyx_GOTREF(__pyx_t_4);
+                  __Pyx_DECREF(__pyx_t_9); __pyx_t_9 = 0;
+                } else
+                #endif
+                {
+                  __pyx_t_2 = PyTuple_New(1+1); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 336, __pyx_L4_error)
+                  __Pyx_GOTREF(__pyx_t_2);
+                  __Pyx_GIVEREF(__pyx_t_13); PyTuple_SET_ITEM(__pyx_t_2, 0, __pyx_t_13); __pyx_t_13 = NULL;
+                  __Pyx_GIVEREF(__pyx_t_9);
+                  PyTuple_SET_ITEM(__pyx_t_2, 0+1, __pyx_t_9);
+                  __pyx_t_9 = 0;
+                  __pyx_t_4 = __Pyx_PyObject_Call(__pyx_t_3, __pyx_t_2, NULL); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 336, __pyx_L4_error)
+                  __Pyx_GOTREF(__pyx_t_4);
+                  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
+                }
+              }
+              __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
+              __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
+
 337: 
+
+338:                 if pressed()[pygame.K_q]:#Zoom out
+
            __pyx_t_3 = __Pyx_GetModuleGlobalName(__pyx_n_s_pressed); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 338, __pyx_L4_error)
+            __Pyx_GOTREF(__pyx_t_3);
+            __pyx_t_2 = NULL;
+            if (CYTHON_UNPACK_METHODS && unlikely(PyMethod_Check(__pyx_t_3))) {
+              __pyx_t_2 = PyMethod_GET_SELF(__pyx_t_3);
+              if (likely(__pyx_t_2)) {
+                PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_3);
+                __Pyx_INCREF(__pyx_t_2);
+                __Pyx_INCREF(function);
+                __Pyx_DECREF_SET(__pyx_t_3, function);
+              }
+            }
+            if (__pyx_t_2) {
+              __pyx_t_4 = __Pyx_PyObject_CallOneArg(__pyx_t_3, __pyx_t_2); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 338, __pyx_L4_error)
+              __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
+            } else {
+              __pyx_t_4 = __Pyx_PyObject_CallNoArg(__pyx_t_3); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 338, __pyx_L4_error)
+            }
+            __Pyx_GOTREF(__pyx_t_4);
+            __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
+            __pyx_t_3 = __Pyx_GetModuleGlobalName(__pyx_n_s_pygame); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 338, __pyx_L4_error)
+            __Pyx_GOTREF(__pyx_t_3);
+            __pyx_t_2 = __Pyx_PyObject_GetAttrStr(__pyx_t_3, __pyx_n_s_K_q); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 338, __pyx_L4_error)
+            __Pyx_GOTREF(__pyx_t_2);
+            __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
+            __pyx_t_3 = PyObject_GetItem(__pyx_t_4, __pyx_t_2); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 338, __pyx_L4_error)
+            __Pyx_GOTREF(__pyx_t_3);
+            __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
+            __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
+            __pyx_t_16 = __Pyx_PyObject_IsTrue(__pyx_t_3); if (unlikely(__pyx_t_16 < 0)) __PYX_ERR(0, 338, __pyx_L4_error)
+            __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
+            if (__pyx_t_16) {
+/* … */
+            }
+
+339:                     MonCamera.SetZoom(0.99*MonCamera.GetZoom())
+
              __pyx_t_2 = __Pyx_GetModuleGlobalName(__pyx_n_s_MonCamera); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 339, __pyx_L4_error)
+              __Pyx_GOTREF(__pyx_t_2);
+              __pyx_t_4 = __Pyx_PyObject_GetAttrStr(__pyx_t_2, __pyx_n_s_SetZoom); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 339, __pyx_L4_error)
+              __Pyx_GOTREF(__pyx_t_4);
+              __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
+              __pyx_t_9 = __Pyx_GetModuleGlobalName(__pyx_n_s_MonCamera); if (unlikely(!__pyx_t_9)) __PYX_ERR(0, 339, __pyx_L4_error)
+              __Pyx_GOTREF(__pyx_t_9);
+              __pyx_t_13 = __Pyx_PyObject_GetAttrStr(__pyx_t_9, __pyx_n_s_GetZoom); if (unlikely(!__pyx_t_13)) __PYX_ERR(0, 339, __pyx_L4_error)
+              __Pyx_GOTREF(__pyx_t_13);
+              __Pyx_DECREF(__pyx_t_9); __pyx_t_9 = 0;
+              __pyx_t_9 = NULL;
+              if (CYTHON_UNPACK_METHODS && unlikely(PyMethod_Check(__pyx_t_13))) {
+                __pyx_t_9 = PyMethod_GET_SELF(__pyx_t_13);
+                if (likely(__pyx_t_9)) {
+                  PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_13);
+                  __Pyx_INCREF(__pyx_t_9);
+                  __Pyx_INCREF(function);
+                  __Pyx_DECREF_SET(__pyx_t_13, function);
+                }
+              }
+              if (__pyx_t_9) {
+                __pyx_t_2 = __Pyx_PyObject_CallOneArg(__pyx_t_13, __pyx_t_9); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 339, __pyx_L4_error)
+                __Pyx_DECREF(__pyx_t_9); __pyx_t_9 = 0;
+              } else {
+                __pyx_t_2 = __Pyx_PyObject_CallNoArg(__pyx_t_13); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 339, __pyx_L4_error)
+              }
+              __Pyx_GOTREF(__pyx_t_2);
+              __Pyx_DECREF(__pyx_t_13); __pyx_t_13 = 0;
+              __pyx_t_13 = PyNumber_Multiply(__pyx_float_0_99, __pyx_t_2); if (unlikely(!__pyx_t_13)) __PYX_ERR(0, 339, __pyx_L4_error)
+              __Pyx_GOTREF(__pyx_t_13);
+              __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
+              __pyx_t_2 = NULL;
+              if (CYTHON_UNPACK_METHODS && unlikely(PyMethod_Check(__pyx_t_4))) {
+                __pyx_t_2 = PyMethod_GET_SELF(__pyx_t_4);
+                if (likely(__pyx_t_2)) {
+                  PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_4);
+                  __Pyx_INCREF(__pyx_t_2);
+                  __Pyx_INCREF(function);
+                  __Pyx_DECREF_SET(__pyx_t_4, function);
+                }
+              }
+              if (!__pyx_t_2) {
+                __pyx_t_3 = __Pyx_PyObject_CallOneArg(__pyx_t_4, __pyx_t_13); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 339, __pyx_L4_error)
+                __Pyx_DECREF(__pyx_t_13); __pyx_t_13 = 0;
+                __Pyx_GOTREF(__pyx_t_3);
+              } else {
+                #if CYTHON_FAST_PYCALL
+                if (PyFunction_Check(__pyx_t_4)) {
+                  PyObject *__pyx_temp[2] = {__pyx_t_2, __pyx_t_13};
+                  __pyx_t_3 = __Pyx_PyFunction_FastCall(__pyx_t_4, __pyx_temp+1-1, 1+1); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 339, __pyx_L4_error)
+                  __Pyx_XDECREF(__pyx_t_2); __pyx_t_2 = 0;
+                  __Pyx_GOTREF(__pyx_t_3);
+                  __Pyx_DECREF(__pyx_t_13); __pyx_t_13 = 0;
+                } else
+                #endif
+                #if CYTHON_FAST_PYCCALL
+                if (__Pyx_PyFastCFunction_Check(__pyx_t_4)) {
+                  PyObject *__pyx_temp[2] = {__pyx_t_2, __pyx_t_13};
+                  __pyx_t_3 = __Pyx_PyCFunction_FastCall(__pyx_t_4, __pyx_temp+1-1, 1+1); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 339, __pyx_L4_error)
+                  __Pyx_XDECREF(__pyx_t_2); __pyx_t_2 = 0;
+                  __Pyx_GOTREF(__pyx_t_3);
+                  __Pyx_DECREF(__pyx_t_13); __pyx_t_13 = 0;
+                } else
+                #endif
+                {
+                  __pyx_t_9 = PyTuple_New(1+1); if (unlikely(!__pyx_t_9)) __PYX_ERR(0, 339, __pyx_L4_error)
+                  __Pyx_GOTREF(__pyx_t_9);
+                  __Pyx_GIVEREF(__pyx_t_2); PyTuple_SET_ITEM(__pyx_t_9, 0, __pyx_t_2); __pyx_t_2 = NULL;
+                  __Pyx_GIVEREF(__pyx_t_13);
+                  PyTuple_SET_ITEM(__pyx_t_9, 0+1, __pyx_t_13);
+                  __pyx_t_13 = 0;
+                  __pyx_t_3 = __Pyx_PyObject_Call(__pyx_t_4, __pyx_t_9, NULL); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 339, __pyx_L4_error)
+                  __Pyx_GOTREF(__pyx_t_3);
+                  __Pyx_DECREF(__pyx_t_9); __pyx_t_9 = 0;
+                }
+              }
+              __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
+              __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
+
+340:                 if pressed()[pygame.K_e]:#Zoom in
+
            __pyx_t_4 = __Pyx_GetModuleGlobalName(__pyx_n_s_pressed); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 340, __pyx_L4_error)
+            __Pyx_GOTREF(__pyx_t_4);
+            __pyx_t_9 = NULL;
+            if (CYTHON_UNPACK_METHODS && unlikely(PyMethod_Check(__pyx_t_4))) {
+              __pyx_t_9 = PyMethod_GET_SELF(__pyx_t_4);
+              if (likely(__pyx_t_9)) {
+                PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_4);
+                __Pyx_INCREF(__pyx_t_9);
+                __Pyx_INCREF(function);
+                __Pyx_DECREF_SET(__pyx_t_4, function);
+              }
+            }
+            if (__pyx_t_9) {
+              __pyx_t_3 = __Pyx_PyObject_CallOneArg(__pyx_t_4, __pyx_t_9); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 340, __pyx_L4_error)
+              __Pyx_DECREF(__pyx_t_9); __pyx_t_9 = 0;
+            } else {
+              __pyx_t_3 = __Pyx_PyObject_CallNoArg(__pyx_t_4); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 340, __pyx_L4_error)
+            }
+            __Pyx_GOTREF(__pyx_t_3);
+            __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
+            __pyx_t_4 = __Pyx_GetModuleGlobalName(__pyx_n_s_pygame); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 340, __pyx_L4_error)
+            __Pyx_GOTREF(__pyx_t_4);
+            __pyx_t_9 = __Pyx_PyObject_GetAttrStr(__pyx_t_4, __pyx_n_s_K_e); if (unlikely(!__pyx_t_9)) __PYX_ERR(0, 340, __pyx_L4_error)
+            __Pyx_GOTREF(__pyx_t_9);
+            __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
+            __pyx_t_4 = PyObject_GetItem(__pyx_t_3, __pyx_t_9); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 340, __pyx_L4_error)
+            __Pyx_GOTREF(__pyx_t_4);
+            __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
+            __Pyx_DECREF(__pyx_t_9); __pyx_t_9 = 0;
+            __pyx_t_16 = __Pyx_PyObject_IsTrue(__pyx_t_4); if (unlikely(__pyx_t_16 < 0)) __PYX_ERR(0, 340, __pyx_L4_error)
+            __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
+            if (__pyx_t_16) {
+/* … */
+            }
+
+341:                     MonCamera.SetZoom(1.01*MonCamera.GetZoom())
+
              __pyx_t_9 = __Pyx_GetModuleGlobalName(__pyx_n_s_MonCamera); if (unlikely(!__pyx_t_9)) __PYX_ERR(0, 341, __pyx_L4_error)
+              __Pyx_GOTREF(__pyx_t_9);
+              __pyx_t_3 = __Pyx_PyObject_GetAttrStr(__pyx_t_9, __pyx_n_s_SetZoom); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 341, __pyx_L4_error)
+              __Pyx_GOTREF(__pyx_t_3);
+              __Pyx_DECREF(__pyx_t_9); __pyx_t_9 = 0;
+              __pyx_t_13 = __Pyx_GetModuleGlobalName(__pyx_n_s_MonCamera); if (unlikely(!__pyx_t_13)) __PYX_ERR(0, 341, __pyx_L4_error)
+              __Pyx_GOTREF(__pyx_t_13);
+              __pyx_t_2 = __Pyx_PyObject_GetAttrStr(__pyx_t_13, __pyx_n_s_GetZoom); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 341, __pyx_L4_error)
+              __Pyx_GOTREF(__pyx_t_2);
+              __Pyx_DECREF(__pyx_t_13); __pyx_t_13 = 0;
+              __pyx_t_13 = NULL;
+              if (CYTHON_UNPACK_METHODS && unlikely(PyMethod_Check(__pyx_t_2))) {
+                __pyx_t_13 = PyMethod_GET_SELF(__pyx_t_2);
+                if (likely(__pyx_t_13)) {
+                  PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_2);
+                  __Pyx_INCREF(__pyx_t_13);
+                  __Pyx_INCREF(function);
+                  __Pyx_DECREF_SET(__pyx_t_2, function);
+                }
+              }
+              if (__pyx_t_13) {
+                __pyx_t_9 = __Pyx_PyObject_CallOneArg(__pyx_t_2, __pyx_t_13); if (unlikely(!__pyx_t_9)) __PYX_ERR(0, 341, __pyx_L4_error)
+                __Pyx_DECREF(__pyx_t_13); __pyx_t_13 = 0;
+              } else {
+                __pyx_t_9 = __Pyx_PyObject_CallNoArg(__pyx_t_2); if (unlikely(!__pyx_t_9)) __PYX_ERR(0, 341, __pyx_L4_error)
+              }
+              __Pyx_GOTREF(__pyx_t_9);
+              __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
+              __pyx_t_2 = PyNumber_Multiply(__pyx_float_1_01, __pyx_t_9); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 341, __pyx_L4_error)
+              __Pyx_GOTREF(__pyx_t_2);
+              __Pyx_DECREF(__pyx_t_9); __pyx_t_9 = 0;
+              __pyx_t_9 = NULL;
+              if (CYTHON_UNPACK_METHODS && unlikely(PyMethod_Check(__pyx_t_3))) {
+                __pyx_t_9 = PyMethod_GET_SELF(__pyx_t_3);
+                if (likely(__pyx_t_9)) {
+                  PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_3);
+                  __Pyx_INCREF(__pyx_t_9);
+                  __Pyx_INCREF(function);
+                  __Pyx_DECREF_SET(__pyx_t_3, function);
+                }
+              }
+              if (!__pyx_t_9) {
+                __pyx_t_4 = __Pyx_PyObject_CallOneArg(__pyx_t_3, __pyx_t_2); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 341, __pyx_L4_error)
+                __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
+                __Pyx_GOTREF(__pyx_t_4);
+              } else {
+                #if CYTHON_FAST_PYCALL
+                if (PyFunction_Check(__pyx_t_3)) {
+                  PyObject *__pyx_temp[2] = {__pyx_t_9, __pyx_t_2};
+                  __pyx_t_4 = __Pyx_PyFunction_FastCall(__pyx_t_3, __pyx_temp+1-1, 1+1); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 341, __pyx_L4_error)
+                  __Pyx_XDECREF(__pyx_t_9); __pyx_t_9 = 0;
+                  __Pyx_GOTREF(__pyx_t_4);
+                  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
+                } else
+                #endif
+                #if CYTHON_FAST_PYCCALL
+                if (__Pyx_PyFastCFunction_Check(__pyx_t_3)) {
+                  PyObject *__pyx_temp[2] = {__pyx_t_9, __pyx_t_2};
+                  __pyx_t_4 = __Pyx_PyCFunction_FastCall(__pyx_t_3, __pyx_temp+1-1, 1+1); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 341, __pyx_L4_error)
+                  __Pyx_XDECREF(__pyx_t_9); __pyx_t_9 = 0;
+                  __Pyx_GOTREF(__pyx_t_4);
+                  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
+                } else
+                #endif
+                {
+                  __pyx_t_13 = PyTuple_New(1+1); if (unlikely(!__pyx_t_13)) __PYX_ERR(0, 341, __pyx_L4_error)
+                  __Pyx_GOTREF(__pyx_t_13);
+                  __Pyx_GIVEREF(__pyx_t_9); PyTuple_SET_ITEM(__pyx_t_13, 0, __pyx_t_9); __pyx_t_9 = NULL;
+                  __Pyx_GIVEREF(__pyx_t_2);
+                  PyTuple_SET_ITEM(__pyx_t_13, 0+1, __pyx_t_2);
+                  __pyx_t_2 = 0;
+                  __pyx_t_4 = __Pyx_PyObject_Call(__pyx_t_3, __pyx_t_13, NULL); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 341, __pyx_L4_error)
+                  __Pyx_GOTREF(__pyx_t_4);
+                  __Pyx_DECREF(__pyx_t_13); __pyx_t_13 = 0;
+                }
+              }
+              __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
+              __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
+
 342: 
+
+343:                 if pressed()[pygame.K_SPACE]:#Zoom in
+
            __pyx_t_3 = __Pyx_GetModuleGlobalName(__pyx_n_s_pressed); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 343, __pyx_L4_error)
+            __Pyx_GOTREF(__pyx_t_3);
+            __pyx_t_13 = NULL;
+            if (CYTHON_UNPACK_METHODS && unlikely(PyMethod_Check(__pyx_t_3))) {
+              __pyx_t_13 = PyMethod_GET_SELF(__pyx_t_3);
+              if (likely(__pyx_t_13)) {
+                PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_3);
+                __Pyx_INCREF(__pyx_t_13);
+                __Pyx_INCREF(function);
+                __Pyx_DECREF_SET(__pyx_t_3, function);
+              }
+            }
+            if (__pyx_t_13) {
+              __pyx_t_4 = __Pyx_PyObject_CallOneArg(__pyx_t_3, __pyx_t_13); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 343, __pyx_L4_error)
+              __Pyx_DECREF(__pyx_t_13); __pyx_t_13 = 0;
+            } else {
+              __pyx_t_4 = __Pyx_PyObject_CallNoArg(__pyx_t_3); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 343, __pyx_L4_error)
+            }
+            __Pyx_GOTREF(__pyx_t_4);
+            __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
+            __pyx_t_3 = __Pyx_GetModuleGlobalName(__pyx_n_s_pygame); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 343, __pyx_L4_error)
+            __Pyx_GOTREF(__pyx_t_3);
+            __pyx_t_13 = __Pyx_PyObject_GetAttrStr(__pyx_t_3, __pyx_n_s_K_SPACE); if (unlikely(!__pyx_t_13)) __PYX_ERR(0, 343, __pyx_L4_error)
+            __Pyx_GOTREF(__pyx_t_13);
+            __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
+            __pyx_t_3 = PyObject_GetItem(__pyx_t_4, __pyx_t_13); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 343, __pyx_L4_error)
+            __Pyx_GOTREF(__pyx_t_3);
+            __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
+            __Pyx_DECREF(__pyx_t_13); __pyx_t_13 = 0;
+            __pyx_t_16 = __Pyx_PyObject_IsTrue(__pyx_t_3); if (unlikely(__pyx_t_16 < 0)) __PYX_ERR(0, 343, __pyx_L4_error)
+            __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
+            if (__pyx_t_16) {
+/* … */
+            }
+
+344:                     refresh = True
+
              if (PyDict_SetItem(__pyx_d, __pyx_n_s_refresh, Py_True) < 0) __PYX_ERR(0, 344, __pyx_L4_error)
+
 345: 
+
 346: 
+
+347:                 MonCamera.UpdateCameraSize()
+
            __pyx_t_13 = __Pyx_GetModuleGlobalName(__pyx_n_s_MonCamera); if (unlikely(!__pyx_t_13)) __PYX_ERR(0, 347, __pyx_L4_error)
+            __Pyx_GOTREF(__pyx_t_13);
+            __pyx_t_4 = __Pyx_PyObject_GetAttrStr(__pyx_t_13, __pyx_n_s_UpdateCameraSize); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 347, __pyx_L4_error)
+            __Pyx_GOTREF(__pyx_t_4);
+            __Pyx_DECREF(__pyx_t_13); __pyx_t_13 = 0;
+            __pyx_t_13 = NULL;
+            if (CYTHON_UNPACK_METHODS && unlikely(PyMethod_Check(__pyx_t_4))) {
+              __pyx_t_13 = PyMethod_GET_SELF(__pyx_t_4);
+              if (likely(__pyx_t_13)) {
+                PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_4);
+                __Pyx_INCREF(__pyx_t_13);
+                __Pyx_INCREF(function);
+                __Pyx_DECREF_SET(__pyx_t_4, function);
+              }
+            }
+            if (__pyx_t_13) {
+              __pyx_t_3 = __Pyx_PyObject_CallOneArg(__pyx_t_4, __pyx_t_13); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 347, __pyx_L4_error)
+              __Pyx_DECREF(__pyx_t_13); __pyx_t_13 = 0;
+            } else {
+              __pyx_t_3 = __Pyx_PyObject_CallNoArg(__pyx_t_4); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 347, __pyx_L4_error)
+            }
+            __Pyx_GOTREF(__pyx_t_3);
+            __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
+            __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
+
+348:                 MonCamera.Draw()
+
            __pyx_t_4 = __Pyx_GetModuleGlobalName(__pyx_n_s_MonCamera); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 348, __pyx_L4_error)
+            __Pyx_GOTREF(__pyx_t_4);
+            __pyx_t_13 = __Pyx_PyObject_GetAttrStr(__pyx_t_4, __pyx_n_s_Draw); if (unlikely(!__pyx_t_13)) __PYX_ERR(0, 348, __pyx_L4_error)
+            __Pyx_GOTREF(__pyx_t_13);
+            __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
+            __pyx_t_4 = NULL;
+            if (CYTHON_UNPACK_METHODS && unlikely(PyMethod_Check(__pyx_t_13))) {
+              __pyx_t_4 = PyMethod_GET_SELF(__pyx_t_13);
+              if (likely(__pyx_t_4)) {
+                PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_13);
+                __Pyx_INCREF(__pyx_t_4);
+                __Pyx_INCREF(function);
+                __Pyx_DECREF_SET(__pyx_t_13, function);
+              }
+            }
+            if (__pyx_t_4) {
+              __pyx_t_3 = __Pyx_PyObject_CallOneArg(__pyx_t_13, __pyx_t_4); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 348, __pyx_L4_error)
+              __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
+            } else {
+              __pyx_t_3 = __Pyx_PyObject_CallNoArg(__pyx_t_13); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 348, __pyx_L4_error)
+            }
+            __Pyx_GOTREF(__pyx_t_3);
+            __Pyx_DECREF(__pyx_t_13); __pyx_t_13 = 0;
+            __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
+
+349:                 pygame.display.flip()
+
            __pyx_t_13 = __Pyx_GetModuleGlobalName(__pyx_n_s_pygame); if (unlikely(!__pyx_t_13)) __PYX_ERR(0, 349, __pyx_L4_error)
+            __Pyx_GOTREF(__pyx_t_13);
+            __pyx_t_4 = __Pyx_PyObject_GetAttrStr(__pyx_t_13, __pyx_n_s_display); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 349, __pyx_L4_error)
+            __Pyx_GOTREF(__pyx_t_4);
+            __Pyx_DECREF(__pyx_t_13); __pyx_t_13 = 0;
+            __pyx_t_13 = __Pyx_PyObject_GetAttrStr(__pyx_t_4, __pyx_n_s_flip); if (unlikely(!__pyx_t_13)) __PYX_ERR(0, 349, __pyx_L4_error)
+            __Pyx_GOTREF(__pyx_t_13);
+            __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
+            __pyx_t_4 = NULL;
+            if (CYTHON_UNPACK_METHODS && likely(PyMethod_Check(__pyx_t_13))) {
+              __pyx_t_4 = PyMethod_GET_SELF(__pyx_t_13);
+              if (likely(__pyx_t_4)) {
+                PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_13);
+                __Pyx_INCREF(__pyx_t_4);
+                __Pyx_INCREF(function);
+                __Pyx_DECREF_SET(__pyx_t_13, function);
+              }
+            }
+            if (__pyx_t_4) {
+              __pyx_t_3 = __Pyx_PyObject_CallOneArg(__pyx_t_13, __pyx_t_4); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 349, __pyx_L4_error)
+              __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
+            } else {
+              __pyx_t_3 = __Pyx_PyObject_CallNoArg(__pyx_t_13); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 349, __pyx_L4_error)
+            }
+            __Pyx_GOTREF(__pyx_t_3);
+            __Pyx_DECREF(__pyx_t_13); __pyx_t_13 = 0;
+            __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
+
+350:                 clock.tick(60)
+
            __pyx_t_3 = __Pyx_GetModuleGlobalName(__pyx_n_s_clock); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 350, __pyx_L4_error)
+            __Pyx_GOTREF(__pyx_t_3);
+            __pyx_t_13 = __Pyx_PyObject_GetAttrStr(__pyx_t_3, __pyx_n_s_tick); if (unlikely(!__pyx_t_13)) __PYX_ERR(0, 350, __pyx_L4_error)
+            __Pyx_GOTREF(__pyx_t_13);
+            __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
+            __pyx_t_3 = __Pyx_PyObject_Call(__pyx_t_13, __pyx_tuple__82, NULL); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 350, __pyx_L4_error)
+            __Pyx_GOTREF(__pyx_t_3);
+            __Pyx_DECREF(__pyx_t_13); __pyx_t_13 = 0;
+            __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
+          }
+        }
+/* … */
+  __pyx_tuple__82 = PyTuple_Pack(1, __pyx_int_60); if (unlikely(!__pyx_tuple__82)) __PYX_ERR(0, 350, __pyx_L1_error)
+  __Pyx_GOTREF(__pyx_tuple__82);
+  __Pyx_GIVEREF(__pyx_tuple__82);
+
 351: 
+
 352: 
+
 353: 
+
+354:     except Exception as e:
+
      __pyx_t_12 = __Pyx_PyErr_ExceptionMatches(((PyObject *)(&((PyTypeObject*)PyExc_Exception)[0])));
+      if (__pyx_t_12) {
+        __Pyx_AddTraceback("CAStar.AATC_Monitor_Viewer", __pyx_clineno, __pyx_lineno, __pyx_filename);
+        if (__Pyx_GetException(&__pyx_t_3, &__pyx_t_13, &__pyx_t_4) < 0) __PYX_ERR(0, 354, __pyx_L6_except_error)
+        __Pyx_GOTREF(__pyx_t_3);
+        __Pyx_GOTREF(__pyx_t_13);
+        __Pyx_GOTREF(__pyx_t_4);
+        if (PyDict_SetItem(__pyx_d, __pyx_n_s_e, __pyx_t_13) < 0) __PYX_ERR(0, 354, __pyx_L6_except_error)
+
+355:         print(e)
+
        __pyx_t_2 = __Pyx_GetModuleGlobalName(__pyx_n_s_e); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 355, __pyx_L6_except_error)
+        __Pyx_GOTREF(__pyx_t_2);
+        if (__Pyx_PrintOne(0, __pyx_t_2) < 0) __PYX_ERR(0, 355, __pyx_L6_except_error)
+        __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
+
+356:         print("An error occured, restarting main loop")
+
        if (__Pyx_PrintOne(0, __pyx_kp_s_An_error_occured_restarting_main) < 0) __PYX_ERR(0, 356, __pyx_L6_except_error)
+
+357:         Exit = input("Exit? Y/N").upper()
+
        __pyx_t_9 = __Pyx_PyObject_Call(__pyx_builtin_input, __pyx_tuple__83, NULL); if (unlikely(!__pyx_t_9)) __PYX_ERR(0, 357, __pyx_L6_except_error)
+        __Pyx_GOTREF(__pyx_t_9);
+        __pyx_t_10 = __Pyx_PyObject_GetAttrStr(__pyx_t_9, __pyx_n_s_upper); if (unlikely(!__pyx_t_10)) __PYX_ERR(0, 357, __pyx_L6_except_error)
+        __Pyx_GOTREF(__pyx_t_10);
+        __Pyx_DECREF(__pyx_t_9); __pyx_t_9 = 0;
+        __pyx_t_9 = NULL;
+        if (CYTHON_UNPACK_METHODS && likely(PyMethod_Check(__pyx_t_10))) {
+          __pyx_t_9 = PyMethod_GET_SELF(__pyx_t_10);
+          if (likely(__pyx_t_9)) {
+            PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_10);
+            __Pyx_INCREF(__pyx_t_9);
+            __Pyx_INCREF(function);
+            __Pyx_DECREF_SET(__pyx_t_10, function);
+          }
+        }
+        if (__pyx_t_9) {
+          __pyx_t_2 = __Pyx_PyObject_CallOneArg(__pyx_t_10, __pyx_t_9); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 357, __pyx_L6_except_error)
+          __Pyx_DECREF(__pyx_t_9); __pyx_t_9 = 0;
+        } else {
+          __pyx_t_2 = __Pyx_PyObject_CallNoArg(__pyx_t_10); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 357, __pyx_L6_except_error)
+        }
+        __Pyx_GOTREF(__pyx_t_2);
+        __Pyx_DECREF(__pyx_t_10); __pyx_t_10 = 0;
+        if (PyDict_SetItem(__pyx_d, __pyx_n_s_Exit, __pyx_t_2) < 0) __PYX_ERR(0, 357, __pyx_L6_except_error)
+        __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
+        __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
+        __Pyx_DECREF(__pyx_t_13); __pyx_t_13 = 0;
+        __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
+        goto __pyx_L5_exception_handled;
+      }
+      goto __pyx_L6_except_error;
+      __pyx_L6_except_error:;
+
 358: 
+
 359: 
+
 360: 
+
 361: 
+
 362: 
+
 363: 
+
 364: 
+
 365: 
+
 366: 
+
 367: 
+
 368: 
+
 369: 
+
 370: 
+
 371: 
+
 372: 
+
 373: 
+
 374: 
+
 375: 
+
diff --git a/CAStar/AATC_Monitor_Viewer.pyx b/CAStar/AATC_Monitor_Viewer.pyx new file mode 100644 index 0000000..ec1f3e3 --- /dev/null +++ b/CAStar/AATC_Monitor_Viewer.pyx @@ -0,0 +1,375 @@ +#!python +#cython: boundscheck=False, wraparound=False, infer_types=True,cdivision = True + +import pygame,AATC_Monitor,time,ast,sys,random,AATC_Coordinate + +pygame.init() + +_images= {} +def GetImage(xSize,ySize,Colour): #Efficiently get images + result = _images.get((xSize,ySize,Colour)) + if result == None: + result = pygame.Surface((xSize,ySize)).convert() + result.fill(Colour) + _images[(xSize,ySize,Colour)]=result + while len(_images) > 1500: + _images.pop(random.sample(_images.keys(),1)[0]) #If cache is full evict old versions + return result#_copy + +_texts= {} +def GetText(Text,fontParameters,AA,Colour): #Efficiently get text + result = _texts.get((Text,fontParameters,AA,Colour)) + if result == None: + result = GetFont(*fontParameters).render(Text,AA,Colour) + _texts[(Text,fontParameters,AA,Colour)]=result + while len(_texts) > 1500: + _texts.pop(random.sample(_texts.keys(),1)[0]) #If cache is full evict old versions + return result + + +_fonts = {} +def GetFont(Font,Size): + result = _fonts.get((Font,Size)) + if result == None: + result = pygame.font.Font(Font,Size) + _fonts[(Font,Size)]=result + while len(_fonts) > 1500: + _fonts.pop(random.sample(_fonts.keys(),1)[0]) #If cache is full evict old versions + return result + + +cdef int MaxLimit( int value, int Max): + if value > Max: + value = Max + return value + + + +class Camera: + def __init__(self,xpixel,ypixel,MinCoords,MaxCoords): #COORDS (X,Y,Z) + self.xpixel = xpixel + self.ypixel = ypixel + self.gameDisplay = pygame.display.set_mode((self.xpixel,self.ypixel)) + self.MinCoords = MinCoords + self.MaxCoords = MaxCoords + self.CameraCoord = self.MinCoords.copy() + self.CameraCoord.Set_XSize( self.MaxCoords.Get_X() - self.MinCoords.Get_X()) + self.CameraCoord.Set_YSize( self.MaxCoords.Get_Y() - self.MinCoords.Get_Y()) + self.CameraZoom = 1 + self.DrawObjects = [] + + def GetZoom(self): + return self.CameraZoom + def SetZoom(self,Zoom): + self.CameraZoom = Zoom + + def GetCameraCoords(self): + return self.CameraCoord + def IncrementCameraCoordX(self,Amount): + self.CameraCoord.Set_X( Amount+self.CameraCoord.Get_X()) + + def IncrementCameraCoordY(self,Amount): + self.CameraCoord.Set_Y( Amount+self.CameraCoord.Get_Y()) + + def SetCameraCoords(self,CameraX,CameraY): + self.CameraCoord.Set_X( CameraX) + self.CameraCoord.Set_Y(CameraY) + + def UpdateCameraSize(self): #Gets width of map divided by zoom level eg at zoom 1x it has whole map + self.CameraCoord.Set_XSize ((self.MaxCoords.Get_X() - self.MinCoords.Get_X())/self.CameraZoom) + self.CameraCoord.Set_YSize ((self.MaxCoords.Get_Y() - self.MinCoords.Get_Y())/self.CameraZoom) + + def CameraWipe(self,Colour = (0,0,0)): + self.gameDisplay.fill(Colour) + def ResetDrawObject(self): + self.DrawObjects = [] + def AddDrawObject(self,Object,ForceDraw): + self.DrawObjects.append({"Object":Object,"ForceDraw":ForceDraw}) + + def Get_Coord(self): + return self.CameraCoord + + def Draw(self): + cdef float CameraEndX,CameraEndY,CameraX,CameraY,CameraXSize,CameraYSize,x,y,xSize,ySize,PosX,PosY + cdef int width,height,xpixel,ypixel,font_size + + CameraEndX= self.CameraCoord.Get_X() + self.CameraCoord.Get_XSize() #Moved to new variablt to reduce recalculation + CameraEndY = self.CameraCoord.Get_Y() + self.CameraCoord.Get_YSize() + CameraX = self.CameraCoord.Get_X() + CameraY = self.CameraCoord.Get_Y() + CameraXSize = self.CameraCoord.Get_XSize() + CameraYSize = self.CameraCoord.Get_YSize() + xpixel,ypixel = self.xpixel,self.ypixel + + for DrawObject in self.DrawObjects: + Object = DrawObject["Object"] + Object_Coords = Object.Get_Coords() + x = Object_Coords.Get_X() + y = Object_Coords.Get_Y() + xSize = Object_Coords.Get_XSize() + ySize = Object_Coords.Get_YSize() + if ((x < CameraEndX) and ((x+xSize) > CameraX)) and \ + ((y < CameraEndY) and ((y+ySize) > CameraY )) : #If DrawObject intersects with Camera , Render, otherwise ignore + + + width,height = int(xSize/CameraXSize*xpixel) ,int(ySize/CameraYSize*ypixel) # Would benifit from being cythonised + if width > 0 and height > 0: + PosX = ((x- CameraX)/CameraXSize)* xpixel # Would benifit from being cythonised + PosY = ((y- CameraY)/CameraYSize)* ypixel + width = MaxLimit(width,xpixel) + height = MaxLimit(height,ypixel) + font_size = int(100*width/xpixel) # Would benifit from being cythonised + image = Object.Make_Image(width,height) + self.gameDisplay.blit(image,(PosX,PosY)) + if font_size > 5: + font = (None, font_size) + self.gameDisplay.blit(Object.Make_Text(font) ,(PosX+width,PosY)) + + + + + + +class Monitor_Sprite(pygame.sprite.Sprite): + def __init__(self,CoordObject,Type = "",Text = "",Colour = (255,255,255)): + self.Coords = CoordObject + self.Type = Type + self.Text = Text + self.Colour = Colour + self.image = pygame.Surface((1,1)) + #self.Make_Image(2,2) # No longer needed, is similar to that above. + + def Make_Image(self, int width, int height): + if self.image.get_size() != (width,height): #If new image does not match with previous + self.image = GetImage(width,height,self.Colour) + + return self.image +## self.image = pygame.Surface((width,height)).convert() +## self.image.fill(self.Colour) + + def Make_Text(self,font): + text = str((self.Coords.Get_X(),self.Coords.Get_Y(),self.Coords.Get_Z())) +" " +self.Text + " "+ self.Type + return GetText(text,font,False,self.Colour) + + def Get_Coords(self): + return self.Coords +## +## def Make_CoordsText(self,font): +## self.CoordsText = GetText(str((self.Coords.x,self.Coords.y,self.Coords.z)),font,False,self.Colour) +## #self.CoordsText = font.render(str((self.Coords.x,self.Coords.y,self.Coords.z)),False,self.Colour) +## +## def Make_Text(self,font): +## self.DrawnText = GetText(self.Text,font,False,self.Colour) +## #self.DrawnText = font.render(self.Text,False,self.Colour) +## +## def Make_Type(self,font): +## self.DrawnType = GetText(self.Type,font,False,self.Colour) +## #self.DrawnType = font.render(self.Type,False,self.Colour) + + +def MakeDroneSprites(Message,RawDroneList): + DroneList = [] + Columns = ast.literal_eval(Message) + CoordIndex = Columns.index("LastCoords") + DroneIDIndex = Columns.index("DroneID") + UserIDIndex = Columns.index("UserID") + DroneNameIndex = Columns.index("DroneName") + BatteryIndex = Columns.index("LastBattery") + for Drone in RawDroneList: + LastCoords = ast.literal_eval(Drone[CoordIndex]) + Coord = AATC_Coordinate.Coordinate(LastCoords[0],LastCoords[1],LastCoords[2],0.001,0.001,0.00001) + Text = "D:"+str(Drone[DroneIDIndex]) +" U:"+str(Drone[UserIDIndex]) +" N:"+str(Drone[DroneNameIndex])+" B:"+str(Drone[BatteryIndex]) + Colour = (255,255,255) + Sprite = Monitor_Sprite(Coord,"Drone",Text,Colour) + DroneList.append(Sprite) + return DroneList + +def MakeFlightSprites(Message,RawFlightList): + FlightList = [] + Columns = ast.literal_eval(Message) + FlightIDIndex = Columns.index("FlightID") + DroneIDIndex = Columns.index("DroneID") + StartCoordsIndex = Columns.index("StartCoords") + EndCoordsIndex = Columns.index("EndCoords") + StartTimeIndex = Columns.index("StartTime") + ETAIndex = Columns.index("ETA") + EndTimeIndex = Columns.index("EndTime") + DistanceIndex = Columns.index("Distance") + for Flight in RawFlightList: + #Start Sprite + Coords = ast.literal_eval(Flight[StartCoordsIndex]) + Coord = AATC_Coordinate.Coordinate(Coords[0],Coords[1],Coords[2],0.0001,0.0001,0.00001) + Text = "F:"+ str(Flight[FlightIDIndex])+" D:"+ str(Flight[DroneIDIndex])+ "ST:"+str(Flight[StartTimeIndex]) + Colour = (0,0,255) + FlightList.append(Monitor_Sprite(Coord,"StartPoint",Text,Colour)) + + #End Sprite + Coords = ast.literal_eval(Flight[EndCoordsIndex]) + Coord = AATC_Coordinate.Coordinate(Coords[0],Coords[1],Coords[2],0.0001,0.0001,0.00001) + Text = "F:"+ str(Flight[FlightIDIndex])+" D:"+ str(Flight[DroneIDIndex])+ "ETA:"+str(Flight[ETAIndex]) + Colour = (255,0,0) + FlightList.append(Monitor_Sprite(Coord,"EndPoint",Text,Colour)) + return FlightList + + +def MakeWaypointSprites(Message,RawWaypointList): + WaypointList = [] + Columns = ast.literal_eval(Message) + CoordIndex = Columns.index("Coords") + WaypointNumberIndex = Columns.index("WaypointNumber") + FlightIDIndex = Columns.index("FlightID") + for Waypoint in RawWaypointList: + Coords = ast.literal_eval(Waypoint[CoordIndex]) + Coord = AATC_Coordinate.Coordinate(Coords[0],Coords[1],Coords[2],0.001,0.001,0.00001) + Text = "F:"+ str(Waypoint[FlightIDIndex]) +" W:"+ str(Waypoint[WaypointNumberIndex]) + Colour = (0,255,0) + WaypointList.append(Monitor_Sprite(Coord,"Waypoint",Text,Colour)) + return WaypointList + +def MakeZoneSprites(Message,RawZoneList): + ZoneList = [] + Columns = ast.literal_eval(Message) + StartCoordIndex = Columns.index("StartCoord") + EndCoordIndex = Columns.index("EndCoord") + LevelIndex = Columns.index("Level") + ZoneIDIndex = Columns.index("ZoneID") + for Zone in RawZoneList: + StartCoords = ast.literal_eval(Zone[StartCoordIndex]) + EndCoords = ast.literal_eval(Zone[EndCoordIndex]) + Coord = AATC_Coordinate.Coordinate(StartCoords[0],StartCoords[1],StartCoords[2],EndCoords[0]-StartCoords[0],EndCoords[1]-StartCoords[1],EndCoords[2]-StartCoords[2]) + Text = "Z:"+ str(Zone[ZoneIDIndex]) +" L:"+ str(Zone[LevelIndex]) + Colour = (100,100,100) + ZoneList.append(Monitor_Sprite(Coord,"NoFlyZone",Text,Colour)) + return ZoneList + +def MakeSprites(M): + print("Refreshing data") + SpriteList = [] + Sucess,Message,DronesAll = M.GetDronesAll() + if Sucess: + SpriteList += MakeDroneSprites(Message,DronesAll) + + Sucess,Message,DronesMonitor = M.GetMonitorDrones() + if Sucess: + SpriteList += MakeDroneSprites(Message,DronesMonitor) + + Sucess,Message,FlightsAll = M.GetFlightsAll() + if Sucess: + SpriteList += MakeFlightSprites(Message,FlightsAll) + + Sucess,Message,FlightsMonitor = M.GetMonitorFlights() + if Sucess: + SpriteList += MakeFlightSprites(Message,FlightsMonitor) + + Sucess,Message,WaypointsAll = M.GetFlightWaypointsAll() + if Sucess: + SpriteList += MakeWaypointSprites(Message,WaypointsAll) + + Sucess,Message,WaypointsMonitor = M.GetMonitorFlightWaypoints() + if Sucess: + SpriteList += MakeWaypointSprites(Message,WaypointsMonitor) + + Sucess,Message,NoFlyZones = M.GetNoFlyZones() + if Sucess: + SpriteList += MakeZoneSprites(Message,NoFlyZones) + + #Sprites are created in this function to simplify code in case of an error(False) + print("Refreshed data") + return SpriteList #All sprites which were sucessfully created + + + +xpixel = 1200 +ypixel = 700 +Refresh_Delay = 60 +clock = pygame.time.Clock() +pressed = pygame.key.get_pressed +Exit = "N" +while Exit != "Y": + try: + M = AATC_Monitor.CreateMonitorInterface(IP = "127.0.0.1",Port = 8001) + M.Login("Zini","") + #Sucess,Message,Data = M.GetCoordDetails() + #MinCoords,MaxCoords,StepCoords = Data[0],Data[1],Data[2] + MinCoords,MaxCoords = AATC_Coordinate.Coordinate(0,0,0),AATC_Coordinate.Coordinate(1,1,50) + MonCamera = Camera(xpixel,ypixel,MinCoords,MaxCoords) + while True: + MonCamera.ResetDrawObject() + Sprites = MakeSprites(M) + #font = (None, 30) + for sprite in Sprites: + MonCamera.AddDrawObject(sprite,False) + + Last_Refresh_Time = time.time() + refresh = False + while not refresh: + MonCamera.CameraWipe() + if time.time() >= (Last_Refresh_Time + Refresh_Delay): + refresh = True + for event in pygame.event.get(): + if event.type == pygame.QUIT: + print("Monitor exit was called") + pygame.quit() + sys.exit() + + elif event.type == pygame.MOUSEBUTTONDOWN: + print("Camera details") #Mainly for debugging + print(MonCamera.GetZoom()) + print(MonCamera.CameraCoord.Get_X()) + print(MonCamera.CameraCoord.Get_Y()) + print(MonCamera.CameraCoord.Get_XSize()) + print(MonCamera.CameraCoord.Get_YSize()) + print(len(MonCamera.DrawObjects)) + print("FPS:"+str(clock.get_fps())) + elif event.type == pygame.KEYDOWN: + pass + + + CameraCoord = MonCamera.Get_Coord() + if pressed()[pygame.K_w]: #Shift camera + MonCamera.IncrementCameraCoordY(-0.01*CameraCoord.Get_XSize()) #/ as Greater zoom means need more fidelety + if pressed()[pygame.K_s]: + MonCamera.IncrementCameraCoordY(0.01*CameraCoord.Get_XSize()) + if pressed()[pygame.K_a]: + MonCamera.IncrementCameraCoordX(-0.01*CameraCoord.Get_XSize()) + if pressed()[pygame.K_d]: + MonCamera.IncrementCameraCoordX(0.01*CameraCoord.Get_XSize()) + + if pressed()[pygame.K_q]:#Zoom out + MonCamera.SetZoom(0.99*MonCamera.GetZoom()) + if pressed()[pygame.K_e]:#Zoom in + MonCamera.SetZoom(1.01*MonCamera.GetZoom()) + + if pressed()[pygame.K_SPACE]:#Zoom in + refresh = True + + + MonCamera.UpdateCameraSize() + MonCamera.Draw() + pygame.display.flip() + clock.tick(60) + + + + except Exception as e: + print(e) + print("An error occured, restarting main loop") + Exit = input("Exit? Y/N").upper() + + + + + + + + + + + + + + + + + + diff --git a/CAStar/AATC_Monitor_Viewer.so b/CAStar/AATC_Monitor_Viewer.so new file mode 100644 index 0000000000000000000000000000000000000000..45b6fac7be3b6a59c46bec5fcd31979691bd9075 GIT binary patch literal 354848 zcmc${4}4U`)joa$E5y3G5mSvdzDC`)v5lHkT1km*kN~j-T_As`qJR($7$Cw%qoM|P zx3XTMX`z+2v_<7@X-g|D)B@5P2oP*-MT<(6Dk|2y1}avHXtDc!o-^m({gVazzQ6bL z`Jvfo=g!=jGv}N+bLPz4yLXQoJ322f&vO3_v<6y|`kZAA#l`NX6C`V>RbmacO08n+ zER*lv06h2$pZrP50!#8&{my5t`jh!vaJFR~I?u8O@gC$40IWg&8sziOL7IQe_vv3D zh;aXcxW+#>FZ4!u#=(CMwA{bNsE~hd{&?i0c)x$FAI)16ke^Q9B(%jp-VYEg1P;XC zm@Dh8cMg7e*XNi2;aj)gyy&b`YsT&T!Wmsdm>0$$`@(t`StWS|TkB5bwOjFbJN_;o z_1yl?$CDLBW5YV{9-LjD8b*Bto%3`p#NBYURM3pS@b-Ym7bi{ z{-bI44?%tJX0;c}N-q^rN5MwZp@tn`0n)%QRaJ&$MQpO$t1 zt6A+8W%ci&tn`0p-9I6X{`2ttye$3?&AR{Utn`Ul?T^T+|Jzyg@6D3O&$8NkGL0Vc z)5*GjQ&#;ixtNkx! z-9IX;{BN?-hqCU!HjCcBWaTf(qJKeF`R`|?pUW!WnN{E2S@If@b^qI0^zO~#S8G;( z-^)rjWtE?nMbEG_dP?wpKvw?wS?QiEdh9HEcVv|>&uae{S>?;J`hO@bO?!A}R)0PP zdl}qsh$yg5w+5sBjuQr25C7S+hFE^968X#Dar4ixlE^Pbd0siyI>Wj!H zYr1jf{BYB}x^W|0=FVxVn|6ImlgZ1SGi7@FG*&RJW#;WD7`koBmAGwUcwXD|uob$k zX6E$plq;KV#n-y#c}>%1Obky8H%%GS#LQ9c)2B=f&uzT|?M(~MoI8it=FOWjX67wT zbCB88%8TQsg{L<+&1Vg5tu0Mj+t|5tZk#fD-rU*zg1q`UGpEm;(KO|XIjC$7GeE=4 zjI4}{S6x4=38aml*VL4DH;as(J8$+hlBY$+jGR(Gr*7V~={KdWjcjR}Hm|X1+D#Lh zZXji;qBTt|!iAB|P1BJ(y=~rn^kMAG*8NOlz6K54kw19U`ALe|{6heZ#bwEh!Qpff3=b z)CMWk-PYRV);@A{+nniSyj;Z{s+*Mz~qi?x}~Ybu#CMy`zF_=fc?uMeqI*F<0hjDAtMylz|PFPzAfx^Lq!5U zLA_>ECMh8qg-oThqzmHZ9z)w#o5*lsylQhh`{gR!$hosyr_D=Oq7m~okDUX}oKHL!Q$lHGKdyw5 zxE(R`@>WcYn2d%qe*BVp?BW7@j;bC2e3Zxi+!s=C&q`ttlcNT+kwHx@P7rGiQ*1(JgbQh25cP z5+ml<%x$Bcc5`XQyh~ci6>~x@kfWjW3fTQABSzGXoHA}MzRsODrD0~%txcr)s)VYQ_C;7ET~JL)m%eukEthBM zP%jyLCFdW`rWqOTY)Hc|1M+%f`&7E)+FHUhTU&19n3+Dim4nn}g<)aK%U zf9^%)7ShxC?F--vEIJ1F^yZt)95JP7#T)%$)eB&xuQ>ejX#$Ivx$SI$@sN$ka zyzfK3Z{^~39RDNDo$?B%UrTe3ynOddnycns`u_n*ZC=)Y1Fe(bhjD$vfAi0oc_O1P zU(#!ZGiSo_8fbk*(*=?qVAUbbe~d5j>uSZ0XH0s9;!4F;ifa_tDXv%Cq_|aahvH7f zU5dLE_bBdFbQJe19#TA_XgzD_@+tZi3ls|#ixo>0OBKr$%N2(yRw-61)+p90h7{`* zCn-)P4RIx)bs<=XN zui`#MNAZy25yhj5`MXSee#HXCV#N~0pkle=P{m=2HHx*0lN2W_PE~ACY*h>^b|^*_ zmntq(T&1{Lag$=V;!ed~iu)8D#UqMG6|LvA---o_g^DGLLB&$Vp^C#4s}!dy&QJ_1 zwks}DT&%cUafRX<#dV5X6?Z7^R@|ewU-6)#^}LQB#X`j*#ZtvG#VW;W#gJm1;ta)R z#dgI7ii;Jy6jvy&R9vUHUU7%wQ;K^O_bMJ#Jf!G*!Sp9zu}HC4u}raCv0AZ4u}*Q4 zVzXk4;sV7E#V*CAiYpaYDXv%Cr1+HLPQ|^7`xFl;9#PESt@@@|tXQI0t~gY&MzL0L zlHz2=7R6S@4#lYAQpIJ8s}xr&Zc^-4+^M)rai5~2ctr82qW>?ZKLv^jwc;AZZpE#NyA*dTI*R)hk1AR(YCjYU6@!YUio+DE z6vrxt6sIcAPz)=!D=t!8thiiph2k2;b&6XRcPQ>w+@rW(@t~shlIe#}u~4x{u~e~4 zu}ZO8F{D_hI76{nv0ZV2;$p=v#TAMx71t@QSKOial;R%6y^04F4=MWgnEvD|7AY1h zmMNAiRx8#h)+tU>Y*uVhT%g#Y*rm8sai!ua#r2At6rWPuskm2hpW-3KBZ~QdHU04` z7Aux0mMacbtWm60oTNBeu|=^}u|qMcxKweO;wr_}iklR>6?ZD`QrxHLC>~Kfs_1`N z$Bkl%Vo-6Y;xNTp#j%Q$6{jk;DuxxKii;GNDK1xBt++<9TXC!6F2&u7j^cjBqly-S z3rNSfp60Sf*H|SgjaRtW%t!*sR#DxIl5SVwd6y#g&Td6xS>6P<%>pkK$g% zgNla~eXpASA;lw#`LCJ&_!Wy4OBBl$hbq=6)+$a?oUGWQ*s9o}7*$-VxJ+@C;%dcBirtDk z6?ZA_Q*;!MC>~Yxzpmp(u|zSbI8#mS0O6{48zxKeSQ z;(Em$iccx-QQWI|Q1OtW?{B6*`HDq~#foK$<%-pcHHvkLlN6g3TND>4b|`i!E>&Eq zxJq%o;wHtX6n84_Rotg|Nb!hb{+p&he#K(N62)@Gp^7z%wThDzCo8rnwkmcgMirMT zE>m2kxLR?OVz=T>#a)W~6dlDQiboawj*c6}62+k6P{m=2wTfdECo4`>Y*h>^Mimz+ zE>m2txLR?IVz=T}#a)WK6&=O>iboZ#g!V(RP%)@jsyIxsN^z`WNO7v-48^cwyW%3n z#fr-nS17JgT&K8Iafjk=#XXAq6%Q&}Z<&7h6bluL6iXG$6vK)gic1xjDXvsprMOOU zz2a8I9g4dYcPs8wbQBLM9#Qo58G7>-3l)nLgNmh!LluW9)+p90)+tU>oT1pP7*=do zj4CctT&lQCai!ua#dV776}KwxP~4@sTXCPFqj*U1h@ubs?DRYH6$=%M6qh~ivj$=R ze>o8m-xb7wb{fO%lOL10^h(mSjh!^1O8u2rhwTXDKWpxuTv#hPeFImyw5(d<$1Q6t5eF7R#4{|bj#z{wtc0A2Uxb{A!y#v47354D0XY*dhn$HcA!p(!$eB1Aawd*}oQbuN zGw}+@nfMjRnfO&GG~)S#$6|+qcqR0kcopPN3_{>15!KXC@+Pi%txi8n(2#Ae8!I1BP8wm|;G z*^obR4&+aq3;7dUA%Eh{kUw#rWlfCi&v!1tz+Bk#`XfHejy#o2CS%><6P)cQSXN|f z{xv;dhWVFV3kA25k3gN}U-A(QTnj{4R$?!1OFjZcwwjrp*ePi!uGP$oiEc?lQLScv zB-TipCr_J8m|h`ier+ygx=YefJgd2!=?+OVs~Os0C0Zp7g|nKgnVu?X7HzI&IwWZ* zmem|$x?0k_wRsZL<&uWtSj|(JE|GLK)6Gm5NV-Nkgbq}g=yGN#u^dNR{1m|h|2sZ6h8x=Yd!yw$vh=?+PgwC43p zw@SK&>29W{N}8lL?_fG4=`hnfnXZ;JNpIfGbh)G#Fuj-Q5=nP3?J!*+=_u0&nYJXo zi0LCtAN-L0U(7W2`Otq!cQKvM^iD}HWx9arZb>g=x`^pDl3vbq3DYYiy@Kgdrn@A) zlIe1$J0!h|>0wN_N_sWZ)l5&7^ctpXnGQ*M9n&GEt0ldjX&(PhluLRO(^Hu)k#slH z%}f_adMnedOk0vBYn$7dK6sS#%?_+um(;bqgXqwkE-74w*Om{OqRniny^A4s%l0L-rPNu6RP0=;) zX1ZL`N15Ksbcv)bd~J4^E|9d3>4QvLlFn!P2-64u#s2%5=DGO9UP%`)ozL`6N%K^H za{<%ck}hJpi0L(wE@rxf=@pVLVY-y*E=dQOE@!$!(xprfW4cw+JW1GG&Gb}Bmor_< zbV$-enGP{sE$LxQPhz@U(p5}PWx7Pt)l4@tT_EWirdye|BwfpNJJSb0knzuS2h)2c z9b$SB(>o8VVwV!BJxGnih(bcdvynO@IytE5|) z?q+(bq+6NZ!E{K{n?U3ZUC>j(#)gS@dsRGCW!D7@?AB^~QcWxwudR-UYQm=`18pZq z_WSKIzQ$yzD6+L6b{H2=F&9Vs8ua2z;nR{QwFT^vzWC%|!8O-Sv8#)cdx1R@o&9Kd zVbAjK`z%ZR@u5)i#`WkMh-<-u0E)k$oTz7n9}AY=~T13t#7)3iWrY zU<2aY`vyCg$QLkZ)P!U>SejhB8uT_eM~~g zbQlu#$CAC()%b4pRu>ZD)&Abg{P2L};COpMZ*>tb_Er}Yl6mpklHTf| zxipjzZ!S%ave3N&$wBBuytS;i8uH^U!wl3Is5LOwK!^~E*9424d)^o7?3!SHWNWc@ zEdIxaiSb@%J4!9=x#fH8To9crOs-u6o`5@5&PH<|gtfixJUg=0lf|pZh;KoME4pLP zhFhJ5=ziaTcrWfMug6E>tbxvNA*1*xOGye|mu zcHYC!${pde?R!?BFYv2QtB=1C*LgowHKzzXtc$r&n;n zj`$lBHy;@g?}_a9ZSFfKZ}&4t!iDxX53$N;!ym(F3yn`c%Z^-o^vRz1;m%F)%q`PjXkpJ_)QOur9w$Lo+o$aaO#|pT6&+2k?SR5Le>D2;d>%R5BP^KLufA&&tj{iF z$GavvA7F$n?D^?;WW!E%)J+KzIdLTYJ)b~b;U%3A^x&MOn`-@QW#&To=%wz*-i;9(@0> z-X3m7_3`a669rDGcX0$Sj`q`dI77UvpOvcxxLV{Kb=wbrJU+TGvbB&lI!#|A7ioVy zD^E+Vr64!Z_ZN(*g+1|a%jh%mE%xM7oFyN7bUs?g%yS8(fYA&yIJ&rPSKn^s|3v3L zsqTwXT_M!D*sjh;`PYT~B8(*?D0lpGj%}1%2FopeP*7rz#xM$>se;R)rK8a>^9v~R zT=~>6L24Pa#vR|#mJ8&DzbxSm1<;n_2It!t1vb^6YT-xY4NgSv zERgRH(ia*Ubk2E)wH2n@8`_uncIP=*orOIysS^t8v)ij<$w2h$5D!MGA0sy3$wPPI z+wAHBI5PQ|MEsHNy!faB`)A!4^utG4ci(~8Yy5g!|l1j&?5NYKQd3p1iB5q8syT+1DeZFj16!Jzf?8!z(wp z?WZ(AChB5MP9=!MEk$rWpk1j;{kX|b(pTlP)pVIMnPX>Rsp8U;`naS z#)_Bv{(*XYosqgTQ;UIzsw^%BmWvjS0oVH%S#F9fmLfqEAwOaNVCWY1eDND(Ouk*~ zv#+R)JsCa&i3y?PGbE7#D_5W8vU7_Om6^Z$*+(*Xao+AArgBe?O;~M^O8XWn3eHc$)M%S%AikZkEF@V%CIGa zw(gX4a@%gPN7BG$UYzDSGHD%a8*7iGDa$N*sXcNSbQT_Qc&I(HD%O41g%t<-@*~^w zhTl|m=eaNWqc?;A{2YJ?R>qT9tgzg`7bC?(Je*7`{+)-0@brUcM>Kqvd&+mm zJRqY$QhmSdJGm?U-$dt&Lf>2WXV7Oaq4S6yUR=2|{8^>2E!Y_;JjETtTKh};(`pZP z#dk_CYU3kn;g;v{c(p^Weok~YLbDh4%=+l|eQduvyZvi&wqFw;QS%?R|3zv4td&wS%#v0&u92^6P=%8 ztS;=i`dIW7gv;#lB|=Zhe?-sLYK;)40v=^rFYHZkT3&Aa*~B&axWl2sd)QSY}*?j7Uw) zSl+#2d4G!GlNrc~n(XH!+wPYgG1)}{#(7%$W#416e=B#7L$NgfBsd3n3!7^DJ8& za=x5i)=UGauh722huI7jxBWyW_8n=(AZV%Dr4Rnmi9+Cp`$(X!*J!iNdMnu9pSP?1 z$Ua@FzRc(zz4~C=pZcEdvc(9ZmA>ubpU8Ub$8VDbjnYCXXYyH=v-WS&Pfqr~r?k0b zUv@6sr(S1~SLt@+2{_+|ilL2df#_mWc2-_vh%zsAzKSeVSsK~O8E9DlWm=9U8kNbl z?P{0p$X@W7RFpflSP;rI8UCfSpWpZU>4%v1UIH_82t z54`}Mf9vn$$f!7ZUWMv>C|w7U72@s^-VKzs0#McjC{x_@5MyBYR#wrC@}bVMdpc1J z7yLjj74v~)aDg|!fJa;o@~;Sg1G}$qUW&qS2V%L+v9(aF9;U(T_$q3YfCDh4$qEk z_t~ej@};2M9#Xj_5d92Wb?+O+O57UHlo|_TPX?lG@InHQeWf7s>eP<+rv{=Qr&n@& ziCrtXOa&gR)!eovFejBybHNQ)bPxpC=n62fXfcaMAH%1RqJ53s3}G8OL2~8WZJ$Uy zzz$=)g-R-)56_JB`YJyRL~kdpXOQmjT^`N9<3*R|N2E7G)n=h8Mf1%_+w)wSnF>4> zDu}!`wc~@SZ4cU^{L1Is9u%4fgXTxxbjQOYhc`kffmj>JG}8%u%RMka5MfE;SIBqA zFF0b~4(~S*>ti69e*8>~EZklW6}Ce#7=hSMWOYUs(_L*I3Ug%w*r;-;*tBI}ms=ld znBaVxH4NhY`SxvvT-YRp`tgh^mY5!dKWX1qlDG*q8$Lo2;cymS@P6EPO5*ESKpDF2 z+wv2mrI4{t&Pk}7$~PMq#pQsjTGn*Q*;MU7>;ONUNC-;mhFNg@xna& z3s?)q&PNlZCh;Y9&KqCk$2{T31Gp~y_}UxU{0Q?Fuj zyyz7N9?R(e$@a}9iF0tHq4Vba#1JHmlTi?e{TTGYo_0nG3XIsWN>UeVkuiOV4^iIv z7lQNPN9-UH&^mSrninGnA)ujpbKho{-VFJj_A$;$yHTHJ>(&Gd;qHH($m|WN>}K}1 zuRF6auc2_M)U`NOIJ2%+QI*;Kvi0tDl6@tzo$quGv^@L6aLp>1oP|A;qBM2|7&*gj zM7WaSn&I{;VGUw%Bk10bG&4&T#spTyJHdba4^?1z%C711%iQH&aO11haNWC7IU>I| zUjr{C*3=umm?Nyg8H!8xrMTGHz>xVFZ7XRu?MAcI^CISbofX}EaT>m~coUZAZ(xWl z?D|nDQb>vEe9FDU@zL; z5P>gfn;^km7et)TRc^WSM5hx47z5yP)oi}F>y9U};`!bUU5pp_sxeXPbvUgjQ&GA8 zcexgbUJ1Ei#lPW(E`)W0&`F;mGS=O8LgiKY;R_7yi7_ar;~Zrw$9Opv2NIt}9_B{` zB;Sf3L3awBgKvvi;@cCKAdfk6U0jyBV6n5)%RkMl7wR(;mT_UvnfH+Q{?M#EXO-}S zYuB$ad^_V@#tg#Of`f1bL(cndKf*UL>U1IQ!l)3yV*u-)g(Nq>f2gc8G6Q3pv<`$t zSjT3{om-@~BC!vMc&7Q!6P@Yo{+3Ue`d};z+!gNsQT)C(BYxl55Z^u#0WIfU*uaH7 zk97E~!_|#>ZMT}8is&Zla&ozcVtDwgon( z3tdmy!H!p<&6s9NB2FG|9@KUdMdbya`zAAvH7Ji&h0n3?%I_RAAacYPxOWvA9=JS$ zP1LXC-(Mj z_Usp~`}=;CnqM-?z4uDrgW4X;z4uDsiDcp))SD_V47&6cVNkp`(S%HyFFGS*z!PZ5 z6S$JblgWRTq6v;b(gk_+PIPX-B(bpP^t(l;LfCMn3XX8uj%7KPv)g6ByWw&>LN$fn z+Y`8O#~@(zhx=*q?QrA%+!?t}+V?d=9tTN7xpVLpX}j++DeRmIk66n0{VCNS_^;2& zmgk=_2p9H5?jlL07?cBDY64Nphe0@y)XdFyySX}cAP{{Bm!19SAGVV^zk)4V*GlHo z6bByoj_4D|aAWd0ECV*PC=IH_L*f5|7&Ul|ie8AQ=q2<`;=HflwgoL9C4Q~hkM!cC ze{^P|UWt=#p?+;Gu1H=JKjOxjjS*>d)|u|ad;3WNk(f$GSQAi zm-AWF4rT6b%M~BJ>m?)I)P1r(x);NLVb7&^l9$EsqRJ7r8w#&ym_52WviAfky+lN@ znPOk*x0`*~B8lt`M2-v$ME{is&*c7kd`hvfe8~^Q-o+RCerM4^9g`n9k{5`*LI-<{ z53?4g8_Z!tv8+jk{NO7n?g>Q8Q5G2?E=tE!2KGSYnbA4W>~wk?T3P(%YzW>ZZ_UTj z%xQ30g!nfy0@3F|jVZz~th4<^Wg(i7{B5KXy+imj)inzj1NT2m@sa~ix?NkQU7O6C zMwzZ%F5fe{h650(uKg4F>{=uGR-Ak$vulCaeWH8m`*n91xeDK8z6LKZMI~6{3 zT^C;ycc3=Oy&R`xbv0=igD^!Pb}hbQ=_cDT*`-Baq~52|DsSWwArM#JDDmESFPE$c zg8Uo$KZ*{D9_5H1VWXm{p1-S=#~ofz?(ITE?^N)1e|`mx$}*@V2KL~;2)mDQKleW- zI1^t`k$^!E*pnZkaqivulI57PP^aNX%6e}xx(vmC2W36z8Eg0#NhgisUvyAShJ-zKlgOEb$ZLVx>gx9ldC?Q;7sqKl3~OJK}y__^8-udcr5 zGRXfq>Pjp@@$7OvndMfp99LUfF1_`{js35)2Z^f;8EnI)PwdSZFVo)iw$t7)`cMoH zFNEP)Kq`?gN{=*9LB9Y6MH$3>0?}tV2)0AHWiQo!y!BitG0gDoEE8!)D!v(Y6h;zx zfkpK`oD~T_?F%fv2H9Aq-aisoDxU2t(0<%`VP_~0+gE4D|9HW3ac8r0PM-73k-VLD z3s&I&ylZcKGtB(!70*`wJ@CUVc{?jnap3*{>gx3MR<1V-Beg zIo$}I8QZo!JcZ;#(c`158=QL~Pi(Mxwr!MUjGMQI-+wy6?O3IrU{_)!{6bv)XMX-W!P0JqO{i?tv&p2oH=W*8sO-@@M&wbJCxM zN%1X^bMzuI(~g2%417DX2w%q2b)Nv`C}|AwAC959|2bEI!LaaHDObac>qIfQ?Nktx zI&&vE{SL~|Ay~zpL_~iMQ)2?rN?akauhNnlT>|-L0)kq`HwPA-$~kO7u&^@R3$1#A z7PLEXKVKIcZwVGxJRAS8uMm6>bVhNhvoWvonZW(`qFeDD7wnApZhrfmyxwP$c`w*C zANnc}-nBdae&1hdzd>@vVd3B`m;L162_VR@w$vGKGU8hj&!qAFV$Q1=U>SW*{86s> zP+^(-=bZYia9ZaT7}m8rAcUldUv=bVqp@;Q7M*0crC@lZ1!4%qev3{BFR`lFQr+o$ z4qfM*TEs(mB~Ao#1QQXjY9><&EEo!485J_hbT-Kc3{r|$@c zG-xRfM0u(;z4zClj08+{yxDVo72Sz_|03gkhH;VXY8zZ?G(C=4jG~KirA|`M6V14@WT?;3R8KM*N$LXO(w`0 zR$YQr5q^`b|79SI~W@!ZeHJ`1_#7dF_sY)(u@)Z@&){ zvashT^Ef*&9#v@D>q=4_3>Pc+c&LCUYR};^SxynjIAYb$QyEQm8@6%ok)?)z19$Z| z78bKh9S{zay^#g@#%u9NJHEj-ErPS*)Zx$us*fK;<>}`yK;PGdz7x~wE5n_xg#Q!z zzL1+fJi}sbd=)m{(8r{qkJmiHx1 zs1_o^x@gJL63|^emRJ9btKfITghq*c*{8(1vGQsEG=f#9o7u@*7<+pxT+r%xFieg; zYbeJj3l5Ye6b14igZ=E|&i907IfawiPIfEj zqm_;P*ua)eYX~cdKCny931(0vJ_%(N|7;@(lhS>i#v+>YjF9hbnCo!ck~a z++4aeU2-yO4#Z|)dW-08Cn|USyUxhBP6Flov99lod>7+x)&P8Y7+(N&=vm5v&x1^i z+8A+u8TA@=+yr(YEVGel*aEHCz~R~+ybF>T4x<082U;kFR$c7t=ZDToa| z@nh)w!6^B~DF{69C|VL5h5fC>&tS(~e+)wjhN#mFJ9#uo^v)i|BVKG6G60k`I9~&8 zsJw3t^%Yl5J~FD6Xk;dCVmFbWGG^6id1DkDGTdX*aF5qQhHc8Ndk?wXqJv|^(TVL0 z7}Cxq-0cZ9B7XI%8`ccOKf~657DYdV}*qu(F{r!RA{|ek+%AxnZFI*6L|Aav7lStX4i&4;L-&JJKftOHV z-@-Vi&YQ-*zr_2om>q9+HaNK3aY>3T2XQ(L95u!2(~50yi>*i%`y^K&802Zi_(puz zw&bZ2ueKkUV(?Gg9Tm1a30LjMmthz}0UI@%`0kU!Pz*xsvj3Zw2&b1up${vi)mqL` zHx80p#@EXfg%}E+s7T`MTp;>$G>$U|c>3gI3?JO5Aq&oO_I_{`haPC+E<+9QS@SW{ zea>DqX)obMi8&^TYdEntd;kjgc~BDN0uS6FZ6Yc-9>+W4+nk^ACI%4kl#g*aVLC0OTSg!u$K3-4?d*0SA=rqf9F<+wD8Cs_48b8CbO7SRHfEIbgQO z!tgRJ@9^BXJqZilF5yD3e~#%q|V4snSlCGl;b;Xj^gnX zpy7|>Iv~?rPxyW2$o)F*Goz#FOtxCGk!VH#<}A&+-s{oV0lGHwV*{@l;@tHb-6CP;hQGVa8+gsM)3;pxB`Bfu+;&sXQTX}&>S4g!@bjCj zhaVewO_@2K1Im3~#uy1FruF?fv%c7q#?q!F^dnS;VQi|xq7&7o26Rq`G4U$6;I)_D zUj|hTo!=v!{Mf*2O6N~-ANB{idV+OwUfX86d^Jc+%{QjL{&cR+pffrNecs4xqE(42 zDHw^fZe)kdMb5olHk8CunP9y$d5g3P7X-Rua^QJvD#4RR&R*yd6st@y z%GWzH`V|bCf{VO@wDa}O@Qi{14g@I}xc?ds^(C|=SQ;0>)KBPKG7NnfkNBM9%zsHb z4znKr91Et6hm>U*2j*?$hl*?^Wg~nwRN&D5S(|e)kUm~L=x~Lr{hHC6_y*R4IzBiRIE5xhrmI*nYI4Wn#W1p5 zZ)Pj@PrP2VokoquV?2oqXu#He3My%BWWLc8J{Rf9&+L!8Qx_qSt`B zzG&L`{W!W!w{a~pq(9DSxB_O!L@NDH&d)GxOjL<1()~G365_Nc?zN7=T zGx>U#J)xWd;Z9t1s=)}l1(#x~{T*_XW(QLG8~9DD|C;w+4m@!dh$L1YFfU zX|p?N-V__0D!=a`ZyPwZEW6rJp7<$-3A%Ee{d4l4!B^cs9~_9? zV(tNp`mGz^W4aW?y)o^GSGZau6lYeq0>5P{Hss0uP)5O~A;-Q>w}5aa<*duE1A| zyd_6sc%aIArsWKT_0Q(XD%KnEPOHfI6nUQIb!Ri~mVMgYm=5e&ew@oO`?XJ2Jj>m# z#8gmiN5bdA;X}MrragF$Xg@UG@fi`ir-X;1Pa+?jt+#*1xHg^@XY z)9LTL%I#Hc!SF!f0Uj~NJcV9OkZzT-sBBEjj+WHxT!M?RM%%*|RUDSHFGioz&ev>) zOmr&Q4S}GT4^-uNie}PprC{O>l+t#cAh?X15v+Tf!Zc6sNN-`0ZgguV^?_&z)uQ$v zp`dvl^3yO93wvI;PUOwrV#p6)Vr2d^bZ+<($~+L;itjj=2%#U|oF9m;K@v~@y~?T0 zZ_o0DuXip)OXzxJbJq4f9QB8VOZklrvUyJhv|D-Fil?DC|D@b>Y~GhZ{GZ~k5&2K? zo2`00ztigP`wryn?bpBPYydk%51yu50O~hD%Pi;m7s-+0c(1#AFZ0r292viZY;Y#L zk}E$=9uKBiTR1#lI-G3Oz+3nkXIMLqf z*CXsf=X9y0?R4y%eiX z%Cii@sYQn~;!k$u5Y}8+&q@>u4_D30hhxCMqCjjWUHN|_T*Gbc$iES;c@SSP81BCq zIcAAs79;N3q(N3CTQL#!Ta|1=&(h}~yf#REzVF~oPn>^t9VvK#^p#J&tgvv0*?^nobfx?#`F$8jXa-*YS|N8v6r zq8_53C|0y`2iznK$X?ux&f{$lf88iura}dx?N|rKTm2Xv`8>cg1`qw=S#g=iJ~>Ft zQogeZH`r@wVlnI>=6npj;iq8f8+c%vbPQ&xu^ua9h}L<4g)urY)L1ehgLIIwxvf|m zzXCcc-w7;!14tI)JQ3H%f!IYLnLZ9C4$#>cf7?8?EVW?m%*W!~ytJHtn|fZPGVvMO z9{NLuDG)H1{5Ul}0}>h@G3EyIk7YOJ+n49Bg0;B^+`t)Y&N1W~2GCr;^V z7Lt?$(!veslqG~ifv_y_Bls?4$nY>bUlhK#X`sp#e>?Hohm^4iVxW1e z)82F<_M@KS8o`SfilMm_LKj2x7+S+akv{AC>y+uX=-W8^@da|2ioiJHw! zVOO*lbs*^Qz-Kwc$z&KeFgsuN08{PdX53?7+(v$EATvE{a zdq%MU-8lFRlN&knsPMCz6)nD{H4azFyeE4g%Uq&c*vNf4E*{$5X-^-e1rwIq0 zP;p`qK2r1RzfdEN6+e+<;Dw+V=vCh%5U*(RqbTcX@@41?=7+RBEVF@?IG>8|#y?mb zEEx3yS&%qF?H77;)B2)Es|>KjcgZg)k9i0TpiW{c0+cj5=l)805xD;*428}JCrB@> zUkp_bHK6H_;YCI01q@8QMvA3Yr>V&@j)ph#LnXj>>4+YpHPbE{T=Pq*3CrYnJ-Wm{ zY^-;Dk7+BkAf+FG&9l%~p1(#ogOP$p=TyT^`aARxX)!xTCC!S{8?UQ60?{4hQo8aX(?FZ?RR7-fg z;AFYQ^)$8_BaLzYD9Y#XG$2^K(&P7D&2S0cKuKCQ+g=V4iC4gBgfB}fQ6B-*g?uZ7 z>8RWhh~9@*ZE@zYXHiwT6C))Uh=wt{xbtigE0uYR^Xz>%w`I@s!RF^z99~rth<*pt zuu}&rayj-mm%9NskP{6gL}%JhvUr+%pLsSH=TT8-bxEy^5EbSitICL`^Sh^*DOIv>Bdx04DPXdn} zj32ST%oizO;S%q~7J7kk@~TrW0<$ALL>-86f53hm!;OWD?6nwKNzR8U4G1|eta01N z^J`b1BEpC8cq*#c`K}q2@M*BAFYB*WEYZ(7TKMlhkO_8=5Rb9fs(Ll(?n|530(M`P zaVO5~zARalQm=P-8Rj0lFEl`~DcFC3=F9mgxTwsBmi0T#X0KgrblGhzKfSSQC>3pt zKXk9Uyv_)njd5bZnejk$J+JkD;f?(>?M%IPW>vbl2A*o_=W&NksrqN|GCE^UJDAgF zJ5RzjbvGHH1B+8{Vc;+*sk|JKh!MCoPBr&C7vYH!bXgA>cd^cXe8(sqj$3j59N8N& zuUbz)DJ^k)U==Vn#7Urouq<6QcjCsP@r|Kq-!Kb9D6#;a54KxgKA^+gX+j^BbD{FRxNscGpn~=wsHEAGhff;20jx$3C?o9!Di<3uz#Qfq z5Qt5nwBX{HmmQel2vtk)^+zdx&TjK3reMx+*S~IDAkfKBvGe_(>%P^4NO77#jg8Ky zf8mbT?Sc3^%t;FgL&?-<>%dAA8UU>p6iqPmFQRJlND4w~e}iHm2;%u-AdzF?X16%aj^*}6%S<+Av|F`iUKjzUg!O(*Fh>oFBF({il zw55Joj_IW0Fdo**`9`WFo)GD0c;Q6jku*Hr#o*3h&{?Q`Hs?2K482!fL3#yvilhYh z6xcj1sG`<)MUC){H_Jkt1{*>}5qs{rzUG9Hcf6=GG8U_UoCAUVt$4|q1@9D0HM0bo z0K+O?vJ0@pdW-K_JJnR?H35S+w&{}3Gq4fg9f)>&u_&JwBh+d=s*M` z1l7j3KndZy!V9Xwm~3=T`k4qN#3q@8MzHkz3>|?v`8Qxaqp|mTEDq%S%s_m3I#=jp z^J-U|MwqY_s#vE<2%}^p(TEZxZD2m?V&~EA`OgY{i88PP>Ta)HMw78W9}loK|5Qli zc;U#dG!qUO@ZAc4WVtGKXd$;IX7U6{|U0 zY=S$*iNQdfTp2x!`g6@aw2V42#9F~_`*tbb#IN)6BZKo0v9SlFG!nu*jn;9%(9O{DX(Pw5lOkj7T4t4&b|ALJ%vYuu}1S*3Ub&%5q zD#e8LftkCESBVpsPLV9h0@1B5GtPv~1O@rokIUxA-ysz|8_RcjpqcUB`z3Qc`iKLo z&~fJim_ypb9Drj!Tq?Ydlvy0q zVyS?xqAfgxK^WWUeB4liyRrU??qR&+!vTRPy-^-QX~)f2e?L%z@ruq=<0ii9t_H|J zMlG;7vFKe)bJ^!EnmG6~p4|(?q9~Z_+(kJAoIcZ~W|vFFAQc!}M9)9b%()2jC8X~- zpWb06s>Fo%an-DkCC-sOOI4yC%t>x^_G8W+N;O)5)gT~#%tO8!~0ob2}V1ktg1JOb_sqXMyP05L=ei$l7J<(a= zX`@Pf{b3mfajPG1!HsWWeai!N00DG0O!iUiP>F0dlv;Giceslnj?N%OlC*4N3ps0gFLr z;xvv96ZaXd@fQs8@)gprG?!wSxD@Lj7Rl79WP)6f8`r|~J)SC|@9}^sI7tgW0mf>< z#LM(jF&?wW|6+`(wDB)dyoDe$=lF+)q{|H&q7KPrU^8bJ36{xw^Id;hg#&T$6nN^6 zFXN8f;}4JapFmq_^aL{TJ3oF^*uO0hdl4c}CxI5hNcsh+4jxeeca@6&LM1nJG2TS$ z$WVldo45Jh(R?dxIyvaP@DS@KtMFtcF6uT~4Ytu_;{#nwJa`B#WBg&Gs2sCnqKHP4 z=e)dl)dc;s_-rxUR##28ux?IET9P(KT8A3h{`ZS50iyL{6 zRq6B94cOU7n$ID2LHy~=;Xp9V`D%uIR$v9>%7^x|-ub#w9Ip8jgIT*5uQT!J_}i(W zWojH}m1?a9Q^8lG*bMkIGp0xbr4Q&j)gKfHp6Sr@TQ!%g;p4`3<6xoT1C0>8pZauOOn~*t&5QaBUTmbOJpCX)8lBOui z`&smpF-LudQ&e%5hl~+k9RI*s`-+b7Xg57d`p9ofA2J{HD^A?b7QFUz@!d84{8bfI zm=i#>;ro?Xl!EPe1gr|};H?jlygZV35gI&?SG>RoBSf%i|CU|qiX@Lo(`51Y8?40V z+G2k&AObBavOB6JYgK{{gxohxPL3`FZNZm}*jd!^0!jMqn0hJe>EBZT@bKdvVT$^_UgntgQLnh>U<99LPnjb-+ zZ=-RGK&S3Q3;mp&RJW`nj2BlathB>QVzT{{E82CCck#CKtUz548C zKZ2KV@&ADLR#NIb9U!h=L59oKe^3>`<1_KbH^pxE^eDw3|jGka#&kP{Ug`P{nBW5 zc4Tv$#syN%<0XWN^JE4~ZS18u^+*P%RO5L9CGkawBsX`r?eSiVr5SiKiP!)aG>D>^zNO+!={#eyFA_# z-`v??^r#^5227iY$YHOw8f|wjSpkzDs>fdI4}PIzCJ_G?-J~=l#ORwD=swWDkssQH zsp!24KT9Cs?Kd)S!~$GzJd4VTXAE|e3x$B!3&V_9a!DT*u*6Twj_qE`L~ z>1B%jDJsqe6|Us6Ea_lUN8K8c$ZRTgcj@u&HqjGS0>gsX_gSbWk;l5c`5gR)njC)6 z$a+hng`QU$n^T&CL2g_W?#cc}G;h&+yRsB;#APSBQZc=f zPJ9Qp#%Suwr74p>%S5q`!SGq8T`acwhD)+9ePE=<-%pL!uxIWRAoI=^+Ba`JE8RI5 z5miQb^UuS$5i?D3V%ck6e{+nbBWO1zr$inWv&V8cwxbDmm?^*OJnJhw{JY_2iih6l zl=lX7r}1(e#CmLQbQ^BSh<1Bq{FPrF_r8tPKV8s?8Z$1HxGSYX{YLB8GWsu``Xwmt z-19{|cX3P$#2=hZR%Y+$X_*$q4A<)!04aq@-sL${r9?U@X$b=qH?U zSX+C^dW7n9*K8R=NVr80Qpm}4SXX)^+j&Ed6As9>mn=sRhf!L*m#uPVAUcmb4)Wjx zG__TZ`c@<257VU%XpHALAb)I|xMy5{a0aeSFlSsb4FsasqPVmBepHONdS*R#un?~f zpmA_dxNdVEWx-aS@6~hlgU#9AT0ZxRnt0;o0wC8T5!@|}A7@iU7_&3Qn0r%0@W92Vvj;e# zj1^Qt1KzrZ?GERyPL!8Jy8326uM_5gE}#AgEG}jcRi!eF)%4$0rc~32|HsFLT`E=C zJH!l5sSZO9>hjxb*Pt5^p?0Ai^`Z-fP9sUm?n0q-;V2{~UEoQiBI!bz^J$hph8!Np zSY!t_b3nsKCjoC#>>o7`W_9OX;hiX{CyV!R&5o=#vXCdtjVyXmzjWk&j1WG=f==Pp zM;VXi%;)1^DvLrRi(=?(^C@g!pMu)K*$vH{reU z>0HlNmVhvG!k~rcD~zr5)G(jda?rp{O?kC5t>jqjW$g$=H$nV}a*Pc`hj0{{vr3I; z@vCUmSbRnO`qE=L!XT{Nhc>{QLT_ci7TY?eqW4o3eLGc=trg{g&n5bP0v;R~&LZg* zeFYnTrlMigB16&lQx$zvD;i)bg4zv3&$&*e*(>9`Bqz#-VTTVR5z0Ch>sVql{Cun| zO`=7^k$g#|wE>G0mf&xndg_gIIg%s>6URsp<3=ui$XSp_&VI2-^nNG^pdI;u<_mY> zz}a9B6y*5~oc6?}S|pp}E%$J%d`5hMAWz1Y%J)c+Hhw{{MTWsfzrcMsrdEvW6;C2( zs^%aD`Uy{ACh>;W|Wqm*h-EK94EVCcq4{Lz9%|CE50BinP@SKHSY`KmDz5VGiZ4FJXtuDcA`&Klq z(!1HgIxL~MJ*pkdJ|e=~*Diva(ct_7_oARn>GtC^7nH93HkQ^{Ex66tW}frB>9H%< zyWo~Wa6z+=y9J&47JM*t3f=w;PsiZVa@nI+3i};y;Ft~vhdHNseZz=8mv@du-xxLf zp9pX0M+wi4gw7E?4pV=j$L&dj3z&9lO=J?pKTW->35LO9{$AGt=WMuVuCNA^K6fbn z5(!i^R7Xvaqb6+ur-Mqy3yPJp9W!n&gbdtqb202M+_PF4JM%o&^BuFbc!aA&h$&4S z*PINR%0=@ZKp@bLL_q|S<_phmQYeh*QbpuoCn${9-D}QtzVi+3OAwDWq3#@py8l$k z7Y5+{Fr)M1&ph)!4CMV4;3VA1&I^E)GeVtqgFjw%4_<{5$L0mj1RU3>)3m|jVXhns zG1r3P$-uG%pCG_84-Zi#zK6xIyPudkKluW#I@dyB%zHnOV%#;A|7C1-IhVQl6-Z^~ zJIp`Z&3{qz(LSFmYLzpP&hN1A6qh~Gn^}KaoaiqQpb5tno-dLQ;sP~5MC`55P+P?T zTpgylB6y_5V*rZ3fd10GfI})Zlqh0QNg4_w2tNia#tBB8dMuVfq2bVMi-sd1xz0<% znj)uI2BO}XJrJQM!*EWrSj>qVY|Re+Ds}m4!bQ z!vk>?LEnpQTDc#vr{ zmI~;>Pmw79k4;b6N76GkIP|01ito0U%W~EGVUky18WwI{4Gof`rg-C;yU(RT%#8P~ z?fzJfM`gcpPv#JKfodsXj2&=S8N(!+00%7C2Ik|uD8-8Nq9fs7V}eXfgOD+m{LNQj zRp0=)@6H!nw)$;U2Kh$Od-^TEb}yGFMCJL+~3`2Vegm-7^n^aJxjm7xXW zugb*FQZ{!G=y7eVOOEi@onW)=Z2@_Mk{Nav>Eqg5o|9k9;PD`6L6t5_0|cY|IPdapDjG}|6@Kd9k?H9-t&-hn&e&B2qIV#ZZ?~5-cDN%y^C+L3 zLr^sz^x@Yx7`Y8fY^6 z%qjiDD&FYd%U*wf;q?~{)Vdl7%&C9WV05`K@iX$q)f2w&y4ZON^dqlCgoV|fu}5?V zs$jbqkg%&;g<~~=m@NZ0wW;=3kD!}DP&OH910;Jm9CsKbmcbWt{VgMJjz&ml7ulmxBNhB<6tqPdp0SMJ4Q98tlNm<_zRIiJ!uJ^AeTP8T+8Ckx!5nxKl=- zo{_+#ISw`!Ge_U^xI*GQbHNQIC37$8O($~%Otd*y0zcE0S4GmL6q3No4_mm{!Jw8z z3qf^a5mGKc+z?bjgERgPZ;)duiG2dgIzE4q5>IM;ROjH%am4e#vR3GWc!=^`wKrbD zRKy_s<_+_SSyUi1Ph^}cx(X8F_UE#tL=P7gwJqPJLv|Aq#r4sN6CY8`8(+CM1Me^CMpTAHz#48-`0$eA|l)40;_ z{Kre6%-E}O|1)_UcesG>;-M#E*t>)Ld0vx&We|k-x8ADe34S}m<&R>YF!2{y0Z%^0 zPTp{vsFECr81$AHP<>yi^F7o+^)gQCUpQ}IZJ}m4K^AEWClZq)j zSF{W9`kJ}epV7zEe3w2RQvAQ_IQ&P8e(?0TCJW>ABUem`XW&?>JVX|Gx2P-v(I#xY zCN5;Y+rR33)LDwTDDg7Jaf*KDEZjx@CowbRIA7ZmHvHeqZ17*_eAfUA1Sy_=dHRT_QJ{|>8gk{`Zrd6qMt=^ey#lwY@T;nwXX8W+V;lIrZtx0zg1z7y ze(ZddkW(i>O*7VCsR=&S-yfjA>VuvE$$5Sj&kqkWYLAuD$61xDx7CGcNd|oaEH-|D zdB3)q+W3lXGvhTl@6IuVKgWTNxRiO%wwwDLa#5E!{C4K}qd!3ZDdj^N>iM$zhf*}J zWq=9w{@>2RA7ZD^orOn2wZP(XFL-dQnCgEt3*!m$jG!}q2MIjH@JcTS(jErn=I-zDle<{s?sK0j%XFRbn!@j4j zGcmU4My9GxcO3tk)&MMTIs26I8^y!@BjhgUZL$6{S`PcanCC%^zVT2sPuT7?&w5S7 z^aE*sltX++L?npgGH)Mp8DL0EEr-wZ)Cd*kgFFdD2zf#%uH>9fp|PAs%h(xU&glf# zGXs!x=3j$M-1w2`cfYlP5zAf>mgeVX#79uEtPT?V{ddnkL4j~~`fsz<%*1=c->1I= zn_c3Rd*sQ|x* z3MD^kf$Zvn!|-}$#GF#^1o)~_<2|06sKgb@pZyx(oZ{9Oh&}@GYn|m%=LAzHqu{b( zm#Ve8U#%Ch)*OEP6R>Vjfzr;URUMEi{P@KL&w-zeuTfml9fGL%_qd@9*Tt7V=$y1r zEe3W4UdLGsSPX0&B5X;kTxzDh9HGrJamh7*a3H#lp2en=-Nx_!$#W6qf#_*8^$qe| z1i~I%i?7DQ1q*S^mqGA}Q57(kn@g}Ic-R6vl)C@ed;*9^8t?8GoIDU%@hqxKw@m`jz z>U4`yk=8(>le30^8DBz^$pL(T9X;%!_8r7flzO*WEy9KqI&{4ljAy69pX-e$0AuXjh4 z*H8C{j1W{xx5aC~X)|tu9k|N`CpKjTCxXt~ck0-H>obiyi^Gc&o>0Bd-WJHQcx^$D z>FCS!M|jPV(swerSr?31{J z@t770JPlWJ9DC+ZwB+0}xNep!8Z%|3g!miCk6Q*rmE#U5*ng@_qsf+Gj45Uap5xNA zv=?Gb*S;%w!)%bx7UF+bg#}Md@z=77Pe<{O7!zUHuq;c=qAm8QNUQGeMqQg&6$hZ4 zr|tWRDQn85rtnhCKdw1)N3wTr(@g3a<_Kjnq7vxVN3Mu*50qBawkmNBMh!M<w#-q~zSMQ`E~L=|#( z{h}OQH_UlX~OvN;fa=ow|y5!n>swXNP3I@5x zI)hQrh_b{VAqiE^w>Sf^Dh?8l-pQ$EjJkduO`uAA3QEQ)~FTEe8>vPJ9!q1hn+OJcyOJ z{Y6j8lyN^jbvp}{QEL8>gBlRva@lC=(UfKT$oRjNrZyt&C%l`pP2DHZw&6}<9Arkd zjK5`+l&YDsmD#F!3)-O8gHTZmbjwxDF>uVBy(bOi&qF5~u#1Q?LkAiaKHgcJ#I1YM zSr>on_!Qg?3KEFbCL0?kgq*2UMfVu(c-eE+4ACj&TbzT_8S=&M7l^$1xAS-#i`bQ#tSc0tO9!|1FR2pBxJZpc%cM;k|#dO5Q)| zE((Ry^8QH~7xMnew=s>#OJ%-e=)^aMv__pzusJ9<#dnP0r( zo44_6Q6czB>^~;Xe!pudFTI2Y%3*rU9iR50F7y8FVtzf|`?nv5BJ$_5A^+0KBYc-5 zPA6df&>3}|4i)Z4uM)m8qsS@qGO&LudL;|xHt#a_rWdiv z{XX-c>#Ttc1{64v$!RrSNyP}`2h6xr@6(-nvz6@a(&sqwJN)t8;850UIQ_#P-^Hu3 zn_)ljD$f3$;tt^n1JL5*z7o+S_u-AX*Sa*JGw1OTEcUjQ10#{gaScY3jbU>{R(MeA z-3I1-kCGLoeF~MQly>8b~|e9|57m;gsj*3L4DLDfMWCOc0+}` z{3)jbef=%e2`3foFL8+BB?^H>kD~fqgPuQgYzz!e*c-#~|JZvMaI31S{~z!u$2_)= zc`P)v^VU(Z(BPE{g6gQ;RMLaNLCq4&6crT>ui=Hx-s*09fW*>Q&0AKMWEPr&cNEa_ zT3+yeD_u)O@rHN#eZFJPxz^fyuLD@``+I-?=lT0QviI3*t~uwp&N0UrbIjGQIEK%y z7r7Vn3&DXANj}!TNr75%`#e2e0eH}yXnFX1IRhOu zC#hHY_lZU`D=tMPJ#y}jXC<8!eVg`7OeyD59KK$qF27hqy~>x^ZsAj?zCdsjXp>Ki z4MB&T3Ho$sLF+CMt?1<9O~LQtQ*3rzxqYnI$=}1YznhyyZB_wZ_gs(% zGA`Q}%N7mL9N%IoC-{xC0H@OSg#^&LELwre zwVeJydR#}=;R|q-d;X`VJYPCzb!ugyXf!8vV-HSh780F+`3pF=cHU0F|9mY!$&^Wo zw8p>Um%99s6#qK|cK}M7&g&rf+hSrqTZvH)>z-FmI2g-g74deZhSaR0~g!;X`LL;xuN6{#Myy2qbD_(Sz_oTZ9 z6989HGHsNm%=k_}#HYUP@ng&U!*IFQY0JbvoJR3R;o8w*y)vu*6{uI~R4LR>R|++LqKclhXI<@Vy7lS8 zhJO8AzQooQD<#@UC({?jqX}+>by)59u=aOAgvRAhxH!Ar!&lr`({@+i^$Bpj(_v(E zaJ|IxmcTV$TEgIJ3UDB8w&8!?+ttoDzA)wiQCV7jHHFBs0oZlm9FWZF$LmP zSf685s5K3!gJH#w&^_67S#?SG~L37BGjiML4qKN;NtP_sM zgOe`Re0$_*rg%NQcJ($=-Q26Q3S=ex6+H$uCC`_b@)?6dWCb_Rj)dXZ>E8$bNj7W3ObLt+>g=t6m4d zB%j6<6f%6c1K;!^2L0}g6ramK3I3GNw>JtzyZmr3Q^+7_b@Ob9j-wafMQH2i94=lEWT zlG*!5>mk_isz!&ES!KEHsmFePrhaJSaWh87NtZSal++ps%Dd-wFk>sJwL4x<>$6Zk z55dafJKfB^yE&UG{o^~lQNkMTsMO7GS`a&;n|JqpX?~I%3?+~dPePTMA@nj0!t8gJ zg<=I+$B$3*bw})GU8sY&)mnriQVOCbMWk{!K+TXhfBvhOx;8-i^dP*eB{&m5Pl<3| zN`%pdkzGtFH?2Opse?JpX=d-0=;sTdsmv9BM=J^V9jJH7bK+Qwzs@h+U2E#4v#yu3 zplx+8ry8{bHhQlW8-3_A3t&pkl^z@V^w@aGrdXHFdgWN7M!dCSWoi59L}(b4<}VCC zmeCzF_Vv5kD?wvFfLe{8PXf`k4FAIv*H6MzuqOEv$2&G+>$MdNr-Dhdoe8)W-(5WB zrD~8i=8oJ76yY%gp@KGCsHJ4yqHZs(*!`Tt#-QUqt;KUsa-#~xW_=x_JoF|V zdGfb$>Z-`#qMgmVU{yvT$zN4VY9+`fR8jb5LKD22 z-brK)bi~NHZJ%c-HH-SvGtNXbT>VYCErr=n(au!2s+kUu3)?)m1EPCJ^B&2~&Rq+y zVEeXeInjNGYym4nXRf{jymgPchgvzS`*b&)GHfKbYM%L7W-k<6sh+vqXEQ;GU@+Ug zoC`s)$mDxqSkwbRm-rl`=)kl9D5-wwm~Gk*7#njahUOS1kZ{;N%QF>IRuiY^oX z)%l}L9Vky65SqOI>Z@Y(p6^?E3yq2btM*@sURj0J2_~HRI1^@)`qrmYSirPE&*@~@ zrpWX9huiG%U!COrRPsk%#5!D8>^+z4XU(O#jAn`{Ha{j1+lcMcem4L+iqo(t| z`J>L}i~Lc&cv=3as{|g2e=txhSZ|Xk$AeH(bFu(TN&xr;6JMx*7U;JGgfROtQ^V|U zwmz`)O$kItz%Wb)P58RD5c++GDhG2q#6<~i3Z;iN?_>$eUZE%|%~krq@>AV@Eq}h3 zB%S5UexcOhhhV?7{Cu<9Q+p+LSRxBM=8Ycc(FFw=xRTjXy7 z0k})WJzbJI48T@k>7F|PESdqh+dhVM!L*%ZCu0+(5_mMDF4RBXUQo~>ABZcytI4=q zCzAr8RkmBM@K1nr`9mMUs1kmC`q4i$aB@wd+|J(uANie6@ty0_cYX<-C)&Hew0Cs6 zBYXK)L*|dPa|p(-)|!rJiQ`-|dYTKx)fhd4?~M1Nq0!?l9=m79L^7RZM#|Po&E8Sp zFd~R(HpZuTH5&9{9}F(;!yJPen0ebQ)eS1O_4nqvi8@o{U}2ByDWj@O zXU*Z*oTS~~EojU7WolY~aKcyJBPBo={&jFfnRk8Fy{p?!W%8CQFu~Q&3L(FTHM6AX z-U--tZ2hGR2LDYLUQQv}&0met{!F%V#Vsgp=fxQQO^HLJ#s9u#Rfrlp_kxYX{nB4l z`)u8}QN7Xve4nLP6@D9_Si1St5m0qfr&X{HIfrhg>l8p8E2Z_m$BECCFvG50u+rlC z%Q->dYu4THDdx^<68-Y)nYnA#?poA)_{3gTwC>1$LNLykNv_aaTXc+CV_A@;z^#}> zl+&4KtL}YW#r|MG&FB-_1=Lw~d2=6N!&RGUL--A=qEfj`bD!3(AVs_O6Po)AFj9i| znz_rBZgU?$Y4t zSlagN=v=}5F|muZ^7R*M>PfZ0h5XL!`$yZ=%)WmH^IP+Z!@QYws(3gwdV55V$S=(L zf(K!Dg|HAVO`)#_t~1tZiW%ep^-2m9l;+}7?B(|aPS*wW$XsOTc}Ds>tZCrvtJygr zaP=D}%5>>(jI;-CeFFz*S|(ZbL*Um79pWX7xoTc2%$iEBi70a5#|<3AsBX#0p~^@s zQrYR3BY$bVz#S#KJYuV~pL7$SBlIafVmp(;ck)xae&Tbe{~V&v^1b{r*}ie0!B-8O z-nKV@PbJW^p8`Gq0Bpc(hK~;%c2q-UCskM)Q7D~_z8kir(EYP*c}|{2!&O~NR8YZJ z4%9VKc{PD*)!*;G>K9AJ6sCc6O&bx;Ru25BAvF;f%S2gUztssF3<~14#tevlh?xq? zomc-LnuDZ{VX7Qh<_~j2H_xy=AT}ol@3D+>I?U0q)7vH|<$3&xw%R=WIxW8>nG74w zN7$|9X!#d4gBmS=kbbM5gM)Lj!C4s^;H2xDXm4<`)hqr-D{#u58SossOLQia6mjD4+tl8L(MT^eBSb@s(H^+=kenqvesfrG5-!2_C0{lL&;@ZX}> zCxlK1eb#_#wen`sWA1l={Z9BD%d1y(oBJI$Qt=p&FojO8bU%*NEwvNe&+7Y}@be%l zV7MBt;BqMc4~hO9vw6j_VwjM!6~N?Wc66v;e26)`*3*V`-rD8)8~0&Z0w<)A8#=T0Up6 zUr#DUPG_sFAE#;lp;F`!_9psqG9UUJq)+<7(h=c?f5XM*`2dw#nrgXXql!A>~Dsd6{~hzE3Mp=aW0s`97{Z<0^fh!S|8=`|*4qYu|~% zMektkTI6k7p?IRkQNFYi2Yb>UO3YaE^Py{#Oh+q~iyROgG9;rReqe;uS;HTH$uJ;+ z)EfF%kx(JS`8fSlE>ah@5H}p|W{28TJLd***37s|DvjprmX`dV#0pw<_WbO$OA z6qmc>l>Vy@Ug~S~ZqOtE@;jyz>WiK24qu*WM>M0`F-qK~+9e< zSrW@57gA((kQOmjc9aF9KkR2jnzBvh=~k+h0JnV(j4oh{VZw#_+IM?ecOrvIM1NKBV^eJunV;i-@ zgp&byikMM=^Eos=i@;RskD%*#4xy9~|4ZvjF5}ne37E~YUjD*g@?WLT2fo4c8^iOh z_^bN)z5KGgU)p|_a$#0LWb?;FUE$5&=*`4G(tUQ@snFP^_`Dr$>7r)I72SJk8W|7A z3$%4U#_zF~z(vL(e2(M+C99oJfWOD-Z$3>=^9je;-yQxFWZU0n%ksS4|6OIk@_VcQ z9n;a;H~CMrjs49w**+Wf30OVYrIfr*PwhOb#adHaV6+M^bdix2esT z5W}p)SZUdWp2r%u4r7g6hq1=46|UObOB-8QBtq@XW%$|9+Hmw*YiA;EcX2w)K(aFWoR&J7!Wl;i)NtOtr}=Pk z)7sit3C?*id6M$|0x~f3_8a)gWqn&dQFQ+HUW3efm2D|yIj`QvL?ieXtLk#Dzfn$H z;hi0-W&WSM?__=xWWEd6qCTCZvj8v9a~yPH8R~K>-wtMpiKa@;L>q z&)^cWdYoV93!Cy1K2Sw(JEJGIv!y&!kMppB{8DVYm_fvYI`9*#nmb<##s2ml7DfZh zNN4m7*Y+~kR#uN)FoE;Q7K6gB&)a{(UT!i-bvS#Xbz6~1l zmHuAF03i=%<%d1Bn?So-O#SyP4R#8^yc-{RaWK3nDz)q#xXrTI?$I{_KWP@*4g6wp zBkk0qt-u6aNAzXNi|%*M7pRLef2z(VwXiW`*yO@TO|=V(In5r2McMWcxtuWUZH#QJ ztzbr-Au+Jf>qCz1$1#?;_EMahXj>K7q!bob(IR)vVN=x2w#LjMm|wRmV8yzEhW>hJ z@+o#=1i_T#Q?MX4#i#lCXXzRx{C(#C7`>p z0kd{k$9zqoml7o1lR;8AaY;YU@>#*R{}DCd;US7zZ2y1>_mReOwk=_a?fFT>PJ9vZ zr_~6~!?2TnbJ4PSPS;&+;f-kM$drk8L2>46+l*)S;t(u++rb}G99rZ6bSWvX&^OGt zx07n+q&iJmWVK1R4goy@IYMiUA-Xz=mwUH-G+}_Lur^1hl8U97-I|Q+$&vExtdB$v z(;NSzMySCy5tZoYZCO5wLnz?&;MT^)mdn*tC?3g~{rEq?L&)cAiRNz`RL$KyOz@MH z*EnIt^E0pq9RJ@ozGH19=0v*#89J-A%0C^8ju(N!Sl+4I1yfG)K{(%16!(8!NDgwY<9?H(mTf$OaWt1U1cUy0 zKK_33{{sHT8yF!l%E3kWUrhM%cRBd{?^*BR z?w-~U%wMub|3iRcXWjt_0kQN8Ffr6pDh;RSaMmT-~kqUVij(*>Fl*V+~0DuzuX60cy zV>_+AAP1iRar!k0_V@s$X(oB>1lmjve%0#58H1m5Jqw>-$QszrE1b=@Igfz`Xe*7E2SkY`I&|LI$1 z>yd6k=(t(}SldZY$y?3E%A7tkN4uiYgK1lYBFag(O_Cpb9 zadN}docXgN5uJB3tdfX~*@Ou78dX3Le`qpUmxjxLfX1zHGakdRzG+5oY|X27@b?(p z4XRG)(DtTge|@AWXjrpfeumR9(IcJFR!*8YWND zg)VSNXum{BDE43Q!!);NO7>rXG0g>u2<#kyh9JZ*pAbb z^|%q%yyLIlr5bs9lDvjmzd|37>g%q0S<2R3Jr4@jNYl%SG!13IfT4d)ngW)L zotMZsuzi0jLvUS(lcRLluO@JY!TDSpaRv&RRl`lvaKSE>|KQ0_n>Jz*{`k{8LVi5H zwW~_xIi1JXZ1jPgneAzcQf*JOFC3TQt93;vQ&BNAlQ|A$>u6hZJRRB5 z9Q_Pkts}3OYX?2yBMiFyr?R{!Me|Y=$5%gT8i=TQRxfRdbb;qV+^t{^%o}V|PifY3 z1@qN*O%wKjp3!VvFb&{mzFy{j9n06t-PeK9Az$$HB7Xgp=tUqu@qGKJS8b4^KCL6i ziBO+!1A)e^CG`#-!JMMx*MZ$xBf+`ZQW=~UZGd+xsKnmNDGg~B{uo?s z&?rZ82rHAbr;u`MJn9iZdq>ERkH+lys1*81PZUZC-@W|5S;^e~#YD-J&L?p3QRn>I zFz0lRv0U1=Jr86SMkLVr1U{24;w`jjRLT9?IeJzY+oa#P;qYW^$405OcPt!;3{@@N zem?8EACSMkLEQTh=XqAuJcB^nd~Zavz^5$mS?=8iU%P&-;a*!-<~d*SxXfbyg5nkR zNtyNei_li3cmc+SUAr1w?E+jgx_@2d1jO4;ct`GDF`O`t-k3qSBxIavI~vw=|O_zfVB zl~bRwzN72(20lYs^=Uo>X$VW9h(1}#NAb4H98s!Swfiyqb!@PDyqz=80>c?q%h$8% z#U~cI+oMF{sLT9=s814!R%~QM9Gk@M2jwRVxgg%`nldKwB~h%KdwF~R(Y#w+EabYZG0`!gMW`M)!~8_W-1ennhE~C zpcMPBCj-SNF)Jv!CJp<$)HWzxNc_IMR4bAnp=ys9mNo6n$1{dHhMm@ly`WzQZEeqL zdf*CkdZoz@FD1NtS4K7SimBv;m)D7RdCQoH&vxOF&owIOc)v&2hSOCkPM?t{VvX$o zPTKhW_t)0=y`(YITpKPOTd1TG$p6=s(VvM{nLXH6DE&~@&}(@By$0&CG#|9Bp|Ynn z(&mQdZI8dQR-k*)mFqg*07sp;!_6SIhJq)^H8Wl_)%IENwGNnS6XAo!Y8*Gr+(P0w z+cuy_oYvGpPHPVMD5S6fn2517pFwTmOVzL%60ln1MQ*zoB&tqhW-+{;!|>X;APnue z;eI9EWWq$LEjR^9@>uSjq!yH4lZh%6IPgW~P?_JMVatDE7Do3w-T}8Py_MZafy3uM zwop8@0V)Vn-4oji*^8}M(4wAYMV}Y0%*Q|jI%TNqQ z;CE&)%ZNiE+(_^v5v|qL#;*KcEiv+HUHC+T{$2jK5$LWTU zmQ`*4T^}Q(4_TESAfT4j1}}*g&L;eCTUX;d6HBUIU%SCR@vo>-r_Zi4Bcvyx%hGLM z2C-^ZL{;J?&ZhNPGsD`a8G~*=l1i>xb`~YJ#oCnAFvo_u;uD{b zB8uK`5OI5~h`&FNmv1~L`=6ahzqYT=qaS>!>fww-tmVn6t&bnF9L!KEts+oXDDAlc z3RN&ICOW(As2V6w$@1bdSz%o@hs~hpMfWvr!bC zbmXcs_wM|-YEl=@{3L_w9QK#B;UqQQ7GR$Q4q2Zv6e)YJ{DH4a6Q2jLinCe$ekEsqan z`X^X&L0Y`KFzZg%cmZ(~+j9Xin4$8#{9FQ{)Pm@e_dj&8dxd7(MCm$T5l#jb?jxw% zuTc6e{Z@`@Qr8#i>me4NBBR!v4LzmGkJ8(qPoh@O7WH9cBJ zyyq^Mwg=Ywaf4&6M>aCn4?8P`-*;J=+CLBn@1CoTC#Cr97OZrnK^kd;@?2FVI_9iUYuw*I!cvWTn!dM@SefRDQW}Lx zf=&jF<^k>JJ)lAo$mT4MjuyM};l8+7?_)MmTUMqt>aBVdpN8X&e4o<S&HN5ImjH z&*2P)w`9z*f+)#PbnqU_bH*mm;D`WkW<#1nyJL!1K(k1z2Wf*sk*pb4Ji97Sp|KWY zU!sp>zZH7%8R;B9zyzXzp@b$wkB8t5&2MqMN}B@c5xowlnS4K91rH3|6g|u{;oP3z zsO@zEuXvCXFQqL|Q@Eqg@dPFn@<1#v+g3vIZNJ7yOf2Nv+T8`2e34q% zN2^O;*F0VTkaO~fK2q(FJa5cy;M~jL_!mfF{CobX&cCT0XSZbP)XI!{FJF}8`%wjJ zh|B4Zf|`z|ps`HNmi|k)%0`bjOGmZ!krKfhxW2Y z@o79v=3~piwr?4|8jW64*axKaDt{2)0m+m0KCcnSU}v=Q^<IR#q-mdGnKwpFoW zu(XiX3~KiaxHI)w;{jj!-RM`J5@0b3&eK75di<<}$IV}P^efSNd3p4MHOKjHx^Z{m z4`07|h?3|T47Iq3SACveuy3OKnW=%#f?e9v%ciPtTYiJK+h~r_a-Il(?%u?@eD@KaIo|R7 zll1HI-M^FRmwflnLy=f|F5$m7HG?Pe#Li ze}Cl&B(R3ZUgSD>PdTEU2xWx zK7HribnZ_6OpNyBMaPsUiH6nZA%5Y&3wXH@mWU64hZ6c_hfLSGDJdKq(`od{3;KZZ z?7scSxaBbRZrl*VG5U?oJ^Q%JJ?>Y~<1=_1^+ujhYqp<%0Yx$MwsX$<-`LMT{(p5p zzwH03`}wokPUM)~x%>GkYWx4{e*Uko$QtGB=O?{j^!lj#`PP3V%k-M|^Y1)oG|Jo0U$`FA&fU+akbf$H zd~N&r=D-YV+s_}2zbZ$k=kDjfP1`l>=jVX~7_fFf{~!^-e{Vnk+&|s8>%O1w4HZom zdfv~cSRGQ$;s5S_{+|vFIs5rfdpLU7&rkKt(ZhbeJJWCee*St|h(0~+=bL>0Z0Xi* zKYy6-@1yPK|LKMadMLA>|FrL~hyDE2XC42z{k-g;WIx}FAersw?{MB!psd@^r#8_d z)cQjGv-bUbuC?_#^USxlZlY6JTl&n|&;NuMwRSCubN2IhJMaQt*1VrjxpUi8=50Se z`ph-%=O4DY_qdpkp_%Q6}KZT;0dE3$-yZyY&&Z>>i55kyHB7()~?YU8yLCySPvn*XvB_=oUUKD&S-G$+hwK>n$9Q{@Qp8q(8xL7D&&8?GI7h zH51;i^p!iAsHx(YtP{0|M=I{x_|fj#cml0&E4q4w)h$|~uP3{@MI6Gd572f!&eB?$ z)G%xj(Biooz=uX}vN1AVne%)*U%7s$*(S}Up znL81D1%;HES2?Cp=cGBYnUnF**)V*9$n!M?AQSSu1$7;HN>2syEG`sV8JIGtkf&MX zA&-O#-0q5=?+}-brqDQtJkKc7I}XGt1U}K-rrs|auEy+_MK_~OqraXfAx~03|K7rx zi<9;3$;-3PZ_BUU9MQ@|y`ALf|`nn0ZuBqOJ$vB;a8t1im-c(dI(wM@@|5 z1K%#bT``8{1PW;asz1Pu5#(clkr2cEPtmY5#BVP{rYxVre7h$%MY}(li<~xx9G@6M zEqGO@=^t&W)`lIWhKO_5gq?!JPU!%gw^1Kn)xvcxKjs7qzV*0U7|zvW@|X}6Lj3pn!{cLU$3$q?Z}s1p1tJSR-bJ*s_)xB* zbDVF?ky*D4nqv0x8R_Lh5p#BREK4MrzjUO18-LqM!8+ zu8nUh$U!|8-M6(Zvnk9{J+!?0wuUD6ZM8d_Vg&cUKV;DQ`?lVfzW<;Pbuj5jOAJh8 z_iY(%InWDjRLWNw7gGPaGq^dPMsO+1kIgARN?6oP8Ob2C%htf^v?qQ<~dh%PV2qhM%gXlXGuIiiyxEchvDf&o*(mxGVVUBYIxHT zUlqKT#Zo2-V{@@oqE;CuX8&n$h(4XsXg~Pk_`3`)`10Y{v|6{t+lYBBKSI-kO+J9* z%8Mk+zfef8`m(i@8cQ@gLpxUuFcUkHpFiaKHABvK>MXhU3?aDg@3kV||37q{Sv$f3 z`^vQ`h4Q*&T}pvlS%Pk8v4)>=4TEd*@U&rk6Dld8_nx#<52jal2X^R9W|qr`SQ)J( zI9Xm~$r1_wWPwWIe>8zV{;MLes>g&;)j28JoB$P6R9J@9oVizDsl>7*Z9YvP}a zH(b67r!n2UqG)fMmx%H^h!X#%I$mn|FJ{&$|K&kLCHpacDHM-*g9PTH;E#UD6KTvJ zigD`m7H)SmaG5o<2Tje~{JjFTQC_sXE5V019;4}?(&(ba^tBXDt#nzOr5wF^!U%=Z zeQ@dE)$xU5)~mNcq_V;)>aGmSpNu(70rLZ&A*#Jd>noN_g7o~!=hN1NN4j9 zNY+ALI->1)%ccoFSQS42AMrk5Ab}_Pw(obBe7wy2n{^Pk>9NU`$G6LKxZ9!4@J*h> zLJ$!zf#s6^1=m$*am(vCQRdq*Nq)gEvB{#x=s|S3hCe)91IaIVm|4S%eR(wxu8Em( zf$OVE@|j(e3y`weT?w1T{iXl9v>xJz7=-rdo~v7B?Iyf-A_Pv>%Cp6Y8J11g#-GsF zLjB{l;IlSrxQnjpqPyHx_b~9C-}7m7s#RB?zVlL5=Se|{^;kl3JO6l(ouBGE*Qf7% zfOTG%fwJ&ENAY%;Gx|NeSDk23l}Ye*#*41CL9^b8s$_&M^f<|PvwVZ&P!cn5+xBSr zC-%e2KOW0=dUBucIJ-}`T~dL6Vx&I(`GNg60z*1Ka1geY%ctr`f)zTlf93kODTNC? zxfl0rlw!2r{hpY*sp%%Y=x=ITsgk*F3p~5YUPQyaR$X zq+^xhqqM~q(FLyNEwDQx`fFplGZy~^$c-}iQL|jiP<&I3-4<@TZQ)eVW1LLcjWAz> zDSHmnO>_GfkZ0mkaIuWAc%##qf%ESwQ@=|th~bS)iMwYXP;!bT_qVt-+}3Cx*VrS2 z`ePWe_S_q6oZvco%MXQN+?Jlbfo2-*QXaBH>t{y;`nj!iol8&josLLM$J*kYD#vCyRMO`S4m~!b3!if1O_=7bSZCwSf7Vj zhge-8s?6>rOWPzgx!f7YguDNnYji=oyPOaGD8XzWBJ!ONCM)em$vIjxbiT$Nuriji zyDkdFUx@?iy{#i5DTgYG52+IzdRS23PKdfdxaCJXH00-3SBJ}dYQKSDD~Y23(~wh1 zxQOL~D4j26PSVPq65x5fo(x_5NJlosk7FPPe?oeH%zt3-M&JCakLqqJ%O88jnBZZ4 zr4I&JQYfFQC${v916`gdipG0KieN2sh_$KGOM2JMj*ZG-uE2!rTJM zzsVFO-;g5NfOdS+Zgt>Ox>^3i#Qq)O?BBPey$O6VN;C6m=JnF|wS}-5mOn`6*h*K< zgVU)wu6C z>-PQZ3KAXD3FW-1?im@M=TG_RU#cxTQVl&pwtyhA?DXl#0^2Rn^TDeyri<^6V zIM9fX=b!7BfR1SB9f3Vry?*3YFT|rVw;|1)9BE=vedlhYeyd;3Y~g5a1vkzL+C;LP zEF9(qXN?vDC5Jf+hZHk<1Ys|fMo3eiY)=01`g(*p`E}?`H^QZYai$Yn$RI`P^pQmT z_GY`hZvmu|;512rJ7xVE?n`eF6=z`C#{>98h*V#ZAq2gGey9g#ew;_ zkY|9+B%tO8JYkCcSRb^ijM98t?OQV|MZbyqC))cq|3=}A&j`nBSr`RCq4bPQ5%gr@ zy#_5UPF-RrHOF^qBXleb7{8a@ui1I3Pib|;&Mxl27oDeCMH4#fj5cN}Ag{mjuf#%~ z(fNz*mkvOJv`yhM8#do^J;)TD{{U>-86E8!hP%}^6(nJuD$KsfA)=km`|PfkKH4Auo-Jy{cZKbB z(5^^3xA4(({3rP)!g;px2epvxl7%c?YivPFAi7?=Xy@PHo;a*{6W8~tDqA_yjz6O( za`emm$I*cme|)-)dv;L@K@-fwUk@iDM@I*#(DB^cUDG74V1}I>UW7d%-*$U-yI| zqJ_A4B!Bl8C78s+IE#YP(WwE2M1RIBHkmW^B{66aqxi%Ozj5chj4?Xuhgk)KSB|n0 zW*fLu#XXsM1bgsiK1IBScfrpn;YXS`Ya13yEmBO3o!Ezj+M41YYZ#D;Z?N5+%@S(~ zr4r02y2B!S`~gn8CAZQnefis~`??i&EefmrN_-VXs9fBurXKS$Fpo@hdO6pr`_j%T zOC039le0&Zdt1GFP}B@ZWL+z5k}fN{paN-N){}4ntewd7=wQP2>K%VR_2cFD^9ucB zEGx61f>Z~2ju)d@tNdSgK+n8$P4_^Q=&@VG8->yh{NepyBmLzdtzw40PEWhMKxoww z?ZX>9k+J>>Adg>V*2#EL#rOA^V5#?WK7NzE9N(bF=&f44`UtBo_^#5c+gpXO`g^r5 zzO@?PTPOH_uL|G00z$xd^w*oc1-=~u$Ng!h?@ps9(Pwe|3=pOIRP5+vG41;U`gR&L zJ|nX}Se8l)OJ{r_9Vhq@+pa-Feqg~m-LdjyYE-{mJLDHo)Pc;w_>UJc_(5}O@wbh` zU*K0I!IbtAObNf1UrsspyAaE98qn8{+RKe99lnln$w1;a29)msig7Jtq12^u1J=qfPs-L@--h}1h`03}s0LRC zRDrmul>8d;)R)(Sgd4i`+T&6PedH>-O5_j8l7^|5AB zC)0bDUwc|b#uMc7t4L{Kjeq*HiRk@W;^CI6ebGCzkVE+_Y%(44t{iRUvsgj;0D$+< z;8gA9d?LKj>W_b8j~qR+I~4Jh2wN38aMHFx z`Q^bY#DtwvutWJL=&xFN?>2j+dVQMQ!}>JshQPH8M6ZRj1%sVKP06R<$~AWA0G~rS z2(VZI4($~^&sl9K z?0TMJ`=_a}Y%c|-IHvA7Smjg}_V?9d?dc(&Trb!AIJxFugu@qA3w#-0l;XL{0T_MR z^$$R-JOhxGME-lyAEUG5czb*Biuh}c;NxRy>B|(pvoliSmBRNlC)uwJw(%aks%q;U zpX%Wi9wtREJNlTCdjaw*KS1$6vqSE`)-z$DxaD%hWGDD=PPEZ=&YszkzjEx4{r>D0 zgBCpoujMxvN|)RO_1xWlL5K;DzQKq+J~wu(+0(vBE#O)K{i^YW2`D^j-VICw$@bv_ zH7qb0GxAO#s99V-$LyRXc~8PIuw@H9Hphp;W1wqNM|3l9N?|UE4>yx3k0e(o9mI;3 zX8AH5<-Vj5qsW2SVw-+d?U!7~v%$B&v*^k4Q_R9{j$AL^f~n;9C_CD5!18(77AddX zOpAd0z`;SY#t$-JcbD8=giYIlwtMdF(9P1fH^hZ*%BWEOs-ZLmJ9U9=Oz#Wzk7vX8 zV0yYCHuDq5M%aF>vSNb2t-5@EuEVXBH?y#$qix7Qa=7W!5BL)|AXM7i54a@$3qpeCWIUT57CHC#rDcW?C^Out{|3NMY5u7*Ko0=1FdQzO+#KlMXOA zr}kSi`$5IP%pk7QzHX?=8p@e2TBenmcs3VE#Fz7rL+h8Wagw+=K1_Pu^;@^d4RK1< zdEveCj$fn`+XnxLqJ(?x1&2mgr>5S`Vh*O3rBb>#Io5S(Mnq;c;8)fxRX&M-O7Gcs zQ~A3xrOzda_9z=JQaosAk6@3BX(=vZ4ov&b#Ypb0lmWhzVWA+{fr;WbP@U1u-&V9= z;=A^756O&s9OFh;fu%L13T(>bz`$Wtbo|+jtAO*?;Dw*7cGPKLBtD8}w$54pz*msq znYX<#KCM?Uqptqo0O6b-2kNt=%c%zWUxxV4q58xTRVb~NPyK`S3#A?SQW?{aAW~&g zbLBYc_m;{SxpBxdXsA@$EetwNTkpS{>!e|?@e?h7o}bQ;n^(=|4oRE66z@wRx7P1gwazTO#mnu9 z*?)fsP~)Q->|(EtssFChbpd9AvYT1C3#C@(Pu?6eWx*>HH_@MaG=iwE-a7h09)-^m zNNqsYXPKaO3Zzg};%zWOe`y=gU^jN-pv$ve}UQM7WCcX#U0NTshk0y6C$ z7w;X?KJ2x^nTN<%OQNd~d$+pVt~SEP7L6im!U8GJ313;s&+%%<$&R@LQxUk)xATWlQW3a;2YDg@`b27W?YA9#gQHRsUf-Q<`zC1pGvcEq+a3cedCf;{JK_Vmq3pXPhLp??%fB+L(qQ zE%0!~a^>*9ir1^Qz(`ON-PCp=nq|0hX%39V92mb^4WkbH7T?jk1|#AQQW!p@nd=9^ zxDznGB*0EE7@yJCodS&82}ZBaQc>h5VC)-UgfEwV%ER~|Y+Vf_`mkPiKnr-VMgK=% zoR?9*w+b+lgR5$~)*?t#*Tj;-fi>wR0&6s2J*b5=Rn<%MXJ?~SHAQbx)hIC6bx*2# zUuF|jb%(8?Qq?E_)+{ky8!PSj6<{|WW?J$VjCJ0E=D~MHLojS%12pS;hNu@HUnI!VH?DuTw|?@RqRh5KB5y zteii#qDwsm-)n^S;~vH=F8-Q>i-R(_=xn{ldzZ^r)ZkPz*Kz=7(m{c zXS2bbEA!0;cS|&y1G=W9RLhi1gcb)m>OdMR8<2w+nx#gn6D_?EcSeU_o{`{o&ANU= z8f3QTSfS3;IF(zJZMt(}VjZJDcQd)|Eq5^nf&lEn>dh?f_Uw@D0BT z6UNRR4YcA0e0?W3vk(%CqmSr#_JU4!cN02*Xfq=}cuCcTph8ZJ;k;D)0>rfpmse#N zo~c+`-`pm)uHLYD!KA2Re8yJ!gZ(6z>vNY>sh+LCbw!+ac5CwfP~rcjHJVuu=`~=? zU*N+L(D;-1R$QEd##pe~So0X?w9u)$0WLbr^%me~fSN{A&HcuoEPs27>yhgQNG+oaYl8@^8#YfRecI!Ks z?U&on@1*?~?izi%-7T|Opyzb*KCZ%OYnP!n_!elMmW7sf45wqgKb!FX%IF0S#G815 z1S=ga8{kkM-bga>u)CV$Kg#EXA5z=D)4#}Wqf)%$?S89Q_g=R8X^Uss?r$iYLU1~y zGDcg%L6tGhOptHTUw3`bz=4p{W9=-9S2W|Aw~p+-^3Ld9*Qi{5wy!gq zbgA*y&@Qw;E3nlhCPRQ-H4CLX1gLFTXS9QBID&>+|8CY!!M%_))ZVi*THiHn_YFr$ zj%ymq&gqOEcWgbY9dHXF8+#uHjhUaE3I$YluZRyHS4%K^)iR=Yg=@AQ02S zZ#tycFTTi4jL$S3hT>-V z)H8WVX}jr~r=6x7d?$iIqUul82dbA3eIgsSx7AU4&=f)_G7KOxIhli?q}wY<`$OJF z^>fVTTE=-n%UGI4qUD_SEF;s!3Dt#}?H!#?qE*NQ1P1g|yU z7Un{!O<%GLW&8<#3HbzHcI3mWx=i5?#To9CZ!&r!q^>jqR}-Zq6c9F#m*YM8gq%*= zkcFLM!amfJq{$XaUjWMiV=>NP&mV?&w$q-8Q`{d1?g!r)aP6tE+Nv!p4l_oDU7ZfO z>U?7wjyYOGR?=5u;Hsc+=p2|)(9pglek)3MX!o*Ck$p($KfgL4=Vrhi~B|z@{ zCG=~GzH%YH3BI^`c0^s$=lSE!Fqp!Kwk>{~6KL^59cK1&q;aoA;W4hok3J+eanPLd z9cK7Vv@`oW5*HBcozNp4T15vB8q?BP#cye>!}zEAylRS%lWl%pEWQK5lJ!b#nZI(r zMy$&(8l@$P(-`*ki5Y3{=Vp4h`P>G%;=l8c_|LEZ(Q6kt74Xw4d}s0brG(jTqDMbl z9m^D))(;Mr=y$%KbLgiU-Y+NbFHPUyDEmHcm*`Oc{>-}fQ$>4U`u<;)2NU9;FaN@E zK_NNP`g*#f9-FK0N{wlCeU>~9$Z2w2wZclSdSb`53=o#V7s;;=*A;|N;!!s_KXlEyV@eeekL_S3S zEX`6bxIDpGvSYMNQ3t0P7ZZp%RmItBmCUP2AMv-8?hx>PEHn%9x^2~b^5=4O(vQ@% zjLSl)4;|KN=J+LXHgu$2ja_*jt546;(SrLD>44-r$$f@ys`eAOi!gT9;t||c5Z+kh zH*~C>L!Dh7cWc4B+Rnd1heLZMKGSG3h~W|7&+?YuB(fFwU)?!eru4WH9Ee)MV8}!d zCLx-E4w>~aRras*uK1-|OUIjuCSiWQ4!~pQ1(CQ3>dtZTaLotEJE9xUwWl^`jL+8y ze#N_H^^aOcFVM<2vE?KuPCn!u>&T?1kq&}AgZ;GmvebThCW#a|bfh9M%S6B{m3<}D zCV%<-^HYQ0H4Zq4bzsKw!6rt}|Ca-LX}pI!MsNTMSJ7@sU=%QYzqOs-~X+xw|ain<)diENr&e!$)j?ubV_2Led+`ceIJNyF zPhbE@@1A=f20O>AS4PhSZ)2f+e~so&w}OhmE!00A^{)di-4M3_o|6dnp!eCPAso4G zV2@~pPI}yUzWwuR`#Bx$^9-bor#}6FKkiYY_6KO+=-15OanxP(Eem`}yoET*(2uoe zSzRexZjij18j{6sz=)slcAW@bz0bc3z26g^8lxhPAE%ESln)j3aR>+%O7~(O8K2bX zi1a?LhdJjuo zZz+Wg2d6I|XfIa_kD*M5y5hqVa(s>6M2=hIcWQJ*+SfrTF+e)EtIBY(w3@AbKjt2d zUOhW8US*`lk64d^?UIxJJ+j?Q-p@jl;%zIBH+_1%Z6vEZ1A59kTQXgZ?;E~n%%7&% zq;UNx2S@Q_nmbPYEYoqQc@aQTyQW+x-Md*wZoJgC`A})9lJSRYQW(-1oWzUOG>V_j zptOH<;atCt08mqWRuw{%>IOX`bP#W6ag-vopGT-ZJ)RcUq(Y?#?Wn?&5aC}L)FW!o z(ktE(5pN7gJqzX)zxRS!I=E&bNbz(z-FfuNF3JW}3Z+kyRwOH7@SX8RiAJv{(vA+- zRVp}cPxdWN1AR5Ii0@8@jAIlF<`!8WaOJ<`#Xm51ytHNl>9qftOdy_v-k)RnGjD;7nYaCB2UmY%2K6_l*VW&! zYkmQ^9nx`NiEktIjnA?Av^t@ywfp;kkdW?kbTz&DxjLa-3MNl!|H^3jO39QrMt+To~h2Uxr90sLL(htfd_(A*YX0dQlQVmB1y(ECitNZ z(LPDvB$deX1?u~`BBF{?+3BzrB&^N;lB3E_h>nr7vekYA2#Spsil^x1xsS_!=lZ~5 zav=>MCYPo%m$sDOGby%sk^HfHHK?UHO^Ut(&@4^93dcKoQU_8f!ZC9T4dy!y*;AiPdIp|5 z6)yJKQ<)+hR?i|$en?YCbZ!}Ls>`0LEyD4~1ZnW>1H!xK*-R0ROdgBaAE4k`q$?y? zY`;l9=cZ`#Cx}O82ebSgKbWh;VbNSw&&mpjM5DiCDd)`h$hI~G=8L!U4z~D%I4+&= zeSwsZdg8*5O-b(lSehXB{W0V-#We;irw%N@JXTU;FVN06jwv2*XL=~Eac?;goE^-i zEr7m?Q`*y9S{1j@mZ#42IZm6?yG!zMSHa^K9zRt#uN(OLsHU_v{fkS)k z#h96}yqm8D+P@|$)#s~-s)Xc=r>Qgc0C)$MJIW#l<3V`c#=r@2k~Cvm%4JY7bu8 zhB|kRmtol3Nzz5hp+9FY!Ek=;)8x;@G-P}m!jIoK%xCZ_I~0Qq)n!d06TTHN|aK{_Al8EYaBzts6OuLijGs$)ci)tMm32qYrntGMmh22P2jaGBftncvtd&esWr>xwqbR$&CfZs^t*xV6=olfTx*wZN{sGQ^+6ewfMM&W>-_F>~w(n z8XluG2SSYT(d4e6R#X^dV4-*pBd@72h&BU;Tn-OtO(dty)Om-YR#Z zKlDvWsIB%*)sfrmo3f9aITg71DIP6_GgO0e4RClJ#hJl3!7J0CFY@0*=_0573Gp|@ z8{3g?>2u8g)8$_$-JxysOx}bU{$t%XU}RGHcbwZLjGYwScCyXNSN>fH$qTcN(5R~a z`v8A(0l_ib$&5w_SI@r-X`B@8Fw=0dx0l4<3MXE1kc9A}6TK0_8mMaLQ#SobKKt`I zme1DsD0c6X@0vOTzmrhc)EPKTO>+*2T@GckiY8q(rkJ7$8`E=HT`XSqn@gGY;`k>D zC%8EAE4Ay*p}Z;9hs$-2&|+R;?Fnm6JWCy1?c*hiukPWv2k+xk+Hq?=Hp4BOFLbny z^;iuv&cTmhO&dX(ZsA51Dw?9|mzG~1xWlekz@=ZU{nnG$2Zk zkU@%!m>$VZB6a0M+8Y>rz_69*2vkQ%MC-!P~+KS9KyCcNl68DAmUh{#eR0he>Ck z=CZnCb1?4ky`2uA+#YnrREZAbyS7G$B$p(8=L@{!=u=gWs!-aV*D*;~$1jk$XK+x4 zv={hlLRR8MQe;k^RF79YVg*I_Qa#=yl6t%!2bZEyG-ig-D^e6nDw5^vlC*bBbk&v? z$2a51@_A8J^_OpSEa79e#r}A;2&}OzzbCfRe?(INss^D^>V^$&ZII)?d6IeU5p`_)<=c zbYJ`wR6dCF&HQe8GG$O6@{N`-ifFks{c^Yr+`Wv8i|n9AfmWT^Dsk zGQ;n-YwByU3gKIW!tZ5`*e`HBd#^!J5j45!fR}VGZWbe$MOfTCJEPcwvH=eY;4A?R z#QWWP`C-}x_uEa!$d#sYtE8Pi{ki~?N5XcC@qxUY`fbE(ZT}^R})9e)zaY_;(WdT~=c~-1kVEB=ZCJtn&vssbHP&r?Dj$ zdzfEfFn?-Iv;=&&CiZ9XW)V$oYY3oK6~)=#r`<1gsZNXaGbfvvjpfu`XRv0fL7^u5 z$4@DclFSEtW~qa#hRN=C0679r5P%3xLXUS4QO93wb}C2NQ3G)ScfP2GL?2hpD(sQD z9o=`JrHooup&kkD5ka%F>M1wTd4FOhp(Y7`HnTYQiVtVPiTr5ME)EyN2Kvfp8UKKQ zhnvs3thf*3FGteQriIe1nh?vU5{2?evdC*UHeJx6L7A2}brNKpgt;92C0fp^?SSvF z67{_Dorz!2R=&~(G6pk#lhnfcc`}iBcOZ9i@OfXB-UKIETFd~*=!esV_qP#i_~JRf zhuMd@OI(o6&kLbu@6^i6cNyF33-D#s0zxVLyAmy3y+ZDLT#yte<0(RKR$s{qxf^4W zKM3Jv!1aoroo+f8WN5dCeaP-Zq0SETqD7zMu|(e7SyJGMOY3q1_0=Yv)caWq-^1pH zQMlY&=t7X8%qJl`{yxsLXF!XB(63s4qd#MKB)!#~G4!@-VwgF~tBfWwg;}I`1RM1l z;tK+?Pc%CL5fk((G@J9C%1nJx*It3yXm_?m!a<>Ex3*dB$NtXBtt5dF_HoT|Gjp1g z<(L%Hw}RJSTa^tFPW&G9gRGd}Y8p}%VRcX;`k@M4%Mza4Nxe?;SLZ1k2nIuu{; z&+fEewEZ!Gh>J`am1Yw43oL5usH4Zdss48({g{!$?g2d1E*|Bo@q%L|x+y^@6$kD^ zclLmf+j8&`ziPR@R{ul_77}$tcOUKN?^NkD<$HY%K1}qF=7uXM-dYj^{Mp=y6#q-z zc((fsbV&AqZbdswA=+cjA0F@%UBu{SYLV{ucMEXVRr7yonoUsCi#cMB#;CH_HqOi+ z5jqMo$1%;4`D^`|6g~e#>xK2_Jz5Bk=yNu9p>%!zxYOOZF^P=I8W4S&rK~g6UgYHo zz+$=rdO0LjdDA8-3$gtzV+o z8(=k1?h9MQi#&%C*eNgX?&ytUG=7xdvXYg)yg}8=mi-eChf7>*;;ObgPC4NPIKfF! zp*Rui^Yk!L4g95TYkmBO*f>eM|4MqS*U;9 zSn*3e0??8Jz==r)h)l6s5ZBPTC=UupR z_37t6h`Bq4_y(^5I%fC}WYHz1WRhH+9tV67cFhtn9dJ88pg#S8H(S1fa?54!{EO~DrT6*QMH65BM)zxaK&xeQ(tk_@5}ANpL7FqtxWE7f?| z+JTs^RONeR@UmL%4gfuq?M`Bg&IH@lbf19A8{&dw2orl=*&yJnP@F(<8I;~H5^GXh zDTiXS$-Gl$nv*{7l!2y1@8BA)^ z*=ud8uD;ntkB{wT`82;l4a~f4(niXs83A%9xXKU7jWz>0x5ynZIz;UXG3W?2bPSbP zw5u$tLT5!OFjlj{wfnjAHt9erT0@}#r4tatkul40s9C%NU)3eT0CAH)Af6O|_@3`8 z6n{{*z!Ch$MzN}3gU(!NZlT16HZ!N`w|f0F{{l=MARD$)>p-FOFl&%EfbY`R>LMF0 zHAyN+SWD&l$7L-MN5e=0LH&olT__H~59p2I(g-;Z$I)mtzD?B8MXdc=>mfo^%vQA&( zA~{|~?QQ2;{fOjJpx}M)<%wrA==Cttl}QabCl^Feo=P!e^mml=yw@Ao#pu zUUefh_k111%mRh}qN0tHj5-a}*yb-^>$p%nl0TwH5AKmX2fLt)E*KGgu2Rcs%|6!Y zs*;6djj{I>W(}e{(dTVG<+#NuvN}4Sm*i!BjwL&*llDyPw-fM@bGXBY8bDiG^CbQQ z%Ek6Ib}p?Yy7AWzEn+$DixJ)H$^gJnq)@#+#hY0=6LX~~rD&fHs_T{l1bL#*8lfk# zikvcvrSUMW1LDg1*%@?uoCxcRDt6FpTw#J=xZfvf2h|o`l*~aD6qxWsdR#x@x@0Oj zCX9bnW@T5<>C3EqU0)APu5joBH2!RTPKhCQuCT)S3>kK=N0JEUcCHWpAcLLDAv0+> zidUlFrnO7+$fgB`#^`!lrnQum+fyaM6U3b%!>83~t#y(wt+}R>?bQV9x`!=Y zfHjoEjN~he8SY%LJcx<4m}$Z5G%Dny7OF54W|+>;Fr%_KAF{Ieo9kcKS3I}60wIJm zTa3QSK1GVsGuR4dw}2teOGi!QEPPE+%lM|G2O_wHax6_ltuc9WphT>OPi;#^d`;E!8k!j}4%mbzM zgIh%S#*jP>i-;c8r~f7OLN>y+;{CD5HN|B%6~Vup=HvZ^U*j8D6>YssfByu=e7rq| zgZ*BaI~@|~szO~4DG}+2&ON|`S175>yK4sluQ-FIUZ3v)SkWu{_qf!5Utmj*Pt+CL zi=*4s6b-(|YF%Miz1Da5#LSlVVfPohKf#c4%)0aHQH2*R{`M~Orv83aeeqM|6W7hL zay6AB49Yfa%K=d*o+5|-cP03yhJ@p){9ieu$q?_b!eQtrzB@x~=K_ z07aGKe!ziyH{hp{bL;j|cq~{4Db1%c4pJKbSY69MnAukCnV2vKV8XcFYTfl$<49lg z^(=a^*>z#r_mrJNXrQdtn+KEf`va`8&@yl(1vmaX|IY|RsYAI^W2L39lV zw3&ZU!=>}sHD;&QkxWfD=6PSiZ}>6m-%RKKeP@FC(_eJVj^+3?TnG9j>eVdo##Rl9 zK|*R$r!H9wReM6Q0Ml|wMyr%Vn#CejQ==Nzp~?h-Raa$VmcB4TVm-$MdW}w!jET`b z-%Zp~{5|&O8T`)Y5yW7}J(mXwezQnS@pDkXk8_!2!Ht`sZ^~c!?@zJ!J%?1ieNSe- zozYf)QcL4)m{iaFc2f0x+(IX+QG0<7PDnq%$@2iX)LrMOU9+RY@7=D6`I58EF3Xn$25jS;4ATNcuRc) zmLR%~|Hwb+N4MSE8oou;pH1kNkDIea7r#-8*QfCuVJhB4A!&yP6r;?A#%MjTAjz}* z2!4n!1Xk%iL|H^NJ{-sI2sJo?R};xgqt z8GodhO;>})V?Aa|uSx6Xa>-Td8RhJI-=O@awvh6@zo8i?>yfmP?H!w`-`UxvO83D8?s&OCaCIXLf5V}R-+IKS z%IR9iznkx!@b4+aP2wf|vljg{Cqut@1;|a?XU_Vj^LtqB6)JW)F1u>=@ciS<{E04i z#fV%eE*Da;J>%WAmS*)zOLUkM9=x*8BGPk|zcc_D&3b^sJ?a0Xo2W8LR3IM4AGP&~(*u zCeBY~xcsK`2;Y*7QrW=CLL{J_9_9^Kp>g8HVDGDEj(vC_gsHab=ca~_z%*@mCDXG8E-p4^Dg&ooQ6TM7W$Hkuz zt>vDC>D0Snpy(?+b@e)qIVVTIpTU~Q?2Sg#wOaFDzT7sFV(aHZm!?K?wa;%Io@{-J zPpOi(O#77nO=-Uk^37vUy%j$Xb_~Bp@6UBQ6gyTruSZt;c-qwh#T9y3oo>hF?N+Dz z**dIYb&|_N)jLCtMsj;(AIQG0wZ3B=F;D1|CvPu`o^N@bY*tD92XB7o;-xphAP-)i z-G)8hQ5ec?K18s`zWXXO>U2gyGk>Q?w0$-6s+s#&^9B)^6E(fu!M5a$OqjH4xPH9l zcT3U7COE<^jz54NIqbLLcxw=UXfa%|wXyVn?qxsAH`>Ltut`2{H6^_)2g#h)Ox4)7}v+@Xjjm& zhOo>$WYMquH?tja@tM9Tj+wVz`)Z$FGhe!aA1hb4Ez`%mwg>p|VVYvwJpLGb%hF=o z9KPs3zMk#Akr>Zqz}y+b1a&iNNgA8G&bST<1jyq{M$#?cw53-!c?;{$(6(}YJ1Nm9 z^KepiYKNzavdWKShlcZ~B3ImX>7kp(PueS?cCeM!ZX;l7&VlL^&y~3$1f#>rV++Oi zX;-OOQ03~jQtaSauOX=^9=QN~#UWkiehdJe>~SYu2Sq>9D@5$d@^FI=J7@PldV}L zWDcryA6*00b8v}=N~kho6vR1QPiKhH-p-;hQrUy=@ho~0iSVc1I-0u{g;Q_W*1*%! zshK%+MZeQKYXImxJoy4>A)i8_0Q&N$*M%_C#B~W_L~-6XQ9V`&>3ZA&B6n-%_};tp z9c`8m$gwahoYfWx(+XkSg%2a5XU74@G!bS9Bh|~qvp9wX$B6`)7;&KB*h9=uDAnw@ zkg>QHc6*dr*Aiwlzg4=HIe3%`T=9g#XZ$RhD;lNARc_ISG)tJ%YT)T7!VECNv__lg z9Z8quMKJX!FZ=6IhDYtU=`u%VP@0wb?4(vJ?mNA0+_06?oBS#1(&3-A*LCUO-crAO zj?kx6rH;=i^JAobFb`6@zVXWt|GA$&;lU}DuFGl5!ZsN{-~@g-kj?Dg$Z_dYLJyWE ze~%k>LIV*~zKtl9PGPPDpl98=Ezi0Aqv5))rM-E11S9kQfF6$0&i6V#6t_5Ix1i$* zuT~gK6USeg)$t>Q7I@KzeJle&HGb>0BCX)6{rG=Kw8yTQo`gOdHtQu8-L)@2*bpMblU*#s~zNhZTmcA16> zOIa%ub8(aH`RbWd2!v^1?|upZ?x-g@GhyPe1m5;>h2n860DL>JP<*plT@I0q>?xCoQMf-&|$%piJR7En)#72qXuay`krtILaU`yGL?XA8>ELh;)|56ok_ z(er5CNiUO?_SN&}wL;*hM`i}%RXP#q*1;fU(2$W;qg(~R{Bw~dKp?*EItU=#qL+!g z*?E3HgWB`_4gSr7)U1vLh}(zXxbXK35c1&dU|;dpFVgBoqU zWm_Jt+$dUYMn>=MlId(A&Eck@wz7K|>q7VI0K)vC$a80OA$@zf6{)_ob zj3tm=qUHwh5{HR^$OSwAWRY7Jd;)Tb%?cocj%W33Ef4^HrxEDGoo#-h-^cXs+Muhm z-;CxX;6g*^6?B@I+0SXd291>1t zBNw>+cC}cGL^>{L?~LBssftWHuzcmp_fV5>&lYw1oqOvO`R=JrR|kB-wy21HTh0G` zJtO^krvDmk6I3fA_kKkJ`rUPa>CtwtX@~To zy=n8CrHB{kAG-;A5MR8aeIC{iiZ+6pDBAr@(e9cE$WrjVU!nLXI%l*&rf97k)Ks%* zw8;Mf-8!cg{K?kPm-5JSxK>ESGIcte!x#L~UY>rsY6c9A{tt8S0%zBBzK>6m5rg3j zoscp(^k9&ZRFE`LgG2^{NlYebg~mN12pt5Wbk5Nn#}G}lRN5+9ajB}rC8QFOi~IeO zAnvWbM2M1zOEUlGdDm_4efF6ds=x2w=Obs%*=w)$-rsk<>s@O-fmsBQfD8N_-4=UW zFtIbT59yTbD2(HUbi*q0&pr1APNurDFUGm-`XbE4wk5F2 zw23<@jMcjfV-4uSSoNKb6+b8Dl3sAmv&=a$SEBe1#uAcM17)fykPJ22v&Ov+&XW0F zLc9mj-y%_I(oQK16^iUti!AhNO4(d@%$)!d~Dhz zz>{&*EDcZpF2GaQDLf6CA)U3!FD=ZFl$NUmxCugi>B6}XSSbe3dN}AOMuR6o!I0x} z`B$@{U=)tXk@I1>iQ>4Vb9b)WpBXuyuDuNdXstY%b02Kh;HSWbHm_hky&d~EM%k)K#Mp zu)}vT35cBGRD4h?)usqg9i2Slx8u1+{5l|P&5<)hX1yEVF-X{d;g`Yu1)txEIa1U7 zx)lnL)&{$X6;=1J^gnj)$=ggpB0bq?cJ{Nbb^^DWCG3*A3#1J*+MD0M2&2te20%mX zFg|4-B*&@?%J}7fVt>_*TwuJHG=$S@&@jT1Ht01h59cj_)9zJ?gNg5@fCP=cJMM7u z`!rJQV&NOiGz9zT@DoJZF9@q!{rcF+5L8GrHa4x|&M)}cpcRrYo_88Ic{%@yKmccT zHF5U58ckV(ug^=7tH~<0ef0GMOhHNsKGQIhGmR|2zYf0F22%fmp956bi`qkL8qeyY zq6E|o$SuN~2AQ>?<{Xhc@?GdMxEB)~9TfeBDNkfjB=W4%*y4Pl%P2X_zU=aU6a3SLME#b98uq?~g9mB)ELKYmeQZXqcXRNVhMf66K%P63I~X0k z!t(qNH_o=0LC57okNaIq38i5^7NiibBY6*;)ZKak&(yntoSDM7O2&9t4zPycr;`FlhJ>NCO&|e>*%JCqa@|otR`UjSWBKvvo>gFM!T!0fGtK{*|`I>TZ71|d1&M1HMku;P>g?p zw-OcuzwR#sC?rnAPOx5LEewg-lY#SI&U5Fz@U))bXw%a*-O++vVPe^a6rD-kNUwy@1n%>8m`A=9s{!TbW{??VmyEB}>Exzh10u+)z zEFPiGVOuR8Qp|wt(k;XjS%R6PpyT~gU;H@(zv$GpiO}(Jv;4-CHNMQ`7mN`6 z1qnkq9!Xcrk~XrpZgMrCMDDhDH6d|k**B5}OXYe1fk-T(KA}6*cFfALtn39BgIEA+ zuo30q+~Qhn?>rwjE6GP-$kpb5zDP&yn#=E6|^Md~*Phy749bX#p7 z@JP4QPk)G~MpxAfk`@Y0?0kH*O-Z~u!>OzGOg*E+TI~-{?k7OQ9&N{+-LOYa53%+N zyEb%BX&`!-!3k&B2(3Dolf*v=_EOCN6gX0^;D0dtixl3>Fr9fQTk<(L)DZ2bCXXHUy19 zG7ou3ZcIQs>{iIXDy@;c>!Icm?PB~+LdOCL;s)S1n)n@ngxb{LdORV1d*NF`Jn&&3 z&F*SGM!)g-A1}25jqUkXa-LnI?4CF0TMf2YLlf)?UpU|EW{@E4>t;c?w6Bu|UqlX4 zCo~m=90Q(5CWLVr0rnZiMIXp5mtPOX%6NWlVe*_xCN!aLn3>e#NK-W#Xgj^+xgt&d0fCYvI;&K*DDtKJm!MK!VlJ!9CL-;6yP-*sg5=1;MYKMcZH1iKSYU z%Ke6sMMz!la3pyI?o1EPVJtahUOWJe7|bLZ0*VEmb=9y}nZ6RkV@`+FB{cft$AqkY zu52XRQiyk^dXDn2{jTtlLkKUw&tYcEJP!6n>^Rm~k9iveJ*NU`bnZ_sHrAN>>Lt^5 z@E?DTL*d$ncKVs!T?|vLR>$nQDeWkrNPYDJ3a)=&kY5!HM&v95LQBp9L7=bERZZA? z6pld6G55@`Hd}F3@D}F|5&2;zf!a;EZ245$B+YTp;c(D@&$Ls8wI30{N+-4FbG3=9q# zs5()5NcLb#teOuiYS$mk{Ks=!J@KXx*vyAL87yzKeiH^ujLDGR86gs2AggA5IiMX_ zNOL+2t}*(-&vz3c%NQX$OIH|C1qZ`YuvDc`H&K`}I+Z(Xxn+um;BNLTwxw^v*p4KL zijEPwq~z)v%&LBz8{87Gm^)AN8|6PBZQ;ZPi+i25z8Qu45t!r5|=Vo%<554WY!MXl%e@Qeln zuG$_%h&^Qxb5tV$=rKLPc_}Humx&u_0c$D8r_?7+;u_{07&6M;1mwNS)H@F!T*o_F;PvKJ@;6Iwc>PE(_(lRO(_qaDW z!;cCDjQRusWtAgQG(m~}YCFzZbms`fiwCewrsnYmA9N~G7aJfVdD8JZa0h?Xe-lbHiy! z$nbl}42h+LZsn+34Vk_jR#6mJ14A(Lt3k?)I&_%>yi@U8uNf`krzRtzYUM(mfcVVI z8YIXGvK3$2D6cO}kEtJ{hcH)sQ1=+PVddN^k z?96ZHJWUgt-{`G(pu_cP8--l$=8LYA4z+hjc66IFzW;@6Z;0hG2oL708E4+CnItTl zF85JI08v;#M@1}5lUb&(p75UaLHHp}GQ~@fjoNo<<~uJmqQr<-ViW}K18k^|JVYPF*@X)v z)Zb8t`u$y~Ux8;j)E{C)ee6<1sE;Z>U{Y5Oov@*Pe+Ksb+UGFh|7SP+qki# z1Op!FR>pozuMxN8#Y}_L0)mRb#l*}hkQKKa9J7(65QuTv)tz31PFLKD1d-x$7Wv*` z9jdwze$@2cCDx1$u?D@1y^`vj;lpv<&aPY8>0j>l*!0gE#KS^@jxNMyId)O7lARaJ zLWdxtJ{)`x)?Q%Vp|ZF(Q2Yp<+CRElJbfLJ^kPC(=u&q1>U9`ovUhxvRzlxT>NO$krK{m*BK9 zU{jsSt-%!BoH(|Ef1>II1ry9PO4&Yhb_#-;S;P2&a;x!-`sg?e~)4zdr`jP99cB?@_AvwxpM82D`=S`~5IiG> z&AuH43(SEbFXxWcCO#?JIsng74oX)KF5O34uZ7XOGPzQkhNWPbYFpErBfe9XJst-~gat~=BXU{lfKP}v@;Eb&GR#7?(o8T5qnFG2xz)Z@t{Zt6W*tHV zQdOTqV%ilM@F5v)1=N&(20&@b*93zQWF}F5aFp_cK^bUYRY$4?&RA`52Xtl)MZ*qh z3j2y#g7+en7fS%$Hpk|WhJXvrFiL6iLoy$M%iM%+}h^B zid1$A3CpCy(rQg%XWbDUm8)~n^;A^%ZiJos#*O8g+%#E7He=zFbxdPUu!TU;%J|3fEG&`#FY722e zHs1Ov5EOW%rmBP{n)Sow!z$Fj(XCw{V&h;dJ>ue2ZUw7#B>2?$9tY?&zEhJ%G$q*V zMACDiF|Q>`I5#B-<{aVad4WrK#QVR6^tAoyqe!m6Rxg6qZbN9O#y z&BSh@M1>ojT>TeBts*!@Z*+snOXc2;N$l}XD4v2)&}?eKQ12i$WAB$c*>t`{z00H# z*QxcrXgHaPN$at$lLIN1=G-kPl~r4-=5h5Fb&e~hRYn+$|b(9o*h4#&C6zOLGR$ z4){~xbo}eFspj7zbuiZn*7*AC^57P1=obqMqx?8X2rhLP{*vjC=Dq{#;cO!>wr<@X}B>;W95jAFvfZ*Nag1TT6kFcVn2?lony>y6|;PsqYFs%4J{{V#}VMP%q z;tULj%y&8pR|mhUNT%@UD1~<*Rk|eGJPrfd1T!_OHY*&^; zMtF7!GHlqH_A$*vPlzfFRs+m3!=5^RBHxxgSuV({pgT6wNK_Ix+Vy-r|1|Jx!XY&n zCP!Q+;?`H(UO?LjThlb~&~nT;Q@O9`MH(`710PPc{fAQuTm)M_rS)On^H~S|#G4f* z_F{5wHLDggLYb1kgWMMyn{6}M8uVKt*qHVnXOYmnV6$G9wtpZPG#1QV>;+Xem%-Qa z&okUf+eHE|)8Sog?GsAWH=>YoLcA||BlaNwkty3sU={LjE~qg(QH$)DPCQ{g6&zb_ z;r(40-jyESclalAEgSk%+UvDOIIRJi^_bS4?e;vaAfyC&dk3<;@&Vu_0F6Ze&Zo1x zpsEchjtutMAX%4AjOx-N0G*UG(kTrhcoF8YTG(5{2ri~2xmYId5Ax40A$YZ}$;OK4 zwHCp(qLiT|1#D+W2+Dc&L~ta83x=|2emyRV;F+Zm6lX>RXJERh5!^0};9op~zwa`F zcfk~(FCbX32)^(Q5j@axu%$;bf;CYDbEOazpFsp4M4m$<_$p?BPNm-V2)^891fMy` zBKR)xqKGd3h6qlv2u|ysgrH>WUQ^4LFuuk`#yB+=>hyMpK`FCy=zb$Yox-ToAsIX4IhT&#co{aVVDR{E1DKiNj)hunvG`{iJvODC**Jj9}7Wl@O z&4CpttiJL#cH4j&P~2IGerlFY&s@Sz9>eRSOT9i@I>Y9^D^JJk0~e%@SWuWY4rX%T zCjfae*jSZ1;*;Qwlx4_6O#dPoI$MAV_AV3Zg7HY*HtJ{1!S?tSuk-9JK$d-;ffH>k zb8$EFiz&8Er?S0i`oqPxsoYB44ftSh6_}7|fp@CMwAEgsi&y}aw-Zy@Ux0UZ6X+}7 z6WE5M!fYMKw+9^lmU$CU7F+)}1mSD)a5W$hh?U7tp2;(b>QR&1a6gXBfS10pQgFq1 zsqAiilZRR`QZ!~dKCeu$lUTjz+_-;c9sQ-4G-=J*nY5WU80nN?g8mVsrn1L_M#ZB* zGEQv$uxjavnFerp?9wZ&%(N`8$pn+vuWJ|bGk|CT8fZRFH*Z4oacDjjX!Ue+umb$0F%6x4IWgmM!P{tJ_b< z=^x?;%|Ik0{>&N-D-6`~|yOYV?y zsXCLe-OHcBl?rvQ-!H}04E00QuSqKNcC-WiD^!i_IRd;GwIbM4*QwB0=DOoa82A%8 zmQ=!S4i^SS*u2SYtQ>aq2rm4J+)QN`xnh(!vCjtbq4&o}-go(dcfoQfK1ezbJ-Pfq z7$l#3ya-*IG|o1q&aGF1~+gW<2a+`6- zUPyh%JC58O;RrOZUiKD6%ttui4Y$Fg$I2~t9;J+Gxd;whtMz3k5R4`?JfbJ~-+>T0 z@5BpTFtM)*~j><+|e;hbDE>`f(V^U4@=s5 z!59ycxbZbz@+vMNZ6OKCKkmpXT#KMY|ALVvM*xE3&kl3D`etYBPXa5|9e)2@aKakR z=lf^_botH%dzZ5(^m7qDgI{*&&c?;_i1^{Va70}g)9=FPmhWc)l8Anv;0XV^mzyW_ z_VMLIaUB!A#;RZ=TdAA-Rm^5ha2>quIHz##7zNMdceOn91Q3u1vCGvYhi{&f4YOe3=>k*$)zx*9=_oE z&om#OjFk#`U_UiLczsonb>o+vf9nBx(Ee>PdWy-bmR9d_*N5<@Va2+c_!BQ*nyz=Q z_Ih?5x`llV>9g;zjO@|3LhKI1N8&8d#Obq_Rm)Ri#5uzehiMi=oD=bOXn&N3+l%w# z4sQB8oW8$Ot7<7}#qW`1oK`p+=g8uTDj*(JK zK5F{M`|zHZ2cjE97h-n_$ut>c(zHGh9atH@B?gA?Vn^S_rLsZA7hrmc`Ph+3eV-+{ z&YtJL&=mDeKSWbYJ-48{Vg7OamIi~oC2sGc;ZjtnV9_UsQ zRL%m0NQB|i5JYE*pkTe_ph_41J_eBtj#{ZXa7GMmPpEPa%lUvsAg_vPlING4^=I5|izNf$MxJGFc$S?G z(hKZ+1NP|7zO6710N2uO)2o@p%11UG;Xwuo)NA=*RZxypB&LeUmG8%`__#pBl~b7H zPP{e|>E`%SA}+h@C%9tCAjaMbie`NZPUw12Vh!!P5pKGBtVT z4FRGtz~w@8gc^@qHnCaC%{~yVwh7-ccmM=z3Ucvm{){RfQ{RGoa9Ov`a4t-9d08bh zOp4CpjnSXZ%f6_8M80t^{FsmkEKEDmt}@QlZACMd=q1oJaMV?}f5J{{ta(Zr0}0cq z{EE#UC`>S$Jq%Nds*i@5%=bX_XfxkG?rAAe4gx_%%}Hn37uhWUfZ+2mmkf^ZZtcbc z5bLXu99@?hgh=zrsPyMGTKI>+xBu-h_P! zmQL+v@)OpJc&)hwT4Qx3=1tO2E$2m|M*G*VMU9m2?=MaZ)eyaPuOz3B^MH1$*}%AG_-{{ z5{pQPDf&>(LMIj!cQsW3rSMBL|EG&xZEpxO8uYu%WR;yzuk8>!Gp>tUs8l#NPc@%mw{4tex{*9k8{;&x#b3ft*OKtl& zNdqSr;0CR;z>d!-Db-yi?fWZ{9vtyicef=m?h&5E8+yhY#>-Oa5x`2xuyU!x=9RSf zXp+94GOHHG<{_RXA18xD-dOBH646|eFe}lIeIW_VKgD7k4*|V> z(rXY}F`R(!xK%Q9w0^BHqVO;osTw!F17_|i^h8taZ>8qp!O>9e66g*_OXtmTd~P5c z!<`0Je~kb~23-~O*Mq`FZ`fT1_3@k?SVu8#&?FxXTi%hM%db-h5UwUTO~4lH{{tID zZc9wzlGG>0NQx9fSR>MRaBMzxu~XOkB5bhCbxIN9Dpx`!5(2mTP&%BITHto^X(s#L ze}Ud1ye^t|{jRt(9GdzUcu|}Y#R(9EJ6Tj8;bHhDMw&5 zAg-+uok}qm)J`Q~JyO4&CM|t0NqxK>vnw6~E|L2;(2MluWI)|g^3B7OMmKvf$aAio zS%Yz0te1-jv3TD>k@5W-8zJ=GHwx(SbeyO-OVZURsx#M<U8&pdN0O1?`l%M(Fo+zK*(r3dgPl?9{Rv> zq4#Ek-GUTNWLzD8jv=gQd(?}?v<#S>EcknqL2!jql;G{>btZdkY-vaP%#3=WWf&fZT}5Y^!WR zypX>o@V_tvrV6uSxwo`$Dm!Q!bTjRB{D=wnC4g=qZ#r#6^$zeh^R(O<)oA1{G#$-v z=0elT434}$vodG`n1yNc*>`;vs$mChjHz1cs=d>Y7r1&rC)b%)p)6!kunQYER<#{U zSH(pkv@LYskA!M#eEOF?d8tix-N5HkSNs!P;?{y*=%;v|QsBPd(9NKufJ=xDvh8mh z;@A2jTvEO~!*X$RpDBJ0{`6`h&}lXnp!Id2xD4wRn31aBOt$Y5+^eDBg>uyNU_UQ< zE1porL7&W4F&54j(4QqVbYR#|Ir@Cnc>2>Rm`nWFmV zINh&cs~FwyXCkEaQ4KmXNQUk+(Ka}ZpcD)GXFCYpaZ|Ady;{>f9SmZ7p?fBQ?x`zR zpqhuEe}YedE`^7$ptH`YzAOs5P<=UmD@VI@dz_-n$0UI+Q>EpevA$N5~TA+#7fk z*MM3`ud^I}Mm6$syxdSdvV)K6-KC7fT4DZ_tQjN+|j2oBppUCg)fAhLX! ze;U6uu_;t;EdC#dOzCJi6;D97bO6Y<7;LKMjXTCs8u|7U{w z7p==dx7!m!TR?vwzF-?|5d2H;(|}<~WryyZ*kOY2X~{IXJSH;-0K91PKr3%S4Tico z+D!DW(Mt1=daCx2T{K#_0h+cz{M~DWB4JE`*zft^9$9DOobLs^3w)~e-KBrfzXQ)L zG_$Mq-K9DGJHiRvjs!;tBY?VHxXYiQ8JKL3p`26>W=pyWKeqJ17fL{Pe9l2;jbG$M zN_;lpE5E1tiN4@r_X9QY*SJ*n4Vqb2hOT=-A_8-kfA+7t3b48Y7%^oYm*zI1EE3%@ zGn$|9EB-wp-y)w)n9a518}N5)n!!OsW|D}|-IeljIj`2!mzTDf+f47~b(p8VWmInh z_KI;pj?f*FXIK=^;4Nq8;sIF4((OsOof3ae4BmP} z(86oa@M&jk(C3GY4t}a3v^_86yA8mP#-qz?MI_j)Rj??)p?A;|T{;|YW``)=?Tlb8 zSau`EcvR_Iv`UV+zQ>l<)*>c0(%2f8(y9*&2L>>(?Me-=7 zt9n$>__T!@dVVq9ES3w{-bz^#GmMWH#p8J&xBt0RoA4!_)Mj%@r}^^=e758N;8Lk} z040FOOT;7blFq{r3c(J7>5Je?C=#%C+Scp_hX9Mw$Cwq#t%}*wcOujD;4!pBKH>DN zVYwYbYL{4OKM@c%h4keynw7gvhCn9bOZZjXQDhnSm^ z(>(u&cP9hjKBhjsGT0vTUkNwR^V~i0UXh#W0{#0(Z{pk-MBq)F-RT{nw%C%%%Q*Yn z%Q!pH!MGXKy#GhGnPQ5X#FIr<2QRCe_nPA7KB4R!Q_=+^+ zB+G%5%2U~CBrS9}n4>qLz%Qh-{rF>NG6>FeWPkB~b%!#nU1)cWGF;mcKf<8X?oUG| zpRyc+U;A;tL=FK?ILs{8<8)jx56ysBlXjRB^zS0n2eMy2p}z}8=qC{5K>uFj1i2nR zKvE}ffOhz72s=$Vz8OEZgq>z>H{H@kSD0{G+5QjcY-RgZ8e_W6#i)M<*X-)y@AekJ zs?ElkwB9(A26vf}tj)JfsU)ZK4O6wvX@U8f?A+#L<2E1QB3^^20{*nOeowYPz_<>xZ$V-a^hm>RG~h#!A-gY3;x6V z;$`NoI|@8R`?Qz6`LWRWSk%Vr8v6$|S*$30v=914)J5#V*tfi5u!kbFvP~zP8^yD_ zGWdUVpq9wcdIXL7X6&H@)H}nhxw(DTI8B*8L0n8TB6>*`?vb0of2j7!)*J zE&d-sDm7tl)D*J>zntQ#y>B{9n4@1dgh{8e%YH0`=`d6p!Q(l2BYkb~>|!CzU=!9& z-9v{vagX+Mu3V?}i5lYQonT?EiuH5J_x^4l8v%KrPmb;Zjj2 z(Kh5B3S6JUv?eeePf;{z{>BRZ2fXTWVl^c;Ke0Cf3KnBVW_5K}%0uTaq(icz@BW46 zDlBQ)3$I@?ZuTj9L7F{Ob2L}x2aB7<@#Hq3Ea4c@VQ=+4R1mw=U0Vz4gM$4a%W{k6 z$*dMaovVMILgqZ!);{mX8#M47_vz(kZY;CRwZSt11WK;VC`0TY&c*+ee3$I~k(fHc zeN>X?_yj%uS`xm)-^%Y29pO7Bzw+IB78^Z@hrx5q_2l^w^I2y;2b)iDRi0Ow&kFNN zmsYlM3WG_KZD2mjOH-sA6xjy8!8VE82@s?L1la~g z(l&|5ZUC_gAZ`O6XPYFDV?gJy4DKA3y3S!4(m5H2SWeRW z8pBFImntSozt{i&lwPF)^T|`=_y26R1^sXI{^$LqDu(xeAzM7EvCxWz#&+EKbr(nz z#@8FU{edsEOfNsdN=2+4zW-lXIkhJiyru#-?1$YMkQ2To>QWZ4!2TuUaXU1{?dg5FK-EWeDphdLoFeH~C2{04P@hNr>*(^!;C$AP2Tmr~`3s0DyGz z5oy5p?@|^h1eiI?h0(cx^N$GY5r`T2zIIb&BW0DavN71{A(MJSq>s7(Lnx$C-JsNw z{dV&leWxVg-?1M2udr69V%gmB_gILX*5k=61p;FmV!WlzS15$K9?}rb{8wv;g z6zTmV4&TN9b9_}n-v?cQibXCfxdUbys?*RGE(?oZ>J1&b202TuL$5M(Zj(wzhkBmF z%RapU0KKR}r=h+h>E7o&l6}Dmb2Z)0!!gJ}uH8G5!FxUe!}5XCu)^^I_M0gMQ!~3>nwg$-up_Q6;L6ULG(1pYsRu+ocd% zJ;DPRu{~7ZA8qw((E}0vy7f)y*N51zJvI0WPl(Z!m{) zzE}-sjShYf`>Xk&qmDCv_kT_o^%wyU(E}^{us8Q;v~V9Q*7{S~jd2Tu!UZs(#|k_l zJ#a7;f{7w}48C8}0~O$g9(Jic=mu4Wys$ig9n43cQF-xnxh{b&|5x@~9SU!pxS#f6 z$H%`W!2AEk-l~mQTomFTuLEujR^R94xe_&@l;^9-KOIlKtl5irY66~!9sV8|N4A`n z%-0j|)qKTCs1d$mS!7pq2ELku=5jZ&$He{Do?bKm@96aitL|*P@wAp!=;`)`4q-iA z;P`vb|8sa%KMkj|Q}htH|6Q{|^s)+PSuY1)xp~UTXK)x=kdLj&e4H^`^YKK($7Fo( zOThPkt$*qrc-Tlh1bF^8`laSDk!0oLPEBs;NfRjT?fY-d?~B#d=Jzli7dp9l z;eQUd+DOA2tyQmrZADO$wi^LW5&7)co$f4Jp8;U?dOp6~fG_yCS$+%M>5f(W7m!Jl z6ybza_Ayk=!7;Etbo*#RUE&ybXfNqloM25@wL?luDQIBSA9y;xlt9PtS{~K$hzug~ zw+Lj=e)^q+@xL4SQ-?6~XyxrET00?cSH7m@Ei6|a9v;|*X$Wll$v& z4$s%BEF8r1wd{TB`~iF1xUZLMUytBR6XQy?AxMKiG8{KdhesV>c1+uOWSkoK9+~g6 zQ`rbEb38`1GQ=71o^svT7?w29WBLf5(9gPWU6wTo9_Q>6O4h3fUG>3smg}9Cj}8B*oTrOd;9j0 z_{E-G$c10PT)3zL%mm?R06@bDI#m(g**C$hcjS?f$I8c8965=7i|88}ilhE62*BiE z#rONV?vg8P=W&Z6s&ycsK}zO8WMnFP3-TPO$4KQ4$A0Drcp%dR^_1WF1rBmXMCv8; zu0QCg_J@PSAm614ZN$Q9iW1 z>R|I!%}E%w*-Hg08kk_#of0*U*0X`^mZS%=Vh^?BKM01ssC!H*_rc2+JdN>U4kb$V zIm{q2umFXy2bcm-MAa;S_-ruG`twZ2Bg z-kY(P(b$STIcK%3Bhkn3wdx^vo|1J#r2$_`zz6H}^tTuA>lZlr$ZbzL1Esvel@-pS zXi7X;28k3Kz3C1jn;6|v1Ze4KgF?!17fZtUO^mUi^}gH3-#J>#(Xl!SYlC>xL__u^ z&yxso1**638pg!G@)@x(&LR99aCAXuevM@+qcgcDDH$PZ$i59pvd5-__VTCLIfwy#VLVt-4JM~OLc;xym>9K1%Li!1@69K#f90>=gyDz{y zmT^p{i}##8}I@+9|j#_?7Sm*P_=>(i4qXw;9FFAA6#qi-m5X~}N;>uxIt&{ou@XFlt2p%!X`!goWg|m1Z z9V@0;(`?TfNaZfVGx|23)TL)ISli-k6i84&%0WDP3v*fm%QbQfGoDFhuDa$qjCWwU zI@Ngs&1WC_uMS0LcnttsVZ}F5DSUn-$yD<&ZIwfLnlM4B3vRqYCZITe5BJjo9%IoJ z4K8I(jE3FJZmy#DMsP0}L7F*o0FWdqeFB6H#6vB08@sK5KZBn+s21)0*tr&UZ_yHw zR^4HqFwVE!Po!o&0Y-5C-1a!loTY*0h6T!iB4&2~knzX3$v}PfMX0k6>}1?_!wb`7hDPu~KkUFpf7~p#{Y6d3f!2$L5SRxIA zx1`57ORD~XmS(_6Y(QtBnL9k~V}k_AiO95CNJ=_$NC_$Je-1;(@eWmMlnCZr<0K*+ z2_g_#bb*cxB_sS*H4Hhi-RNQ7GB@@ae3>XW@4!HC0&T+KqQW^jh6?-D?nb`Jma612 z4}}RqBIwXRNTR@&D>p!uXji371?)qGJ452e2Y5px@F3h130(J~B8~B6<3Ey>uaprO-ja_sNm!-WBiEHSC zF3@MDI8cehdT9t&D@6DdC=sAA`ay7_j>JTb9Y)oXoe3#I9-ah12ZDUOLwpxaS@9Rs zkFsV)D`yVfN#cL}tE`*~nT=JQyqmH_|iFgjM)7stDT6fnZdqtR3 zfwKfGlbKeL^hv`8_zSC>?9v4tPn-9YIAi4A>OJI!lT}`m>)|Bc+U_;x_c0m>n@y4tcFn@%HD7mm8@jY|MjfZM z#wQaQ-b6M4uISNRC(&g>B-+9iUvnkNV$wwLMmJk;1pEImeOYmQ-q{`tKtuloXqr?# z7=$s?(fP`IFcA2)7Wt~F5P{RyeC_g7P2dfZT1;Bm*$QL`ec5jD*TN!WTw%Xv0u+T-OvsMUh}BX*!ktjIEA4~mK)iuJ#2I+J zYLU@F$t@8J??Mynm)Xy=B!Wz-eyi~jvZw|yk~8C*;U>`Sx7_losuo3IrGHZCj<(Mj~cqN3#Ra=Sn0FbvekwSmTt*G4W}O(_vR4p7*(jJ`eIZoh0&;v zFFG9*;!V&UB!fSJH4i#bE5Vf$5EEpQ4<442L$D~`QWac;q;*^CfbSy;Xlp%pqxSZ3 zt%Gr}Z(D2c6n+Zc`VD3-5m#=ZwFHhb`p=;OY`CRPfZWp!sG$qA1Y6QYMb7p}mh}tC zu^Nb+E$3tlI47G2`b6hsc3)&FcMYD=mb>a5jGBI^8-7(|mPCg}{ulB>0PL_)O8q>9 zh~rv2j_%dOmKQ;nxc&_YD~vXEL*EeW4ID2n#<%tADSY^z;=ODY!rp*q)NjSi(r@)D z`IbZA6hwPgTJ)e%2k;fJ)&r{jL%yP8JGmAwsgZ21>#IkOYCbC1YC2DMTe3%YFr*LO zuZJ`YF-N>X3Hr?kOp%4^Ts!XM#p*6uxUTy-yWu2gY`+Yi`3HCp7kScNo3eQ-_X*h9 zy0FjD$Nv17NAL#ALRzocgg(4{B*gaj*fKP}JN`Huzu}{43w#t>?+4=8K6KVq(d|PI zqD!r%>v42L>%#N{{L~bHAkE=(bi(a?!A|!`OxbU~nm{U|&S+h?RQ69A-j)k+1Y7QG zJiu$Cf>SS-34hJ#pS8~#gUrdO;PWfw7anlMn6y>#WFH2n*?r|D94%5Q4WHHxP0>>J zFX$g8T+8?`567R?$iDVg?_zdj*NG2i$r|UIpcy{WqXLx|SXVsBdO!TCpX0%^cz`Bc zE?;rECQ@4i>fb-CXqz^vJCGfTI=KgLGSTz-Q?;;YQSrq31Vnm({}@?$j=)$hjPC}D zbJeaw6w=#R*oXFRGS5v-D=|lM%1KFAcjcjr9)gba^H=@Fz zA^KW_dY)A7NTgL-+q6~6L&1~W6f zRQ)Y5%pAA$EUYuz>FeydpP`ineI_7* zQ2MAF;A5C_Sc>wFwz(#-=pxS|0!k?Kse)PZ3D{0sNJF}_S61XvUNh;1iUwKXTAk-G9%=#WUC|3phvu#N&3Ue+8Xbk5LWiQ25 z$xt3^z;Ga=J_l}lW0*$ibKvB7yB7%lP#Cahy#X6#+J(=H`yPKw7zTPUa2W1;J_z&d z!g-V78@5fORz`9c@J2w@jZeTi~|b-yN>eC z`$$vzX?Wr@t95l}C2mp1nO+U9-J(?XNYJz}3z2s_PrPtvtuDpS!CnNMT3oCuOF=8y zw>FaJeJ%+q*tDdkgvI6vaE5X7z3icwnXn}7v+Ch(M+N>9f!Xi#r6Sl0gL!9=Jt3j!aEe*0 zpjNcd?X#xu0JeS&y3%wD0;msWpExayfycBb8Evpsw4UZ`Yi%8PTugQN+(x_s&DV<4 z8(Z1X492Us$+%Y`N^l1(R={qT&7ocEw+3w>RxsCMz%~U>?9$XH5DG}@@Zhd6&(r9a zGAt*Z4P|{YFN@=%L4L?R{K^B8s^sf6IPD4fJm7T?PfoEzeO$H_V zmO(wVAv&nsR_h}!>*$<}F`0&w_S%-Sjr^)q?h@Fc)`eqazM<=Ac|MCc(>5k_R-}ba zlPcBbOz$Ax_Rlv!hGRula5RKUPI#$D3!L|GnEn1Qj-O0J2AY#;)&wK|DoA6COL^|KRPJ3ATBvpSN6R_!Zw}75M3_a3 zsA_>ed(Qjw}fj`t7iX-&T@U1eK1wH{5Y#`|kXk0z87JN`T z&anLf5^~h#lDE;)!6?&0S?Hz%#BS#l)ajt2osUxg`#pvO0r&d7kcxn!#weBB6Xa5- zv;OB^2x3`q6f{BP=0Xz3?`J8`v|-g)&UXnuzRvU^#|~kd`X4k+jA-`>5zqkJlZ3QU zY<31jS>5jC8Ojq~d-)RP2*6jiHB}G5?6V$ZA3$XAIT)Y3CZNum`OFZ!9$Y=X`6 z9Ktwe4DfsnWnewf(l9J;Y~ejqxe3q{GSF|g`5At(^rO8TT&FVf6Zoh1i=usF@X3Y3 zLHfo^KLIxX0gI;wyHA#AKldIPUc7&M@&#Iz7a4gdOlyG~=3KZQbf8cDQIf^*L-9MfVyRPz?!3GP+W-cUn~lVOpwIk&f|tQwkiAmj&|D3FvY0f5#Kh*6)iqFZ zrw`7~wSul%UtWgfy5}4ZQlZ9jJFoDE`fP6p^BUbuM9k$V>Jgd|O%L{u^KVS&OVppy zIs2i`;GFDrSgZAv+KCVKd&&4TM(~L!t9l5|6ZUDv`G#I;a0T`ml??Xqq^Wu^#l6E; z{*uQzEi{f+FZFZ!W}Iu`>XlKq11@_Y&}4yx=gvS3;(K zNH@y!DR`D*mE22E6KuowGDlSJp>tee)Q*82f0E%p7w~Jit^HEV8K5v0GjpJ2I<&qz#chZ?o}tmaS=WdV=;5%xX-;`4n8w)2^Ink(K*bQ za%XkM=L^xNl~;#BIWU-ttR0L4L~=-TPz6oTu%}<@h4!l3;6R zG4Tf{)G$a$NdLq?-=w*XU2LP#x#Lgp+PNCv0(G{y|30Sw34DzHlkvOM$(uTyfJEeM zSBzlrT95r`Y6o=X#!v3A)%UlKKI~kcdzifeq?fF~2=eVr@(rP5>-SK%56Y33b|y~QS0FOP6splrq{Xw z>wL&0?F6~&1m9n~chw189E{LUY58T3-HfmT#NBFnK7sIr{)Hg^B z6zftzqwQ(yR66Iz^1_IEgjd;LVg3skn;RW#3w<(NhWRsLY&D0+HDli5j*mMFl+vu5 zL#{n=J%H85%rlX{<>B%q9yPOrU9Z<9d>C4VH4$e&hilT3FO$JEwH%^__!z$upJym& z#rpL6S-La1TQbHE55^xn9gpT3FXszpKJuED2I%n{*rAFkRN+v4!WveSS~(>=TlPz$ zWHlN|AA)BL!x&@hB~r{kNMwYcN}OJA3>d?N^2n_QUYuU@(*QREICz&I{PAp2HgPnw=p>5;==w9Y0Bs@5(M}i_ zYEX&R9M~K6X<$1Z8Pw}u#s2*USqF%L7Hyd$k9dG{)qZP&19bVHTFXttUd+e)o;SgC zMjekHAUX<18Z!QAMm!zr|6J%g<*Bpulsb`iF42(Q=jG{cC{b|h_q&w^&tr@ZN)`6T zW3dymKKMIm`lXKyLvF0~!wKeGW7x3XZi#SAzxlYQ28o8?Yph0sXj951X<3O&$1a#4 zJm6w2sksR=4>-NIFs(X`zg$Z3G@UuLSI0=^^GvpFodMZFiW~#>P36WQrYj7CJHS`0 zxgE~0*wKtUx$J1hLS1D%RgSD1JxK89y9gSuu9?SVCiD9|Lfg!>aFD@N%2Rk|g*KH5 z8Ov!i0TCdVo682La;um=Ik=*AZI4v$NrEgZ$H+2Np?e&9%tAt5kZF>8O#0zl4S_Dc zu%H$7h3%50c#t{4fs65SeQNsrf$K4=9Fm&8pkl!}m4jxzh-ax>Gtf`nJD+sj2f50^ ztjW=A>C>l+a06>(q2~Z=4lRpsSVZH7W;tYk9*vd0pp$7%^vUGr>l`6_1&;8riO#!_ zmIr~;pwaN)5!dw+*uZou`=cEJ0N(a@LF4LdjF%sBpQJnG&)-$zw1yx!84LXG6x(J@DZj#)@lgEP%Uexr!j@M;!*K$3ZF6=MM^r=Yv{2+Y$2{@!W&r*-G&YmZ2!a z>hI|cLhSt`cj3!F(XLG2H$sQm@A-c1RunfvzSD~0NjzBwx-OzP;4~}cyk!J_dufJg zQ`|6uRUy#8h@rbmgfe+2pHu|PWi~+V7`_u2Q7lI^9%08HqX1-t3HNl+f1F5VepD=xcM`>SYm{n$WLT!W=LbO23h#lCIkBey zbk@|`(tc~K2%n1%tO#$7u0fGn5#e(nJ|a5#MG)cIRQ6>KyapmXk%G!HC%tskh7h&2{TMiZU^NffywYGXQQmZs3u9srsCGkyH2 zQu6X!{)tVdxD3edGA&`cK$um*-?6r$S*3sy$&$*oU@eMJx|4^nj9#G{(XqrkAZH$l ze7wbom^p<|OtlskNl#8!fy}T?D=mw4_=#`*(S)h^0p_!h`K&dcfJ2_A%_sCmzGLl8 zK4pzjjer{K{0Ff3;x7UZ*0bJ=O_smrJ5tvAd-N~ciGToqb<78aNb!XmdXNllvsK@8NG!l?Bl6k{x`5&_9t1WL$Iwt9@B=nRZ_&D&(RMFb z@r9VNej(2zSbd zX;W06))cxxxs;h|$YgLferNF1b^)F~U4UnR+jm|Xp8lP|gTwmAWX709UM$V+1^rq$ zK`-&jy4*ojV#R>kCKos*+~89A~Nq*V%BZ0Jm#U_i+2I($~@HJWqF5M(}lqv#FI zVs3CubIM@PwdM@j)lMG!J#Pl|DMrJizB}fEPg@J%BN?-)IDklx$X|9$@y) zgo05Nd|xJb?Rb$*utsV8diJ2cI5iWIVqB znMy>m3?_Sls60S9H0hv~JCIhcFmd7t*u36)T>=Kn9XU;ePtKTL-nzKED3@=))C zrme({SoCu4P5)Nz3_PHH4cZWAh+V}L{Y*$cY-=hvMUp}x$F0uAFUAjGQhU|=Kr%Of z((Y~3SRCF~n2W6qt!ulbhCDX{Wefvge39ds4SFEQbF`*In6I9W>qYJjXIFwx#$DmB z?}Wp!d0T6`b9o#2IB>=}6JBq!H3K2Kn%)RS@YI}G2$J-+@yB>*Z^R#@a-;B*xTgd7 z&T!Xbh1yS4UFW|mf+PQE2_YHD;?%1bfOW}y5q1LX#vaVY31-Pb5UHdDGE z`IxvTiUTBM%AU-?-^Rpq@CB@`L_=LurIQRu;@g0DB<688Anqo$xJWIGJ4V7$#sG}H z?@vSeR?5v*75Q<@xHbSnUJ+G`q))!-eo4aO8VugAhhqR1AZFSCNdg`D^@lcf#);y2 zAIt+64b#Dxp9w634J?;3Y%L}_s{UglGZPjFvSRjs<86T42V^(Fa20U!!SKgmdT3fF zxv$G92n>N)9C|MlFqHMWg3CoCSR+$IK6A6+G9z2sB|NbB6* z=*DEbmVQqG?|Xq&;C;cP=tjc3L+cf71>G z4H>rX=w{1MV4 zl7kbWun3IF4X2C{-V#YNQYk;gB*_jq#d7X48vP=vOPc1{B-vj^iP*9#jCf9mxFu3Q zo+SGqAxXxvuoF2jAA{8a7WCFCW|vEFm5_cw&_Tb%OOTCds46yxKNxX`w7fA?WvavLMDRwnH9{j zn67FlFQ6PyFqsqk6mx5n6XTA7PIF@CW8Fpw4-!=}r@@?9#*F_Ba$@(;71B{5{-$fc zmWd61M@k3#P>>UY^}@C_dinnORiHSYhH_&4`Af&LSl6K}(ou$OeT*rX7Hi`f$=;@N zzd?ocAf3U@UdH-rZo2O$++AYkwUR@gwrDgTCGVFF!^y1zH2 z^ZDKKJ=Eb?O4aN1V3L}|Gx_wqg#y&U>}?$u7lAfF?vAM-lXzUA_#2NgjI4EK+whaR z2LIT8jYqHK3=z9UE4ZJsP>*7I{zVb3Q3C;naOS)wD-8KhV<)n00HM$m>w&wu6q&^K zI_d}fMe})d?&t3-biGFO{(={A$}5$lt*K8VXxNB1IA_h^b2Kt`!?dRaX;9JunzNjB zW32Ow=62&BV1iqWQ6Hl>J3oiPPpd0D9k6)Z)_P(U_PzE{yU2>MpAU9(xLp-W8b}hb z!`X}43OGrcQN?=f?s~i*J^BQmoeyc6;ag%}KyB)}qb}>(3+`Fa47kQHAVT;=KqCxz znZ*RYo|XnHawuYs!UQh1HT7>qR^Rf1OKGF=dqpq@*<@{o*T6N)b{V`PzMX;?Q3!QC zNsswcc)s{`nML99NN!R639K~o>gMm;93`@ddh*dY7I~_jmuGY`e`Ij9)8hrH>{QIO z#1goPxl02}WL!KkZxjop{pBLQ?WWhjcTDKvDKK4;hkAihzu6Rd=-sd0I+QrZ>E-9wD@|UB;-J~C#<8vec{tAF&)krfyKD3KX~TuC z$$Xh9d@&)9_>3@&CSFa+Xyr&?tW#Q!4ic^gYxgkIr6 zJbhat`U^WI%$1{S5)Bbr;0;L{z-J?qxjP0BdAE8!2_g)Yz}&n#xa0`qhM02e!D%TX zf@s8~R~2H3pw1F-x1g(tDu)wrsfa4W2^0_Z-R*?r zaQCneEwu=yUV%nBdu3;iucI;wGe?Pg>RjB@0Pxf5Z*O>e79QEdduD_mz&#Z4bVeaO zPm8P{1GuI}j}}`Af|1JDRMLpMUaYU>s_JME<;Y{jvLfuR-x{38=Gz}3($FTQmVd!_ zI0vV;#4o6~^zn>01|JLjb`4K`MyKrJO-5PO>hw498`f3Usa5#P(~nW{`BDe-IPDr1 zXHf@ZP5?HC$-uzG_F>^9oP#c5bX8bU`<&M*DIOC-* zMEP9UK5ufEOCG9QX}cXBrJ~2jbiBgoF}ENV&iVlDHaBEfmL$~K^dyLD!tvyvV#~>% z{@aOuS-G(i6Vb9hlo31ur=S}{LJ{*E9)WG|XRvlMrS0UX;OIj_Msiz5Fp>cWw&aJO zP9ye6SeFQgKY#2f{0WfuLWh3QLKhQgv-oD@&5&8V9}gt_S$(88izm~7_uD-XUYra9;baZ`@9rbeiwT4fE4PQJE=R3Yf zxUCKXG&Go(#VT~Y0Bt56I|beyl7_Xsc{#BUBH2g8>W!_I8 zZ!S_cBXg#wxvxQjI5TJE$O^s~o}s65OYsv$$e;eV7{7$U@)~{}z%ou}XUu_som8)= z{gy}H@H4C_h+4yx^9~X;9AFeySQ(*Z1q`U0zZ`wA$P3mVd!oeHoB(kt zg|XYn3GBPR>jcSC*SrSZGE1zxGStJ3aecY_1?jC8RE{83ih*kLtJJlzA-s$|A_TO= z!>4Gt)_;79n(V0vJ%AVvXc3e7R-0_Ann)EF&5YzuxWdBRN&ny?WY)A{y9$g)az5eQ z)%g-!v zqPmc~;G*Z|-(E&n)ItU20MdHpX&+j=#H4;7H3EShf)Q*xdTu|#6uSif&UtzW3@>D- z8zD2+L%|^zt&XetPhpqQO<4LSAJx^`^uiF@DzvTPqX2n)KE~xdX7kU-TmUu@(vDmi zxXNsPBOM)W&oJZhd^UgYn8(}L(QKsvTO|FOJFPDX5VE+fwxhMa2(wruv@z;ImC!$A z=wv2qrqleX3mH1aX>y2kKFogIh1qI47g?~Xt#;xBHPqT?couj&bSo-v$mm$Y-8+p6 zEcSz7i&EKgK*@yr1iEfUjVJJr@H|fq$1fmB15HGt6&rtG*R9wYgNl^Hqwu1(VhzBw z&SqHsq(}Yyg(&WxZ#7=lLzc{k2&&hs#L8Rdi(Fhts_NXbSJM5hl7>2q3x!%he*+tF z8m39s9B!q}q2wB?e;l%iy(tU`q`re(J|>`5mC0She;0)?DIks7`m^tjKQalgTm8VbmjAF zXi=QKel6C$7kMSrPfk05jov+vkuJErJOb;>zk}H-3@ulC$I?2Ut&4TX4$eqt4?oSb zocgsVM52EkoM6LovY3lRxhZ>gJO1k%+_rZ}nR&LXwx6DO7t6e-gk;si`}SL-gZ*Ei zKbXa;c@lt}gl}PPc&zRPR=PXt9HgMXP z)ZzYkRH?R)CBu3-8NMtk!yf`_lLR^*?kAQ68pfZxmIV4kY(%d$2Si7_03!nGYIQ=) zJo?nZmI$Pb-X4raihe7_0w>7b9`KTw0oAsy@200esqCg$y)2&o?7de==(NE3;c7dG z+d$1aNJ~Upg@5}!Pr&-EQE|ER6ZpHm`56$KKzr&;j8f;{a0LM0RD^tiNFDT7n_&$q zc-Z8u)i7kGp*RiN8~qD{q{WrGkfc!OIyfln5MZ7dp@WmKv3NyCY7Ar|)zfMoPz@`D z2mUkx-mq#@fF8_U7Tv_*+m4mCZe$%5KL|$=?%GHGV=PlNpt`w&G=!V`RL^`iUuk={ zYjNs+ynr7O)t87qKZG-nNzn8}3Hr2eNP_4&<0S>p3&0_>P=$dbAqBpR98rGA34D4} z{R}*B7&Y(h*IPGXU~I{UPuO8t z2%6Cg;FNU!LoHlwN6@|dhhV1))EHR zJGue3LwwrIPKEj$23t&=rv}FASzZVdAJPdeCdAVbdNuVHaj`dY( z6RtK^S9w7`4uWh1X+nm#Qxs|9;}9l?@;B4MLx4*#+N8eKUQjB*Ai?#_f=7uNj#da| zu~a0?3}@do+$OZ=0Q&0y;Ja|EVS2(!mG2ucNL_M-x7toS8f- zcv+rRrS8SevIB5q+Bqryc{ct$1NSxH^|sdEp*`|UJWhAYmhJ7$jpH8W@3ZBmvgTmA z^iVUtTQiP~8MceC2(@te8S=8PS)eo2Xy^JmQnYf*97~e_ipPa%JSZAFTX!nRHepP5 z+gdAngZi^3;Q@{oorw}IoJoW)tqZGKYfT=vvAnT;1os>*kw+K@q$teI3`U0 zlrfZ?^taYlzR}Ipjp(E!p!105A0*;}^jMVLfFI*lGeiki*}n6FPb&L4O55>XV{o#U z4+>{0y8*BUFWXw@SyunRLXek}*-*fYCT*>c+UGs|^DCr_OCk z)rFtr+RvFm3ch_ocK>k~R^K@+_`oCD7q6zW=Sv3_i&C4tx88V2N+iN18O7 zCaY^#?LThUF;^`JZuU)TrO95V$>GO0?mzD9TR(X|xYRevNRuklXL8Fq)?^>g}8KmL|7I6B>?f{iAAm zbcK1;E$Hqa5wKMDEc56`!TXlK`PNE#)NCFN4xaRnD&)~1{b*c!83f}_|Fm45Zfl;- zrIJkbPs`+KI|~#)tQ>b&Ii8;FpMH(EQrWl7(*w8zq{%;BD^DN6Qy3uVBE_I(=eE}O ztf5@dz4L}RvLUI(g4>qR|7fAH+WJSylNYa(L?;kH+WPU%&`sb(mkBz8!VIt*V+aXbq|fc z!F*|Oo^8;m8|>*D%#{Ysw!zK1!Dha}{nB7>+hDeCuyRKup83|<(xBQln5=<((l@wE z8holX--_YnL$zC8F$^fFBi+5wFV)8s7g z0%Mnv!^dxgYX#(;27DheqH)BC;W%p)@8SO*L9i`}R>yb$g<8H*@Ur1?M&q6KS!DpN zeHL#&8NWernICNy-UyG@JbZk0yW9fOJ}Wlb1{^WCz>jtw-nC=BDE+5N!XClS&dOwu ziuDg{wr`(Rk%UbT^xr+$+V{Ve!DcMz-ac!z{M%osRww`RMh0MWf13CU?f%uf2%CQG zvmTY!3D|59+)-m_mv5acthxz3;7)0|?E$(!M*5abz4=(*z+}JnSsw~ivA(+jlWswy z?|YK;Jq$g7IgLUp0ls_i)%Hf>Q`y?s0AR)b?Xv=D9UGv#km}=Y9PlkNz`wEoGz9#g zeBV!UdwW!<4*dUU`x5vns_Xwph#E~gFKV=?s81Ud6lp;8$0lZ9Ai&EWFq#AsAP|y} zJY*4-ngo+Rv1+hdMN3_&yW)aND9g0jwGE(TR4iwdHfcf@D#%CX8i3mJo5*v1vzoW>LwuGJW7FV|ddqy3GB zouI}vRI*nckh>1G7i%sJjLTe5FzVnqO}o%V8xAxRpV{%E&FjFgY1c8@2ZI9YfX5F} z2T!o}!aVdNYzlS>UmD#UV5)jL(0#`!6V)&Vw}S!+Pn|S8_yS2A88*A$jr$d-B*uG) zJyqWKcP)1DM)j0~PJHFYY2MY0_9#$@ZXV8DawMx(#$~AeCTmAb!-HI0P(AokQK6TH zyn0?3rZg;PT%N(e($HYFru|#oF|7v;@YNUF%fWc{v}xKwMtcD$@DIR5H^0MTPCCQp z+FZ{x+t13)D7J@3C-!$3gCEZRPGBX}KSVcEx&%Gh-&CgUF!tAU=5$svlKo|t`>}m9 zYh!iPGyDn9)|r`Z-Vwnq?=PI`YGx+RpbeDYb=GT;)uo$DFYCwLely4f_P zaGo0_q`zwyJuqRk?W&T6S2A%Hdet%apDT`5R>)gfyctG)gULp3vxv#vF!)7o_4^~0Y)=B+)221d zA~dRqZmwg0tJ&Wx7}+{@cPlI57A$AyiCRj_K2=Lu?vfG~{E$gW?=gsx(qd8$(^4J< z^yuc%47QCi3bDWGOpKB2Z;1U}!Tyr(MK^C^FfXvbT_{@vjEBf&oln05rVCx0CUg zMYYeF&oeST4C-h=m7)u$sRc;!vcBKN?tk?o9+GpRJnrAG@2_F^U&nn+_5s`O!=xi0 z=-&gIVlEE-CfyL<`P;#~7Oed}ZD5LNIKJCf?fVON22TQ+VnyaJoD4byx*^D1tjR2* z`yOPfNt%NcnRgT!x*^D%t;rO|A(IKq+rP&=A6M#qMTTw&GM_U?VoC+$kZC4qmMb#9 z16UB2p<+SgE={B&4v{N}$T&qL12ou{9Wf^{ERO(LJ};iB-;04I0J(vru(}Nr91fA3VTt7_%3tI`#SNl zNaKC*nAo02gVXWpz5DD}F{=+!mU#AUZlX7} ziLzM}W0my_+>IrOm5elaHAea{$s)}Erdre}sky*jX9K4K&X~yJzLArC5A3Uuj@41o>@P6;UPV^M_(RI4ezgwc$L zKrg0B3-th?6zJb*fdU#m&l4RM`WI?d3-novAKxBL0v=2Yd7Nk0US#t@ zZ1==;I%R~F_I=4pp1W`_-2b;q!{2b0uNf?9pv{|$VEJoEYOovwvh->su>1rSQ)y4u zEI*|IzyK`wfF)ONUEdDy#b_+#W;xo)aw*7`aF#Tdue5g^rnJl$1k3%3W$C)Uhgtp7 zh}@y&<8Tc_%ZDjd=PZW-yV9=EEITNl9ze@|+_1M9hNUsOgJr&x<=03`WnD7E{_Rku z<)f6a4#4sg&T_rMl1A+gmVbh~8d^@$EO#)Lt(xV2FCym%dLZy9}W`D{c*xTI5<%W@IxbM*TdjxW$ zUhkqn#l4s24=U~J4pByKqF6J4D{bj|XfK}4c| zaV^IiENM!>!SX04OL}pka3z{!sI(tESZVqBAi{!A)$6*xbnrz5(Ky|~@)mSRhG9E& zB-#LhEA6S8<+uS^QeWP=n--YDJ;b|@x`s-SA7&rvRBanV4883aL6%^+NOrxBK^F}e zgFLz-p2sF*@t*hihZB*$Hgp{J>lko|wB~gL1rOvt8tI1d70|mmD7vl72aHP47+G}@ z9NsWuExAKtI<}ACy>gjJW52?^#EH#FwyvB&+ePuw%&)?^n^M9n5(-)=l}4adQ2NLB!VO_(t5Nne$RGt0yV&jp zC1rn!x&~kx;kTOarNlR$owsSYDh|gtPeiuCYcS^H`xW4l%MxU)>HP_|y?S$fLQ^}G zY3pU;hc(a#c=F7f(iRQ$G=NZ@^!ytSJ`s9C#ze#7x7g3}hC)M&_IGyyRc*XVWDgAB zlEBH`u}x;|rCIEE=s=Ldp04`x7gUkd9Ocine2qAOYL`Xtw zcy1w%aSCx2=B4O;--zphGZNuk2oc>(Gv^NF zf5WXNm0wNsX`F8ZArRk5n(qW@8}r?rG5QvBqklkr#Xy&))E#_BIr%;Tg(#ziz8^@w z+xIJdFC2uv6c_r)FW?ps8?h+W-r(e7Yc2#R(yotvGSv6nG6+5cO$o)uu>R9=%t^ck zOL14GS(`b~8~!Ng0IG%1=$rUz0GlZ}OACD|_WBLTVuypp*WWu>)MK-i$h7&qJ!A1| zRN4PH0QApdUFXB#fE0T?`eo8$y_3bm=&R{-dC;Owo4!@ESPFoFSlk8{m|2!A#yVMi z2nr&p=5yyvixkb`*8{RZU95K)>ZR`-hPo3J#K4Qsg)uSJ{Qfn-Y}J0&5cuv4 zhTJTX{k<)qZid2Ram}|D-!)F9w;S0;cis7Xsgi+>3W!UA?w$9)_>$xzVByicPi1y6 zHX51wjWh7Rp$PRTLVF)E<zA=n{b%3LXJ}vvRTvdyO`0!9j~=E z4YbJB(a%&sPmfhqJK-y*m8L16M-))_U|EGKvlF|ayN&^RWQdEArmN)6{dl1)Id{Rl(H42t2NLN7bOk!3k~!yyve{6 z{9Hw;TLV4jGLi=B)IfK+D4nAyt<*qET$D7>at&1HqJ%rbLzZZupSUP#pv4;KXcr}9 zNP<$m2D-%cycNQ&0IJeJFZ@5JoitE|268{Sg&6`tX}Siw%tc896=|T4=_xEDWyV~J zpmeSVn&6_OfzHuD8(owz#~~=4sewNG!pTkpjnzPvE=q?gN~da|+gy}1&Ph4TXL{Li6K*xWFDJJpB;Y5Gem3Rn0yqvzqNUym(L=C%Q z)~d?W6R|9H`UEx=gk`C25Ep|#IaI?SvJB)Xmr~=uNES-W%F{x94+q5j4tw^pcRZ$i zWN@O#z$3Tfp;T|YZ*^+F8xK@@10AX~-g~PFL1J_39;*ZFq2D^mXrLc!pf~o#13F3r zo$C@vx3R-C&@xnkDU$|D(m)Gc>}r(YKPc5Ar@JU=p#2)?1Q(^*iqaPv=&vplXrO%> z=(W$Cf>$a^|Ik3!xhQF%4>ZuvU6jfdrMEQD3>PI0^ri;NbWti*lwQ(6LtT_K&>uC> zSD!hx)7|Vg4fMDx@wrm5J4e+WO{aA20yTPq8?OAOi?GI-tZ?=|Z+ZmnWK?fpn>MOfV7F~HPF`V^X~n`PpPRo7 zb_(~=jt+YghH@xGy6*4FN3q8MvTt_);DEpgR#N!tS197!6J+#`iTD^rvX6sbO|bbX zlFMauiC5^M$6#;JbMIuKj^Z0TVH{&cTOm#+gaM`rW4AMik89NdsFD_5;}WsJ+Sf; zzsjt_Zj>8v;eRwQwQFk+`B(2^b~6b%0%n6b$V3K`4-kK^MYpG%h^z;IsYF@QNwn!pv}HE_++qNPL|o0Ois{L*ZQTS!{I0 zDgUUpJmp)Z>anQGD{v}!h5H^LV~oaZlc=D*S9?{E{XBRA0`G_PcU^`zL}3tDa}pW* z1u{H+BX8K}vc`Io0ARMzlT`~HbtVF|cuJXu#vmv@QDOId%0~UeA$=M^(tP-b+rwN{ z@9*A^REP|N9Xw+ZC})_GWv6)C@Q1;a$T0)AM{Q zCt?GAVDh;BGQ!S#;9OyP$Hee(X2!(rq2V-j`p`j`W+^ER+P=Ngj$JpSj6c2{?xPhN zXw4s?##T>U+8<)$3OJ4q7i8=#plpZ?Rue85zq4SxxT*^mOxRg4L0mO-?nqgO_v;1q zAKUjays01qm}2s)`$^2LLpnS`96A|~^`LfZ?CN7ZQ)|Y(#7ym9@zO1N{Mj_ zD^hKi(<>zKZkfbz$&~QQOfX97ZJN@%G_(8FUiw5 zm5YZvGs)VgGC+UNA81~#kG3*~*%O6h|6p(Unp%gyYc;zSq^L)v|NJd$G}{^RuCLJw zh&a7KGtH6gV=6rjhDx27jSrPQ1h8;6?>6wct6S-EmFzZ78$u@IU58!)qVJXxzi07K zJ{svZf7b-Uq7SaqobfO*BL&XIC{oXL^M*4FaA^!qeIA?O(%f)q!4eb?$A15S3bN_a zS4qPa%VSOF(Y8E#T0W^RTduo9wOb;nNcOdl4DiW-wI}cA?4|Pj;Mfe@5@{)T1X`!Ik^i!4j~Wi3WD-?>d+JK zBnS!dx)cNNpXhXAwvuWbBVA+g)qi3ci&3L7zJO%0wrg; zd4#e|p-rr8gvsqtpqND}J(XGoBdVX6b2%p| z#(MC*lP~?!z(q-OHP+(LQGUawp98X^{QM&kmsT$I?j%o(+et=VM;3#TQHpC^raRbE zg6VtuVkr|QX4M}N;xK-wb=ggXh` zeih5@T!hE)f)R*Dg*W|+$%Wl8btv>g?xPLu_{#4-`y{2q7ncJzcEc}aQ?A~R;-UFavsQiv{jz5z5|Ihm;HVWJY!jhIiJt5$_OxMlMgV#=ZXKv za4FCK62mDE94|Ppm=}=r#GHtSs>^ z(Fiwnc?#A^yQgegJLSrc0~oqUbb59oFC?wr@1#W{;qpa9DWj8Kj`g6>!u}6{04pEaC|it zBT$XQ_|NZUf26wZ(CY#VG5c^ zQZK&DiI&n^I1CkS+rL9<%M<|at&kyh)a7BafxxpSdQiHSIeb(LsbPO?&S>$OUNY zeY{oRyY;wC))4kRQ;KS2?D z&CQW?54!TfMDJ%}Fp-i@&GE=y?7eY(Gb|;&l2RZ%a=%MwnJ1wVkVqkeOiB0mT(lCT zWx8r4kc43WV~CXCpUWZPlbgteGr9i`3#Et`4tF2B0yOX)^Os~lBI?PD?tbd@v4T(a z-if-yTUmlcn?Bo#fIV?#VmK=a0mI*Y42mc2^slRf?}W2bdcW=5HiR^svIQeX+DA)U z7RA_k#$Q#?_-LqSU2;D-iYtWv;}U>{`)HG@y@!t!sU8S7HsFLi+3v_U`J@Vv??Bd! zcYtDlB3e2=blz2q0;HdlF+y55Ey3UQ5gG?BCV(W)(5^?bcAft|^MAgL0vXq6f7gp> zRx|wndK)SKMC`h>U-o9F_AW~4{RW>i{s=iABEb1DR#JHEx=QwOPK-$o z=dZXAm$2x;2OLC?T0MLDeYlG5R2g?hVhaCaq#oo+>J3tn#gz3t$6I;t0iL>@0R>Pq zqA^p`<0-|Z7_fRweAo+C20k7ge&N_n42K` zMBb)5kW{Mdl9=bIBrTVH31nvm04}NxpZSB_{YiNW_61;+)y;C_!SiWw^Ld8G49ioX z?4|TIkb{TNoE$2*k*VdbT=v>Ke3)l3k~sk2?OC)Bz+Io*^jt-*UK!P>P)*cqqzIgQ zcQT3*Jdhmi{UU;A%A!=az0Y#O+&+}$ldHs%4SJCM0_mU@%}Id^GZR=2S}wsJPzj|} zY_xRL&p3r#VMVTDOx~-Uc0MSf!KHX)G@Webbq|*MX{`LiQVJPV)QeQ~F3dt8I`56l&gZuz_ zdykHYlQrgV7D4XL*Erbta3?|8$xJEA@usrdZ{qgE=b#v75GSKw_CHEVN(yEYleRAl zOlIGJ577s%@%{I=c`wd75r5B1z>gISu{{M`srU7FuSOzo{|ftX$Y6LyQWF_60FSX7 zFtp`;+(!#RMg}YjOX_(y7VgNDS%|cY0oJ>VIyL)xJQ>Yu02lr)i*CH=5xt41^8var zuh%3dkiTo%0#&atqx}jdjx^cGe25j>KgybI#BEly$y^xNGnFvBIuWW@yN`tgvcfHm zR4uexU|+%u(bE^8Fv#XD0#){%ubbTk(mQ`wq(NGV#zn4)k+fJrD;6C@+uSPc??H=I z808a>p)rc{NWPeMX8K_FNRnkK!m+>WcsgClLNcbY zhfq7@b64)!+}l46kNDv9Z4Ik#M^2$ zhcYmrAg-lR=M-yW6$3KRIMdK9mqB}`7-nQe;zdoq`&@(?%DmRmeVKVtg2qy>5~N;a zaFKew`i2ToA7T9G)!GQ!zJbj+($JlrxeoW0Qxs~%*p1iMSi<#cHP;i|`3m{P;|Mv8 zTFpp~jHa{#g&xSIixRL$f5>an1Ht>vV*nXbyRkw~9?g6k-JJ66;gg%wGeSpG3Spn2 zTGMm>p6x_4R&;WYuPDpxoI=vxz{b!1p4(Xw)9UiCc%;EA3RyOK6{%YKfi%fZB$cs} z!Oz)hUDtHnhVNd3{un02r-Xe}@FkOkz8^d#oX7JWzTkj@*w@d7JLw5+`-d+jPkNIo z%u5ya2aNqd80P(w+$qLrOpt=a(8WCd2{A%v_b-6I`%>f&6yMcsaAb)iQQ%vO#j2wO$Y zqB|nR>HXR*)bB|sdSprD#qLb_aER8slP5@S+^2vm;LY_Um5}@y+cI z`Xn+WOG6JhjiH6Q8A8Q3IfAK5@K39awXyF^cPtn<*0-&$0GL- z@2@rL*sr8PN?m(R{zn?GZXe zN4G#Bzsr!Px1Fmp%*{Idb?-`G#QCu3v}3S+Gq?%M-35Rk9tfWSV90ApH^RHXYcdW?WZbx?p#2MS-;^9=yd zHxJ-Mn5*j!UHt@LVF?Q>*X$GTu*8!o{aE5dK92}pssSb}@xZ&%5{D3Oj9-QO-sG0J zoC5-TV{*TiI2*TxB~GW)fh=*Qs`(v<{b!a)#FDGD#3Z5>&nMnilSFSEsw{B_23hb~ zw8gb3^s>Y|+!7aaKv?2L0*vnyk0dEe+(oAYS)vP14D&862jKsSPkhJ5v%GaYen>x- zc!fC+HYVkkm_W4R`NU4FK@<}GFkDAX>1%r~e(Mq%zXlkG#&C*P(n?A# zV^dZZnrOy*FZGi9?6dKxIS{~k0~L79c(X^lTa=Jc<}3nTkw`0;uF6(4SjFZbX2 zmHT$Wb!DoW^LqnuUI1+I&D_H<9U7j=znMFP<$g3go#I?mKmq1oKBgP?!NNZaa%N5YN9 zq-6^CQo{XA+R2UmHd*-P`1PYVx6A3qY~@wk80Y>*14D_os3Fc-V?RyUvFW6ednYz{ zIA?G*?(YWV+)LX-Tv}`VCrInK?O_Jtim7q8)LR(m_|`sLOZ_^>%~JNd&l}fBp#OyL zI72Qub1hnu&dV|A;2A6)CqUcQH}CNCkHwxYYeVo_8Q`>Y$b!3 zrqJoFbtIke$m|F6wQ!jI3T!{uq_`TI&{`&nm)ZY5j|)wNQsL zgTyyxIz;0J;ijZdFY$!)hqEXt@#x+SgZu*mQgoUzf%K~D?H{@&>*6J8_w^IT;n>wi3RAj3%8@XnfE8{Yo4Gb7P7 zl0hTJ@08E}jPU!xPSV&CN7r{GhhsZN6`J$Gz}3J)21zAy2;sV1OXCh@n#aff!&|_P z!*__5*^x9OrlAgfk##Y++NBSHOAARoaZ3m{COB&RAA2{6$T5WH$~PygdbZIV;_LeE zUx4e#H#O!zSVM|mzrP{enEE|iaqb4bt7fzyk$J!tzA45e8nefnv*DW~h_{DtYUw}K z+%;F_As=GxUFt1I7aDgj<8PqxIeUeDCt=5EuJQM2-V#R>i!=e-skz4de*WG0EP~NOCD*JA6&!UgWK}lKL#* z3Y-1F13pc8@PNP68`tobuU}`e5o_J_1VwsuH(!F>T3X|!GTI7R!=QQcz&ZDxEgjoMP*Gm`gZ4%tnw3zRhs7Jw|Hc)JTO!5^Q zC^mz4teCWlz&d{J0;AvLn)$mDNYuU^P}%#Gvw6Q^RN*romP&$r z7~r1dli)t76IX!6*2xeHmEZfZeHq&t;O||#Zn zyW)j}+_wp4XIfGloV0`S-^l@v5!Ay6lSF*W$-z*`%grh(s@Q{2_H~<``-$N5ePdy@ z7@zmBKAA5u9lJuX;|JSz)vkyWCO@gx2dnI(9+CBk^})}jl_spKiefVvnLTxx9}x$; z<}&5m%*k=t6J*?RJO0eo^mo03X8?ucPJMXX1RR*ZQ87@Sy{v7MQV9B2l zOzM3J4@%(KPih$M=)<A5SNz z-vyoRqOGiu1)Rf2L)+LPm;x*Y>?J;d<2w7%etj$F`)wh3onE%X&n( zeou%W{&&Ll4s0_)uL##GOD7vJ&;7;kSRt(1{uAzcDqQPKgPNEQ*Q+@l5m2828qYdd za66aN6S2I3XtFMVNVu)X;typZT_?kfZHC_}R;*E3h}Ngmjb;Qr%D@NFeG&)q01LL6UUKyfH{rLWB*9MZa3lKm3fOu)tY7|XSM)$9$Nnc-T!M}YwUYvK9`J|%?8 zxf8vQ3fJ^~G!d>dv35*;&9fZ}*L!JmW~`I(iKlHZQf>RY=p!ECzI#Yd3fDi!PE}A4 z`O4kLfkKSql36KS|8SQyD#ZE@po8s6baBRfccd>6&Y<@bQW1|@z_%U|}j;!DBAd?XKrT~_~ zH?Z9rv@)Mg1s*H&%w1r%-mlid0e?1oUeHMYbNcO_1yD6luFX9Ye#5-@|!txroAJ)?0q7>#^sn zWMQTOqxEK;XB>@v8lwjoB9{1e8Vt|Q4w7fmEDUK&Vr~t|swf|8FVh+p#*o%K) zI3j^gr`>*R7azNM6(=ZS`8Khe&wFgb;typZBLRk06^f2q`6hl5Utfe!GjUMJ!P8n?gu3)FxauB$Mj z`R`}f^LEMF`8{@yDe=z3g$UPItA`i3e<#o_kI5M^6>fp` zAo7)?aWmF+tE%`^$Sh@4IL!j0GsxD$LkPLj|7t4au{&gCif}#3Q%ri6M7%`Uc$Va} zI|Z`8=LXuh#-ni}pA|#k&7#7-^%Tor#%u&^fi{3gJ+b%9qw6yR)TsbL#U$B>e8}(+ zl;6a*F}w*Q$)mBy?HE?_$tcEk4&nE0Kx)AVPvrtZ%4adPFRYy?-ka}!`v~(9+QfAh zV9`}9ir4A-)G;9$Gypx{;p)8_I?@p=?_{*uA!#+IcWB`)HR=II+oZp?#F~H^m16qrPs+s z!?nm)qqKS#R0dO1@BCgZEQlpiEy*X0M$7`3v9NG6u-!6feBU6wr5aR>miN^6xE#3U z9S{`~YH+tYYy|=d@@w^SfygS9I4!Pi^}+zPwdHrfjqxCj{}%B3^Pm;L=ZiPoPc-K9 zWZ?nU>L(F*QO_LzJXOoT^R6M~yFWYyQ?_C5lZF#7e2a^P?72Ziv@pdJ`OYinsDVAW zbTePu-x->X*x~QK1IT1iHJFa9M~PUH5}u>wy2o2C!*d!Snb$HN(V%%v9&estbhK^V zZTkeG;%G-&hP!|}n0EBmlTr_E-D+js>xsLHF=lIujWX*M6}*yyJ@r$i=&a#%c>C4L z7}lr+ws^YphOclcpYDu}?(CV)1peF#f&?A|r%r%s=n^10Yp59|&iJWiYIEr35Xu#2 zo_NA(pK_(w!Hh=#J55$AY`M%#GEfv=eUi_2F({yA>F661y{7sn~`OTx`O>3;8b=mgh15Y@}`S(AYhc zPl`;ZJI31`Vs$&ip_^>gA{s=7K{0I_5sb89s@)YO%ubVW$~dn*CS-7JZqsB+K}K>W zRBdZ1$5o)gt!BPf!irxbVoS_OvpnI2`wKuobE844rio7R1cNBfybVIph~I|N2zgSXy-wQBd20-1vtxe2HVwk$GI?yGKlXY+DhnQP=FKI0{G! zwt#}z2KXXv12kTT0)|O!PMuZ-(I~{{l4(?oI>&St+HQ(n%J&wCxt{xF#J-7k01~8Y zWSSD`^w=B7DiyL*+#KeRSZXii#UXSU!p84 zem$H5YElke3%xH&8-_qd#4c*-LK@wdB#<;tKj4u$GKu)B`j5qoPIO{QjtQD$47URe zM?h+EjUIW&W^i?kJ+!Rf4v4)L*kQ!NofK?0@5MzM54L#cD+Ot_9OFv7KE^;}1m6g; zEi{+ng1U4Pdq+~Nj)Fakxu(j9zL zBG=I!SBIcAyaO5%o_L>;EA{An5V)@4nZ~`vWgT~;%LBG}Lh3SX%8GqLDmG|{m7Wy) zgV*>-m4Z;HhU*vv5f*A(PLvWko9@UUp#rp)^lFmS3=^VR-ueLW$bB3`6OH$4vX1d| zlXAvL6JaXH@nHE1u{2`=-hmxCldyCc5N`@2elnT-BXLyqq4|A#KMcqm$LyA0I>1YH zx4atNGQGt)9aDbjmM>y`?<#u4j-12w#;cS_9qtg>SOT|Vsk(dXvZu9@9@0MPmR3gX zX%M$x%pLJCQwdXs?v`QzEdCZtCoKQCS zkM1(9B7&1fpT?}KZ3440A9f6wZY3H<{Ff7}noO?4unr=k52*zWgis7K&Bz=(U=r_Q zw12*lnP)1^X7~5@#p&-0%ejYBk+F0~`NP+w0B>_7w!>sB&prn#n1V;{{VkVR2Yo5q zeOQb|Uf~)r4ai}r5Dijo&jtjpd=P(MnR}6uRS@C(&+j5X5y@*6EC@&6aKg71ev` zahj%dm_u>hQl;vtL_wxpF=k70V9Q!{NAwr&1P#ZGqUJvo6eONQBUkFzLp1i8k*0T> zjDu|SX3!D*dtcPeja3B<5y=D{(YuKBnj$FCB`W_y43*eA>-kjKGr`bA%AzCiKPdv6 zA;P7@jyn`@VM&eqIg8%?@m>pTXaAwG_YR0%2yB|Q-bS<5yWYgb3i-A>iq!qR?at<# z1h$3hna|z=WN)AC!5vvAG~&_nz0KrP>7%X}V+3=@?VxKs0D}fAMoyZJ4LZU`4nxa4 zZ!XbLp-2SbnW$i1y>~D%4DMg4njHyD8eMLq(d99CGK9uYv`G1H4xrA$LaH1+*V8Cx5T+wMX|A+Sy+4Qh=Pf2z zcU`PzHkIMc;djEe4+39=Bh_tc?w2rpvo_IQ1m<$$tXw@t-Dh0t8V&6n!XyuJjlwnG z-!WvtNsApB3QR;&N-U^(>{-{jbq!wd9W&~ald)s2XSu}+K3;zPPs~;xa{^D{4$;*a zfTVB_%TAX4UTf+wlbn#f7XoWJDGQEN{l>J9C)T5}SSJw{CAs(RHqnK7i;b@0L?`m6 zvX+%YzP?dat(qU5u0qj2@DPGI9v8+|*w+JFH3rdJXzafOTkGq_t|gYfej5 z&ZPp4fkw_JxHQvt`FIf4-E)()3xyaS5VaKbrfnQH*#tZk$nHt_t;Sr$Fg1$s;7A+c zIlNWlER4rZ)=FfYf$b&l5*Jq;e!tnE^o)^pDd#%~TR#LUVy5BSKjIXFVK!$wh}FY) z;czn17>;v3Q+v-PGSR?H?KYYt(KEHQde|Ih5qS}Jp$X?=vRokHX+ED9qcQ^J0>ryOihE&9n> zpn<-{H6DH`W&u&oRIa+3S?C;|-H>ryvy}8Cpuc_pBbmh#-`9_j>-eNrZ9U(TNk5sw&TkTbIg7Xmo~2)hQ>DUmsJ$CzM`bF7*SrT%LqG%!6I;cPFRs@Xi|FT3{2%oPcqJ_!&bW3v>>QYLh?b7?Qw8u!IqP$i$)oH55U+)rwKB5`<;yP5g z+zWN)4qPBDWYc+6^K9e2SatH)-HIGi?1b0=E;5$U3!`}~+p|)}GED5*6wCC)9u1l{ zu4PT3tB<-w${6-M!z}5suJ9bcBYGEZ8?D;UNj15)t&Icyj(~o#gDs7@mSJiXY0bBO zX5j0GQo5rfON<*XVQdjOA!j(C_mfPTMU!x?C;aoW&_Fcdhiz0u= z_RE3xDpukh7INqQTj-dWAM6AojR*8@(nnAdPosP;ljzqRD!H1B1=-w9h9m{p@tmswb^kMs&-aN_aE>%MM|3R>NCuu(abUo<&8p@cOK|arK=r=ks?ZLq_V;lwV+?%odkw}qWXpDl&Z%;P^aT)3j07|aB=R> zzt9Gg37V$kqpH^xA4ig_iH1v?amxArJ}7NwfQD#XKc{@9iN#wod+d5HeO}@l{yYeh z4rXS`_Ll(9*|yH3%s@m7nLld5US&oaSiOg?)ar5H)--m5hV(^;f4bU83uuU#DIzt| zpqKK}0BMgwMa!ciwyN@xB#Fbj$0{>#H)!bICeNkV!tCLt4MM0(pPLmG znfv@y(Yeo*#AvgzRH|dBXnl4Jn#vKN;sL6fp)r3-5odrW z6s}j;u}$X)hA*wDYc zpdqW;;b*R9vj8+iWr(P+X-pU}0T~5s5hHhR#_0eLOZ=HT0@U$${fhb`3X%^4(HSIf zK?#?MSFo073X`aR2f4OaV#@$a37JeC%0Qw2#~dnR@QJ^~KWjkzqkvDJ&zebFD`_(L zo6fB?qk-q-A5XzNUE~R!B@2^l-cNq~=H%B*x4=#tHcz*Lbx)W!9!@g?kn95H{XW30k zy1f=J<3RIzE=*5gs@&#w&~WB9ebh<0vH>mRuOOr$T%5LcE`*dFH}^_S;W|(lTyFF2 zT5T*Dpf#O42PMfPph5msfKG{e97K#@^FL!zYT zWN#`lsm7V0B3)kAqBc)}%wrC1;&{}jT}l?wkWW)4P93y~?*x_J&m!NGNHVXCa0exF za;5XrGfgMQ{9PQOszENCNAG^2Z=#1lHN1>Hc#YXPnrCo6IF3OheeUblw9U&!#MMlE~SFFN2A2qEV{iULkxV!;EL= zeV4(qeD?b{An4pw?)4>awxt{~?;5rvT6}kwKFrIl)=E<0>)4JNAXu%6%2lGF*Q&@j z98Ss_z+pxM5K%gkPm<=F3->3|+#u$B%jH8ePwBZy^g)ZCx*E(dd%jdGU*bakO z!@HxQ;cTiu(fiS72s{j3gfDV;2vwP9df=;-x^x&9>6A9w*v>`jLdh_EWyV}SPE}2hJZKTFQL$ptA0t~FB98bih zF{ghTio%Mx6skZ0V0^tYwjO@8)M;`pez}u%Y$#5Q%d^yp$}OffS5j}kC?4}!gQTz~ zE`{PjQkWW-!ZZg3hXc8M;JZ~$J$|BmV5);gj1MSFY>7)@@*pW(7?;9C2ZjFh80VsK zveM(HgQoG>N~bL}jnhFxdZH;sq_-s=O1gusw3hZHtjS&ym*2@wWVaU@?QarjglDAS zTe%az^VLEtYwFv#ew@(xw?no@5<35S z$b?t?kACa#ewp3Hg4b8u1AG!>&EGQD%}5UoT{mOcra-8CQ|7u#x~d%3866Vp=!__1V2G@07cxW`b@Q+#e*8IB84}Ody`}>;xQU7B@{Ev;>`%C|$L;R19 z+k0hrMmp9Ux)-p%!^C`^V{T=b+kojL{4l>gI)w<|67TjfcDpm?_GXSfgxzk4cl*<1 zBA$oa=#MJxcPga;dQVv_ouqekI!{LeLu5K~2&$StBN{nS!^Wl+_C}4nXHhh|cYBz< z(t6^7-YMzJlDb~?cOM6m_}mFD@KA|`i{PT6l@<1#Rf1{nbD?#UJKuzz=!+n+5`@aMPr0w3iVl~a&I?|W!0~ySKEU)2@tKk)MCt*OcBQZGet-UNyQ|3S#QVIFdyeZ61X_x_UA6o%y8PtK1= z;%zNjT3kNQYoMid@hI)oK+l)N1A0~ijXQ&drDx_}CI6S%$D(Qe?3w4kqPc)1`>FE% z(K0$2%8EBr@s6bPo}pxq{!N*;a{jWGd7-A(mcWRLKz%4MqHU@#E2})Gc1CMUQ>eAQ zwz8>ld1L#SdAhh%E%DndW+FA4FEo*OYY#2Gp z7hIW>FNoLXENq;&cqH)}6Nuk*GS$7dNhqEj;Zs(Bkk-Eg@fhO8|$)1&!^2rj9^+8g+g`tX*4#yn^Fr*#oYs~`30TxJuf1_eV@rrr&S`CJZ>aWpmCh#d45$v0AiotB z!Lht?1*e_cZV)HQ@|&9$EOg4nfJZcp89~PJf6V7_=&G}-pbIz)|T3g+Hq(5 z<}Pb$4mGuO_(Wm*vX)TOl1A7@-hq8;YpEV^;;z|_v1Y{AX?z-_8S=`5(|TIL}gK5{9lcz*3GZR}_a8E#h5)`0fRy``*a74ufN z?=V+K+z2dR*wow@m{;H2+|;rlP#*}gS`V~xkM&W2Ks)Pz=z--;u=cW0ps~HZ745GD zu-vh0bAaxHG7jkjOO|zn0&^P!kS-8v1#L2_qD=6n^8JIGR*QuUEo*}kQfBEPr*<%o zuw{Mw%D|HPl`J$spoYfg#t@S-p%Fhv&TpY}o8 zc{x3AcGaxX+_F*lo`7%U$l%JXvYetKUPFP?MvWA4chnhEmqS)>7>dCPz>|gy#|p}a zI5KinU;(1;5_m}y)x?GM&C41)0`uV}ptu}ijk<(o6zW)*2F{pq85x8p?ssTIF*|lZ zK1CN%e_2c8iZ;a1#s-Purs(s9T3b=eEh{B^)ZVg|w)%OC10xmkh*jtc@UOOZ#F+7D zV({(IvUYS8@Qs!;s4Ortw6d)+zy)NmO4bmXBlRzeHT5p58UhQNE^KTWrFG(PqGJgl zCMyI7e0F^UYj^=()hOV^n;hs_3Vq7{f!0h93m1J7Nuzz9Wdm=sRM}gpL4J zM_X%06GhPaW@YygW5zn`Dt^Z&^+AU#g5jKrS;o>Q5#?+bdP7{$JwF9t0kI!sUbg=!3do8QLJ| z4$2omk0oz|pcj(?^oK(g>c|}X(Mi~yB_IRQbS9tu`-+#3F=bmC5t^5@wl@Ys3(*Zw z^Jbk3YtSmd_ZvUVB+56hbx9i%9!g#V7dEzcu<=qypmjc&P~M2{Y0OykOs57KT3M_| zuT~$Lw=f_wUIWQjwy+*~XCQ}XOh&IEMtUfT3dN|5b z=7mO~?3G&cvDLLGs*^&J?{;2-4zVz|aL3M3TB-;o6%*Q_6dUN;WR zI42AZr2_FCj97X8Yg_YuvBz7!tZnZZ2Yc7`3#g_ zh~KmLeTLtgH+>(y9=~hRly-vjuy9kf5X8^1vG`{*7VtLb;} z{^&j&>rhsR^EUh*NZB7FTXZxw!9|FS=N6? z*6GV(MTski*?E+{qBcc&eS1gatTx_JPUl$~t7=dCXSIm5zm=v18XHE_pa4ThmOL-1 zNAA+x+S-P8$i~QHyaMxVBHYjYYIZ;VfYj#|BzSMIqi)Yj|omin7(MAUq7!=*&?P>5%gn{ zBvB4^_?Z|Dx^+;UNxVw%DktNEu**PMG^~^QIy-WdOFPb7wq$N&dr?b6;|kCDka-wd zHewQ`Hq;Ki=OQ8ZF*tVzQ4G(nEp40+&stbpPSXpqbw_n3?7$BqDUz~u2r~oB7gIqf zqv?(iHyjrjWicHf%Cyh0u8}ni!56p0z}rEOlXF+5yAp+ZG*YC%=_{>YE=4bH!ekT4 zVkSW|W>u8sWmlA!&zhM#t7<06#l;Yn&wP%ZH?_dYeDg6U6s&JYD}B z=t9UIoF%gcUS-4PAslUaW@~=)O0p4Eit^bG?yDTRC|6dllviH!+SE>x3!~S!%#-3v zc~u*7JAE@|_}c56Ya5Y;fW5M>V6U!)_@obGDX$?f7lDiGgM3D9_%O8t#kBao?D`NG zu9V_CW-*EX0ytwE8cYY`(gIWi^l2kYl6@qZiVn0+VG+asNj3sgekW&|s2vKvY^sUZ z0mhCrKglnoome8s>vT4oYU1bB#yP{{?Jh{Oq-Gn$Ih!-()-fxV+JPKp6gOVj*eonS zvT+Awb*~&l_$jlh=|IM`7?+IB5C>Km=dgw7l;A&#CY?)~bj~e} zHrv`h4;ek?2z}&VijL`c?3~&yVA#2E(6QtGXG{kEF94X4B@;vmX=LTl~6kp{g`Gi+!Ss6@umhySoMyb4=cMm@4^R?vt zZOFq>6C~68whmu|XamTSk>ZDZWy^SnEB#vrqZw#6^_at-URxH-%E|L#0!_wP<_wUZ zSsh0>0~Q{9Z7Zn-Gyjrv*s!};e1PsaUqZ7z|%OHz%#;hf+nBw>ORiSDZnVetX@P?5lWO)YK9_>r;!T(eaYz){BpI5cGjhY52^16aGD#E`WQ9E)2Q zG_}x?+B}Z1eeE1^BsjXJTqUnO3oqFgzKf&u{TxA;23~YO#M1~I89N_|OXal?9N7jn zU-)_Rd^%z=N!+7^mfyn+8l)z@_&rjCuID#5A=|~ViKR$%Wc(;sr1E*KZPcCl=Ay%( zqnI9I^~0_~kdEa-PSL!5!py#silTD5A8hR)wdqJ|;|PbwKjx4)Qd^>H(cFC<5VsA9 zIOL}G;3KDy>mLZ6K5BE*YnS8Kf!|X6$p0JgtM}yx%a~1JTVEh|k}m+*vhqp3q9D2* z-%20W%6xMs`ItO`D%`KYZ{{T548R47C;9Rx`GAFUyhMML7DL&uB=j@NZfaAKU`=i6~nYp^m{n2*-{{W6jfZvMa za2)sGn1SOy9CL9@&B7QB#|#{w!f_*x|H5$(j)6pyXMeO9$2~YcjN_Ud&_BrM+l^xo zM_=y#Xo!yapo?#jW#CwY;~E?{;P^nn{%AVBZnnD+df*r++8?!XTr&-0G^|etrel1F z<3=1u9*XN?j1_Tw0LM)@X3PLQUE>&pz7NdAm=MR{to_l`bv{TMgmx&m@q zXj9l%F#%ui+lOruPvN)`n^Z>QGk^PVY{0P&n+rD3^&H5DPYA9#Z-2B0$K5s1`v{*e zvmShp1l$79Jqr5axrBWkRMNE)!-Ohj`8TR zptBO!$3c&aP!ISVm+xYXZRxlcdg41}SN#@tNeBL$&}%fV_d#xSAgSMi?wR2CKL?^$ zOo2WH2cm1v1-+^R(NH${FE|kG$^*Zi1JSnWkn`>X(bQ7tkJnjW1#b`92cmWj=$-UK zbPZZ)-T6O6x3&WR?jNGJtpeS9e~30*1iSs=hv++N0OyZJ16TNbuQn+Xz@x zDf>rd>+#!wvJ-g`gWH7jO)j{nP<9*2qz;6;8@~q(++tjRfZv7*`=b}&Nb+2skY%N; z9hzmOb|%(Kv8KzD;9<{LDOt~1Nm)Cs#JuDz;|l2G=?D8XgGZa7$Mh>X3>eU>AbFZK zJj)8?S*aIDl7J(-Gy{+1JzL)UT&S6- zQjjFuUIiX?;8En}k?Pbt-x{861qv;y^8kJnJ68bjWPwL@GQ5Z&SgrWr>b_3^(*>9V zuoubiWv4k(w95bclO@c)5E9mhp=Viv9Mlrb^TNAPwy;3Vl zn(@xt444Ag%N;AS&<9idq#R%?^tsx!$%VoW(~`?&$eYd#g4h9r5Z*%IjYN*I!o*u> z0M$y&Jkeq~zm33a`#14&!Q)NfZ2?}V$#0S5K@~@xP(gB$Awr>0Baf;Rc+{2x$Yp%U zg+l)h9iai?*8xBCe~F(C{Efh$I&Ob-jLE;iO5^rL(?>bFb>A+)RfEqr0#3v>M_WlK zVT~o1wTnEDI<_)859&@>n|S$9xPaL>{;f-24P>ZJf=rO-dLa*MJ2lp@TorqSv2&BF zJW30bOWlB3$@#*rgpy}*n znw3#wP06-0v#i`Kt1!zd&b5NYRz|TkCD+PCa4C`}Uah7O{zb@$Xh7(P%BMm7c|V>ulEPmauLZoqE2No-KRvVkvQjm($* zJ<54nkmD|o>75E8V=nUbJ&^G)IQQ%?VABd_goFlbN{f{V`@x0XA%?~Lt3YeX*!|IG zowQ6po-mD>95$WBY>Fx>la37&^TT)$yeXQ_)jjf>fbS>@BL>KW+dYO<`lVk=l`mFHR2 z1y)UgRX4*5=CJZB zN~R|lyGpX4nn*Z{B&lgupo|s5oqZ(31CSvDW6o9a+5?h+glZ!xK)cPh3bR?e&9%z2 zS-ru4aGzF>yr3|-o;e9_BV115*$5mCF#(j(79qoUj6+9by!(K#gNi+r8St#M%u35P zQi5V@IBSoog+>pgQs2DfpphQuQtyNG76_v6ybb)C!H@bim4_%wMUoZkY?Jc&*otE0 zJHYD#-oGlFF24hbF?+RgKQO{@torz0iJgu~b=U9OP7J88Q!(P*@ROrbEc?o&) zEXN#9WhIxGmwCwv=Sg}MOlh7lK!!T}Hb9OYm`_-XbJE+CVI?|$%s8Ho|~nG$Ob3y5duqWX{dk>lSTpV&_A7m zQB2>GgWhvOj%WIKdz|#(0!uP*23+@>yRn-KxP!F?AKxHD${}&ft96Syfr(1y=Pm z)}x>!D`S`F*8rAhHDp-}v#jPUt1Zh4Wmzk-tkv1pnjzU%7k)kXU4h?KL(r)OC4VsF zf+X}Y0YH;0gOfS(UZJ!1EV9b;t?GOUUuRX%VvwMl5VXn*t?E)KU&1A<>&mlg@~k>^ z#8uL0=;gpiDTfmnW4e=1Bg3NZ`aCTO8Hb~xddl%j#hl>QlKs)^a8C85VtXpmR31AD zFoHJXH5)DPJBWbDHyf=0rgZZ3sG8_51l^?4|1Mn`BX0%WAn4MZlo2E0U!93ap?Pmq zFQXuzmqIy@($k!QvyH{#QY*EHoj?gk@Gea5Fz6tHl3tl$9;ApwM{&teXa>?RSZ9wX=N_3ia}x;{VmLA z=fzfLrE%UOi2w{yI%pNcJ#kWO6~p%cTxu29qIp`GS@bb0-;1YJuBTa)*u9|oP8Z|O4 zjxgH_E|e_}0Y^nT5UQ5t=X+FLL2?s=Ms=ZyW?2md*1`g-xzK8xOO-|ej*@Z32lNoY zIC)mT!30E(Vix)kNr(vGOC$(y_7^)Zk+*08QEMxhfTduAq*|GPf=H7LCo@>^0yPR) zneqZ4bK;zHiy;>W!lg3&C@Qmzum&Qtq!n>K(=aM7S7K;@Xj=?3i5NE9DLg_cYJd+8 z6fQ1Zru6NCnDSIND&e+gwgrjY&~>9_5mQC&J`LUz~O^Y zoM0^gvaUG>lTcQ|6WCM1D^4QlWvFe_?9XvlLSjJi{?3TrrP|Av4b= zktSh4t>#8q9y1baU4?b~qhDhFBu-4pOqgdx$#|i*5;D2dzZ_VOrdD_uH_xltxDA7^ zW_i+J6=$>1n@}vHE6_@;%!?U5Y+lArfP>(S$r_v_v{{9@tQ6A_2pGf*4G6Fam5fN9 zlNrlmO zKpg}$zy=L9af$wg_fSNJ_cU}i-O8QLXckz(OyrtxVomaTtZlCSN!-<`o6jyt92mJy2_~F^ zbk&|xsBTv&60ll@DqgP6YSq~sb*8PW(ZN(B!4GKsA^b{I5U7hYZ7hf+086aUc}f-_ zYHk{OH8(AhovmP*ONl`bSqv6RfG@zGi5tN_s2GEt5CLu>YHlGHfefUZ$EBLn)e2Hu z4KZ#gO7TP83yYMi zn`Dq%)D=Lhn7e7vYIPH!ik&+sQmIh6DT;VZKGHPTdSPCnHw{svJ2QRfWvNZ+Bzf@2Z1=DL*xh~4zXmiX2!vY z%c9*tNO;t^C=vpCX-d>e4cHtZH;F-3G372Y;N}?T1JN%tU{`~FwzwwVm-KVZY(oN& z5vj@&eqm55G|o+FObrNWI^d|zNt+7|90@0_Qs=stk88;|=(=4y>~Wz1-FzGa(sOUl8XP$<8-KByx@7noLe2uNExx1P)ni zu_%)!VD`AtAexZtqEc*dVXl3Z0o~>TuJOmqD7vq^b%(Utfe#urBFpsxVp47-C2TbtS8|T$lbFS3} z$aZ;xQt3yQd`lN5{O$r5=|!oWZo zU_n-h*~IDW1SO490LYp!hiQOPB(e?J><-f43MLwtyiig-&uYjuP%qHsLLt!eir-i* zg?X|Wqw~P%YRPiw-9zMQk+m?NokP&`5O+5SwK+ z!*n)4@us$<%y~dB`ESyvOgzWYn;z9G)~Ap zOja*Q&q!X(?s3ahD8?lWCXZbgL8PBat__kDs<_Okp1A;8YmiES`|{d=xABt>b~4SX zYnJZAxh|3Nz-FjM%stQ~IdA|f$iPrb4Q9A3l}OOm?HZR@%{g+(55pL87?9%b5BtJ% z`oAr_--GgOrXe?Qp_G7YhZ@BRBwHyhgmZKv4b$0mfz^gE@&SU&0~m`0pT=|I@#i6f z*kx3$)+%b)oH&*j`FuZL6jYa(@2}x2mTC>vYbhcht4Nw8rUq;Hit18E7HdctT9xyK z2*{0vpw;rm1(Lp6>Zp*S6v_1gtOJ}cXYPUSnx0oH9U--tv4D}lVuraouv{)xTqs%2 z;0pwK$&FHYwxB?Zr#La$R~n+!Nc1HJR>F3+X$dx@jYqJlQr0CcmLTHY!s3j&1^zGy zuM)M&1Km;X^DV@>)%BPkx1YsZ{%8Zd_t!6@4kROS zfJgJHnfedvO^^&mkga1;vv-;UQ2XS7Z8KY_K&kFpk!G z483uPab=p~|KfZWcojpwX;5e|^o#$GW%J763b4}k8m!3cm&V*#)(1%WZTvn#d)tRG zIE^)U7z^T@+6P&E8auv;@Wrnwrc{ECc|A03h@eauJm@*O5%q-KAR(Jiv4KFIKu#_1 zEyTHUAG2*HY!O&8NXW>;T;pwngy|+|FwQv2pkDqrny{Rs4$;-xABK z(V(J5#THxs5iL=yn9`QW`#k6Db@p@i+{=K$xAyV_RI_zqg<9rhSA&Zgh-4oNW&f$jU^+=Hnk@m@D^+-8mUm0A zRyZAal&(FGzTX!r^i~kqGtorsAF^d-Qf*4L!>AfrYtVGFTgydL)vo;K5};Aa-yP`m z7BDhls#AVIVsTioM6*9t8?kt@M~1nGto+$Kn2#!mwthe2*>6;iB35m(r%AoVsWBHx zV`_C8{zAiWF?qy)ojd;(_?#ASsRU1l?PWxzY8_Avt% z>G4bX>XEHA(S(0-v|w>-ceoF@)h$-^SbN6I)sa}dV|JK`8n93-DzT{Nx~Do?P{d-f z?8cYm{O${JB?Q)xf0-R&7{GA!Ar7#_vKz2`Wa9>l zik$?=cr*X^>+;l67Uqjr+wmG3+{kBQsnxbp#wr@?CS)R6X~$a_;78^cnduQ1n<{P_ zfnaN-0N%1a*dvISh*)2{1%ABBjnho8Y-e8uEtAzS92cBvz>6YXD7I!Q@!Aw`@t#b) z!dq%d>)IZ+jBOkXiftT3L~fE5?7b0xtVn2kETH3!mN)}(Ia3|n_w(z<=)!}-xXz!& z<*bvx@$B<;{`op@?dAW|b$$fy1fRn91rCmW_WZ-6F3``%tu=0*Nk5M^KX?Zgom0G_ zifwD(64Cu(TQF{ti=!9qdT&pREu)A^zsovl^ms+2vuB@a;xDde$0aHZEPh~!`;54c zf(NnhkGN9@+3~QG3>I;Ry9ijAqv(?{0QtMPj(>$!HxyzxDCiy|+#j{$uN9OziF?`SX5p;j`e)C-VQk6vK(8?R zObqf%!%*rypTr&NeIo~IVxNrLNA`Fp4DaPL-~2o1R)TRDJCNpKQp`sVS@iBKC4A&k zx|HydgZqq^<9VQfcku$xsze#DJ5C-We;g{Ci?j!U+OHVdGm!9mHcBJK<_2y4Vfw?uzIJq*z<~}gC5=^&>IPDDJru! z^Ov{*rku%e)|twIcvqn#?7>Nj1+!S-Y{dj|Y*g;+22AU;LIFB`u(@iS>ytNR+G5|5 zy!xy*CrL%N6irqky+4a;o%d_IHL+kv6py6?6)))57FTog-uu$v^qjLA{mM2cp{Vol zFr-@^-h7R^BVj;!E*V*<9yuV(-klBVxJE+5 z-;tQEsEgYAL_7;@fwol=K9~eUFW(4LzJc(EutJZs7W<63`hQmvNO>pJ&#hmB>aCMw zydvJFX(u*cZGDAExz}OnHKk}#UwG7FmbG4%ErPQ*l)XS**=AqG?^Kpes%I=91mHJ0COFUdS8klbP??n$PR zr!|&8$OnU|>Mg2?ChP0Fjk8#yzkFQGCNSxP4lrnP#-A84N!0HkM9Xxpv72mSCz&sz z2Qqx&&5t^nHKUqxwglM4>A}M&Rk-q$k?cSp|U2S6b^qBMoP1$+k(c0eK$w z$em!$$I+xCX>PKqvufQ*xtRCz&ziV;Q!cg~ruIq0M`Bt{!(;kett^mxs7=1%0O6_=H?Hnd@FQukP~@I8>phGc?nHs#||y&xrEa+ry=q%yRRFBf-CH@dcd20| zDw88Z_XS7all((BJSWouP z{W2z8BOsfo;?BB$wY*4cKF)!yB>X)b-z4FdT!=I2?15De32xH?`eDD(S_uv~m|@3> zy66n!7ii#bQXY6}T17%od;^k^!dgZ9?bQViMk&#&NFz)wYM%QFs9}iY;AtTlxlcj% zH+>1Aa38tE8DM?8IfUV2YLmUsA6cJxjNNWT zWxzYG;m1yP{q}-c&+_E!03Ak6J|9v_&f2naMA6|(+1OQJzWH$Ew!#<|-XT!Apc3j6dp$+yjI6E-b z8cDLb#H z;^+xym)R?^PEyi?t%0LbSN2F1Bf7I9M6%@I#uy7nX~i#ew~PxLgM<5?L$T4b8lxu# z$JxPoyNiEU^bG_UF_DV`G@2~*sxXEA`$43K~GWCLGPY1D2e$J zgMJq)5Tmz5gv*q~N+fZ&Bmq}lui#LgnTv!sbWeP)o}bL$5|Lj(dCYP+Dvyr>m~%=w z-C@k@MO}H+lTS6Izfj7*(VQabw`7cTcqOCygfh%{i-nmZjV3^+njTTm+W`L0E^MeNQp3 zPiz{7PM^Na zxDbFvPj>V%qwPTZ{nZ2f5kfvJd zz0|iAO7WMX7aOPfQBPmDXjgnN&NqgLpgGYTmTy5u*vV*>V6|i{HM2$fpImHe)Qio} zYANVGdB?`9Z@*X&c)-Ho$0qE?zNJJ9!_~zzvPQ9|Wk9hWAc|m;2($`n*TQcC*d6yy zNdSK3>C~*h`Spv;FJmwZ%w~2>84&O1v$C;|u|DM<$xpY?aiiL2w3I0agoncKgm5nC z`F#leMhp&8yf7BInKt#=746dWQxNddjAKV1s#xKoM@6Y46myoHW1lVX4bC@P_MzG9 zLyo?nVP`)Wa=?K!5OU8TmU{!1@_%y#Qv_cm3WWT2C}ds8@yd`RTa|U$kMi4O1C2pdANmrBak(u9ZFrO}{2kkf2$a;bE@8yV~8x?~hgnMAz($bBd zAtNvay~{jg1g21G3yib=3+3-}gq81+Nw?0knfP^`?{KQYYigmR6f%OHzqD~3AAw6)oWKz^0Ol%d;as=K9S z@JSGl#L8H5a4!m73LmfA42aFtauXT_LHC9Inz zxY8yKXb!tN80mqC&qdYoOO8<@QV!WKCDF-+Z`-_QX;U%8FTsPg4p4%9Ndn5QoU~cW3NOB z?9=gilK7rED9EX9drXddv%!RK%fKuu!b+0yX2jXoHfOE z-mI;_AJa!jJ}O{lvkhk!Uv|A2IJ&*Piko33MKgyRBR(LN)A?7F2+{6NW58Kb_6Ywx z=roy?>~d9OCD@bZ!0klS5BmWgWIxS}*uC%U|65i>Zux#ktOBc9BfC@!RF%fJ2fcjl z(s0mTJRrMz*b9(^UIoX;#Xce2nf;j7UN?X<+=;(9zZ`eOOZbG$EMHvoOOp%jOYk@= zF7+k&=ICqa7x<$ao%UVybk|l*2n%xV+{48rP28kOOxEZx^v*IXhst(F}o_MR~}szbE5M%)6F)zc!d41{4N> z&t#d1xVE`OvVCPqDqbSIZJnQ3>SB-=AJqw5vGJaWbys0NoYvkN37L;1)s6^%Wz|Kc z8cVOj)WH(;KD|x@%;^SSzUq(S``cjnG=&LBX}nTZitB{)6TByhfVBgaal+svjISJ- zu+-hMLL!U?ZPr+*Wd8aZDk~iKs*?L)I9=zxv0@hWB4HNzKTnny= z{Wh(KkZ_Bcm2!&IOL*VLCFW`c+7!e(i=fgv6%)rrV&oMKm4A6)Ve}^g9FPB+JB`tz z&V)1ZhtC@BN8dZ|7v~SnF4^yH#Ik=2hRdx;Vk0(uHbdhrc(!5&w~?Pd+k)Y9D=Pg) z976f`T6sqk@d4PDjYZ5sEanM*PO-cQXuSCnt=h$6T2!Q7!fuoIP{DN))+Fzm4nFGU z^;=rvz5MM6V74PQ-&}$#RP$EhyO5d%;iH-~4o#{iKwTbM&35o4THd8#p~Rji?^Ln|T8tP|F1wQPRa-~c^0caHm4a)i&+~KY z5mGv?c4oaSy+f)b{~NmlW=30f%8rj~jz2C&ZF~W0^E}k%*;i$kuq&`yz9DEyR;if` z-;M9Nv?N>_DAJTZ+3G+$9IM4Gg^iWFRI!3oc8v>R3w%z> zt}3Ez_OK;I@wlxQs~B~;wW4Fxfd9bTy1d(IMGdvdKPL_Uq?m^9N@@5GQHp6>yNERY zfhfo(X~V*0Q?RF)f{OwLeL>=HO!$h{>6POo#OmKlh~yt#ssfF*gPAISk0^h+Dr;vE z-OG==l+9A*e<7;j(!b>8V-lh|70tjppIJ1L%U_v`*5x0vAZWv=5mn>9fBYwDv5BF> zKrw~0f5o`8LR66+ki4!aRzM%|`O7Y5R4dM6+}Wp;*CFan#jy#1^_0!mzID_f(S^PeSQ`n7JY%O6jd;%+{lc1f#=VeZVejL-h zli)jr=QP6NIJ1*DC%_wr&vN`&mYu>B_B1XlABTWbn3$c0;N#`1i){Gt>cuIDh?838 zl4ep&`qn`>R)b;n2%F>7BEAc%*E&`3In*frLJ6;TnoukL`Nf!fKK=xFTlULTs(^uA5rm!;lMK~RYAW0O9E=PaIcuw~qTSedZ@Fdp_XRp7xEKo+|TcsAqNlEoSx&o(^U@$A5}GwOrp zyE3FsCgWF;&H`5tHShnE^j|1;vbuaZ^ru|5&&zF>|B3qkD(ukkynUl~UaUS8qg{?V z{Xfm-s&Ci_Vi}g5gMJhnmw2||*@|Zyp6z&c;Ms|17oJD)?8dVP&t5$H@a#uFdmys^ z<*=)kSEy$=CUDMTJeN8q+~)c^&XKIIQyUr0^7LHN`c=tQTm7o^HT&9lIaFP-G52!V z?Ly=BP%F$;Vr{%w zn<++H?fM6sGg5b3@Nwz6{8t>lbO`y+H5?0XzmD#ecU@oC51|D9U`Vt==H%QKTDJ@l zXDFFmC9`lZr_5hQ&pMY6+Qag8D`<<{M3xmkUbUaVenfibV5QiT`MK0Mi=7Ru@?A_i z)R(&zmlEff(e3|MoXcecZKzg`&$WDhoo&F~uf?dF+?8TSX?2tJm7SR8UE4Z$s%&4a zL*8vSjdidW^0(wYF(Yi&E1cqN zf=q$tRxO6A(#7HoRn;z692T=}u@^jz_LDWOTBwm-iXFrp5wTc5a>+mYnD!SATmXfO4Dx^~cYTMSr zV+JqOS40D{wVOr}I8;Q2hxsl4f(Ss{_APRea9iERUw`!tYK1Us^Q{wlDITS-L_%R- z#+`LGg0%>njRtR<;tOGNj{U};DAp{A>g-SzWBzU1-)g~t#KX~v&wjtW7x2zrlbu$R zyw7$5-wc`w)WmuIUT3_zQ`tX%#a7xBg8> z9eJ2fqia4&@hDwu{7`8Y3s2>64-~N>3mtuNttf@{#O7S=@Nvh>Gi%Lm6}p+9MGK$7 zI09qanGXYMij?zW5rWaur-UJIa5d8$simUHKXb?4GD_d-8Rgr%#>St&^8xJRj0u0i z&jWtX#jCVd-mL{QUqjiR;XGnVS(Qa#8mAPil2o+ysEM_?sV42tW|YALCz|7Smk>1# zn=ub2bzY+bA#1J~h24TFt2}JEVIP|+MGCR%zfRs)iEu3K|_AooaJ0v%>6~> zO#6P#83kDe?vi&cL(Y^e_y2#8qlHpk!q7@r8){tbL&G7*1l=AVJGDE55z6Uh`_&c(N0KC^ODT-ENS-cxVO(m%XNiip{mO>$+PCNIQ&Z(Pt$`&Fx*8*nb&a#~yvxv0v@3 za!#hH9V8kL>!gCJ~&yQPbCCQd;8glKb4~N+$af z4N1j$K+{|$@$qFHZ(2=~{k)kBf9%Qw)({KG{!CNMo>To(sXQgAFd!++f6yqJK376X zGT1EgC{>uR(2!Idd=}NGqmnge*(n-7`xZs1j6SK-nnZH;Ga9E|Ln7IhQ=JfIpUArW zL^~Eyu^C@Vc2k*5cW4bx0`R9uyfL(AE`P?Q&RJMAKVTFNxUEIRWdBIB#QkM!M>@op z|A!=|mAd@B62Q%pq_F-=(`KWzdukT75zOJ7mt7{eM9G}V@K4Fsd@7T<^EKzs z55qfu#^6~F+H%lFlTbBs_}ehwBk%J+&s*Sm3p{Uu=PmHO1)jIS^A>pC0?%9Ec?&#m zf#)soyak@Oz^}IjW=_jwPEXBb%An?d{YL!zs^OW;2;kAUv;0E*uK9L0!#^ST=vRkj zUWVV?6ZmaByMg%`HsYWE;(T`{gy0ixneq5r6!`PEnE_yYRylJgy5^F=)0!t)fKXYgD(0rBzNfM*(>Ie3=hS&e5co(J(fjOP(N zpThG+Jm13e6rN}BT=_c0$8!UoX?W(~S&C;hp0#)$#PcwoNAP?K&lmB03(r${p22hF zM8wB)1D>zkK57&muZ?nC z_`MJDXX0CE_2@tCXG0O%CeV7I$JlD)%4AM_cQEZ;;M)mVJ7;;mKLu@%$Y;nd&<;odazw__kJg&KG=dFzs5wjyrNOdq$@+e);hM}L})#+Qf(1V zv`pqE&`v>@q;5gKO3*5Ubf8 zL75){?MPtzgP=7AaSwpDHLyL$kb{9u_kp%4;M)t@_8{Fopq)eB)b_hU`$4L0VLk}j zo}iBJ0_`T~j45FJ0~_oFZF|s;c7WE1xSTIWKj7OA+CZS+HqiD3`Pd5D^1udLKzkyv z)n?GfBkl_&jZL8KNc9_KnT?=r4QLxcJDMuDGUx{T1$+h2HV1j@0d056E@hbx&?W|U zX$7qw`S3Q#WLiKQ7w|QLHV~w-lC(gV<)9r3bZ!7`Odziww1a`IYRMPaY946IgEFcC zZ3N^BB{^AK0t?`Y752X+|++Aj1F*CaM5%ZvbRd7$%f(Dny* z9tPSOq^s>C1KOUT4?Bms+6J^iuCt;aw2!l(RR(?M8PMhh>7E8{Z;eWWjDua5z0kj=K zog4sdRG>=%w4FgddO$mgGD_zDNTUO^@j)7`piK;PZUOD4puRMcFQBaiZCg;j%Rw6# z@HK!oCZN@W_Gr*Y)PmL+w6}Sn)daK}(6)od{Sa%HGeKL4{3dG{Clkg8GsnUl8{k*0$SIWrV+P3fl0LyiDc{XlGF; zwa-2c+CJ#)+j%B)3bc~}-$~H61a;^HXk&vma~!lxP#(uX8x!yy1?>#V$d8Sf|A96> zu-{?OHU{PP1my+gdkC~mfqn-;8ximw0PSdyxBZ}P4(z;-H1O$Mc`s<0K;9nEP6qkd z&A6%ZD8pPAbC4h(yFl9z=*)eLv4IV^zcD7DZ3pd0P;T2mD+D@k1+6DYcME76g8Xg< z?QkG(6KE$(pKsz4LMu2uSpbZD@a6lUd z+M$4!0j)KtYv-`fcPwawXSw%>xVran2DFx-%uj<>2=aD{e1WY_g0?(}djhn>L4Dz# z2 z0JNSUzxzSk7s%TO+M%GW?gec(_%w|@pgjTG>%Px!&~6O!@hE5=LAtv@TMj$xKFvI2*F0PT2?kL{q115L|!8)yem9y-=;1#MT5w=JMu7sTBR+Pom$O`weq_%?zzBA{&m zZCF4X0BuK*ZUMBtL4D}~?Htn8d~|@;8rZ58w5@^dTR__!q|pf4(Lk4#pluBJmV-7B z&>BGN326189fmxuyS1Pl3TX2{I|!Y9|A+lQ&<+HAGeJ8OhFlp=a|SQgm3+G&wmQ?dcNxAeHM6Bi^p|{zwuhH&m!Q{ zBJba+&r_a%CBnDf>C-!i@YB6MyaVAo50)kQtD^pOUfhCJ_kDWeY z(u9ext?ZA`kHWu>-#lOGariWT^UMSyqVTIx_B<(3afZhN-wFFpaN)CnE1@6HW2oOs;GN(<>%!L&*Wg?34!;|i z=YY36{20T5uXOr94!j-b8?13<*iruq@D`*u#)V^O%5ctL;aB2?a}C4S;)Qbn!>_^1 zuF09qw_SR*!1qnbWFB|83z+j4<9{nLD(4UIo8|Wyes4kku8Z^;nRy&|=PjAc-?;cE zfg5WxnR}dmFS!Esvko#``0IdMBtLHe=3EBRqWs+gyj8*%6QdE-xcHlZdG2TRcNcK| zLg?hu`#i(zanA4fzYV-ik`wy2Y8c&zZH11;BCMh^WN+9I|{rP`?nVVhrkPyiL;kEHK9`i%%aOj#Ip&%CzX9eLegnFG%Kvv@t{pA@6`-F+|7mzM@D2%o zCGbwclYpO){8R&P7yTN5cM1P$;8P;MANZK?za4nL$oo^^%CBRuAu9iCGJg#`von+V zp|j`Xz!SSM4RZJ&feT`axISK!c{ecU1P{J4miKqSMjZZK^SsLRy9ao)==%r2+#j~^ zoxqzU{FA`kd$#b$fw|9V_@Brx<@*dU=fE#Q1*Cmmk15Xy(WefWXF?Xg5twTc!#%*q z1wQ~>5BX;Q?ZBKPZ*=wXAAq?pZ1GP5Unla<0oO==UN{o`B5xcp*8~q>Os2kf06!}B z?*!f@_&(sBg5L?eL+}THTP3}Zkze%tG%)wOP2VpAbC1~Y_kp*HJl_zdbViUs4rHJJy2xh61q{C!O1eGmAk$a@+%Bl-+OL2!-n zFn&{?+4xQ03e$fXFnuTtw*ik3dv65hn&Ay&HC@&L%yW{dSITbn*3VeO%i?wF!$3ed@b;D zvH#nE_aHsaw^{!02j-e_+i%78KL*S-?wc^@WqH2zB^VE-K92)FA$T(Ialx~Ij|pA` zd{po%;N7BsH}H1RcLOlbiA?{8fayzQ_+j9!68{lkp2t}D=YTt;ejWkl8vCo5vok+0 zK*o;=|L*`F5j+X_gy6Zrt%6qqb8pwuYX@$T@V5ZhFD}n~yDm=e3&2Mt|6c<>EcpAt zPYC`g@FBrvSfU*id^PX^!LI<`FSr7DpWrIsu~I)8fFBk6H3OfP{M-$^SMYCmzyneqFS!QghdmPh{c7?r1wJhNtAXc9`UT+A68<1? zqsaRJF!yx$cUdX#>%eCv{?owpVK9A$U5ojF$opMj`X5;M>w)RZV0aPmfbe$#pB4Ov z!1RYO{*M9oNcbV(bAnF+pAkF^4ZlP1?*N|@{VRcYBEN@RdtC(F_#^n?I=qVbo7hiA zy6#RPNMrr>GfVYdint`{7{riEpiv1o0-YDVk2i_s^_W)0k@V^7z zFY&((OkX1_-=~51NO&0>RC*-*MZoofUje*J@D$(;62A`kpx{-&EyCXqyjAplJMc>3 ze;9b9*y|&}wPLR?0Uwg^?*eZS`#%kQO5~ph9+2>>u@P`m(t9OvLBgj3({IS^vkqR(95O40XD;0+SK4tR^i ze<$!}3Eu^LK=5aP4+;J<@Fv0k1Y9ZjH1JNr!?AH$EBJSTI|NSx-Yxpv0=!(pTY&dT z_*;M{O89$$Zxp;6ctH5S1iVr3_kkM)p9Wqo_{y=ckJP7^0XK^L$-oDMzYe%Ta3k=I z62Bj~N5Z!P7X*IC=lkng8J?Japd$9@YlQz8 zaIN6Xt6^W^p96eE@B_dH1%D2Bui$gQy97^v4a!e&7jQ<>dl2}r*y~~7DbhY40X`u1 z*b978@Rxvh3O>g8BL7Fg^F;oC0C$M|D}EpIISIc3c%_uj8-Sk>dGmnBO8f@knZmyj zxL)+xN`8s|A>hq|{|dN4@ZSL+68YZ*-X`HcWqgsJy%FQN@V^AOLBg*G9xd@JfNv7q z0K8TBo5?TodVx0z{}$jQVy{PlPf7fJz&AQJCHM!xj|%=d@IJxW*P?z2 zz8ZM9;NJz_Blxwz`vt!Vc(~+e0q{!E_YU9!&V#TlL;pH5vktgb!g=46_x8p{;n!q7 z1k5{pXf{!QybqZ7`8Jfr_-nv+FN^a21=#Ln5&sx?IeeYs_Bb-SuR0GtNH28hzia~A zU+gza{x<;cbH1U(w*v2h55;dd{zhQCd&TgFfbHHD@t*+Ooh#x;f$hE(@t1)g6?xwQ zwtH3#|1q%Lu_7*e9m>P`OA?O;w!2ltuL3>+e~#f!zv;jyosSj6Zvj3g;kOe@csH=! zqay!Xf$a_z@rQuz{uJ?NfbH%S@mGND-W2gE;Nh^}i<~~$iRizaZz9951Gc+T#8tp{ zPl|Xou-%a&emk(;k0Ra$eAfA{5q}og?nM!Q7x+=6Kgy;5Q{a=rKfD6<4Tqpty6|g& zcS?Eu9`F&d*Hqv};jad^yH8ASDX`spBEAdQ?mQ9S2fSV6ZvnQuP7Hqx*zP$I{|)dS z=eI=s1>l>Y&u=gP$|M(|(Z!ha5IcbXV~_$0RP*guT;I^gA!pVt6CA^Ckh z@OWt-3xVza65}@k+ubGNKH#Hb-#-MlJ4+1T0lZoC{cB*mtHkiX1-5%i#7_d(LqE&U z_khPq{(lTSAo7My28KV_3#>eW4~agn1-AQ0l>bKHgOc9`443>i11}eQ_5hCnzsY|9 z*zO)t-aCNp-VyP8fwxL|KLTv`jTruE;8xN9E5LToh~dY9?T!)g&w%$yeqMl$sCv=w zT41|ZME+L;&jY{J|0>|&lE0ohP&mRKs7yG;)*zOOJ|1n^@J4AdC*zOGx zKLu=ehKMs$p^wPF26(T?zX5o+;Ay~iM~Ly~0o(l`;@g4eN&RhOxRn3Bz%wQMA@WQ3 zp8{7(_(y^59uVd41-3gt#9s%t`#;3|cEv8ymyR$y1djsVDed<-S1)ea^T|fo{s=;6Z?M(*zV+z{}8a<$07a>@T1b6ehO^&a2WoQN{nZi4`5p^nx9Ms zw)-~>UkYq@Z-@)PcJGFG8}LynpAQ0W1}=BM9Nz#88u-$*5yblB0-527|0B@G@^((|O-+2ny z?z@oxKY;D73-MKN0KeGpdf)-kuL5|3=u-teR`Rm|c#PoNf$dHU<>!IzJ`3^vz&#@W zoxpaFh2b9tJ}l+)7_i-6VfcPxsXt!>9uWOc0^6Mx@(;TS_7eWz0=By<44(vS_f&{) z0zQQFv#!0&0Ujm!TMRs0a3gT5gVvAQ65sBV}MUf{NDraknpL%<77Qm z4Q%&KD1RZa-8CUz0eqeCuK^xFeyzRr0S^~_9soWm>Awqjl*Io4@No(M81PZSp9VfG z_#p5h!CwPz)%pQ!_e>)D0B68&>#N~!#Qu=9r|W?2ZVCCvGhFOb32b*t7+wo(_eqHF zV7QcD2k=>7oB!VfTn}vPr-y)#$a?hsz%>ZJ%GJk@0-u)np9Vf4`8^0+iEx{*e*^fW z@P8k;N6O=A;C&MRKYGA z1h)hC2p#}FEcSX3_>kajz;=g&`hF1jfQ0V`J|p^n7TE4>kpFSueZv0@;8Vi?&%ie( z`_I>AP6Lmr&$yovnP-6O?(+B?@H;y_F0Vp=*5&bV;IU77{33=6z6SU_on@n+5t)|* z_egrL1l}z8)xeE{Uk5x-@KoS|cAwrGfG3K+Rlv`#@!@lUpAlRK{1d^8flmrv0sJnJ zp95Yi^7Fut3vLJgvEaLbkBYt40dE(4AMhc;Zv);V_#xn}Vqf}-ZxsA6@S}o1!1#i9 z0rz~<=l?O_!-D@B__*ND052DOfcRTJ{@(+imhi6v&y(g8wLLe zc$CzSp8_9}@Uy_j1)pd9?|FGw&O-kq_=UtGZ#3|B34a;z9>LcGACmg`YT)Br%UlAu z4*~oh37-!9F2QdE{sY0Yfj0`S1^$-c#lYj=>E+)Be5>Fl;ClqO0w4IO=kEsI`U#KM z0)O%29^VK2dBK~2_X&Onu>J7<$HTylQ)3GKZ?*&P6#N)4*Qoqq_!of3p}$~?^hZAo zZ1-2nuuA)PV6Hj&L;h?v>gQKETOj|{nK1q95q|0~EqqkOXa7;Zi3qPp`sARzIl%Kp z{z_oG|3d$nHsI^seH`+?1=#M>l;P&?X5fhkAMNCQ2>3Mm`}pTYnZE{R{`fuSa5a1sQ=9>JRV5T=}HvV%z#4iu0{nJhE1yv)pDjW7jsX9SVCwt# zf~nuP1N`Fv{|B($_j)l_x#xrMYv#Dj;uqzO7tHi(1T%b5fV%>Ge}LZ+;2i<}cz{0# zJRbFT7}B~L?eoV$`1t_8Xf7Dt5B0k~z>@+zGr-FPUyt~Gf+_ET0KYrH9}4it1N^@N z{LKKL4Dinbe8oJMIsBqNqXRrPz!L&IJHU4YxFf(D1dl~}?-0!NKNR4{0{poE|L*{Q z2YBNZ+037PgWs4Pk@Tea9e-}0^D^o=G!<=<3Gkr+e<#2{1orL!+RV>`@GIUNCGFCO4gtO{z!d?$Ilzko+#KNh1H3iB z9}4iE06!k!pW9F#*$@3w5PmYi{}JF9+>*}!wE=!rfU5)CAb2c9bqQvDdP{(}2KZkm zqK)AUm_IMZD)R$D_+JHhe}KOf;C~G8zX@jldR1+dRP-P9%T!f0ROjltyV?rfy}6}r z`E~i;3C)>Yu73SMu6q5P{;uXiTX$EkFJH*DbQcL&gMhpHn>xChI`f00F|;q=vATH3 znvU*OO&xv31DiX#`}%uJ$ZYOzv5?&Cf#!STWvt*foC6)E+=NX^|{YxBK@T&~a!oO8rNe@{m~*U{azCYNjKY6;$o zD_Puxz4?~@X3MOUNOMQNsduoT-h59HYD>PUqa!K4`t=J}-IZ@H06aLGzQLeO>ADiz;Tx(v3oW;feVeQo7zUREnd1eRa|j%sLZ#ntBTpW|T0{R2(eD zji^{$7bNPm-q{kz1=+%rc6N;R>aOE!O3;`LQ``` zQ(s>_szXz6UfHKQcC_hSPaG_i&hD1}4we%olBKkb7Ub8dT%X^`)l9m&H{Vo9r9554 zcAAEuv8$=;ija*@= z46fugs2$2W$yj^ax(W-sGy_vv=V_N7hPn6Hj2^FY@!3ywOoRh|rbm#dj^*qCtRM zv`ceGTUQ?X=Ft9ABJ!O*h4r~r>kD~yxMYthQLpJJJ?nDQs;d?kntF2;Gm4B-xr!+^ zY%NBC6!N+0utTo8n>EMDpb{wp73%7?jHJ-&wvN1O@>FQZcB$GpF!M7hd}m=t`QZ};|j2>EwNH;Loo>rQq$Jg)6ukE zsAy}PcSNa4rI<2tx*2CkB`Q!E<_Fe`tZ5B{=3Envr%Z;Zr@KdV=*6@wRh#>oIx%Mx zj`sX|6NWxF$KKXN4J>ZEM_Jt@P&n2LhnC^wiPLQy96FB`bxrO0WligQx}iYa%b7;Z z5Jovku>*ZzZ&ODuzqZMYOQyE2mi&NYb5(p22UBLnuw~7#H3`O#y56YEXzRj&E(s1I zuI}h=D&!{SCQdYgp5kdytDEEGL|~Z+P50>%U}g|fUB0g`-F_A|tuwybw!}JW|EZHI zEO$fOKOA8uvpjNPwL>k-^`+}Wk;=KQt)*aV2HLeX-?paJ%1q1Dsr2GS_hb&1>JKx)-zF|p%#!*ss>D+anX4)`_7o()!du!%y;P!x?GaP z;Fwd43XsB8o!yuoxd>X?lc!HLLtJ!eS5y>JXGNfnVya^}m3rl*i|&og78R3`*&;Iu zmPSlgL&TJ#Y0pTyi6L`76&aY*ofwcwtp?Q2kXS4baF^XTz=(?tXLA2)Xp7oN~sPah;8I80RLQ9qU)X6pi z44G?Ax*F2+o&um+esJ0JqBqIw%!q}9B_1XN7^5^U&YK7KI+G_&o?+ynCV5GzOkL8` zg7GP?Z<_I;BurF8-XPX7ATnI0E;ow zOE9{&h*Y9)n=(DxcZj<2q4I5(n=~~T4cJ*M7YkAk(zH4mZBW%LIzq0(+(a@F@kpiW zSv|y3uaYt5ba23QW6OlLzTTz@lgzwkZX4PSTjMrtU9I6@%&D+3$HIfckMJW(hGzSAGqb7#58yGwXEu9&Hpd0fK27GHI%{b_PwKs9_b8Qn1pmR%p`BrnWAz zURzgBzqQ#_{cRlu>~JZKQEIt|9&SZNH3uFFu?5Jsq%Yr_B19~*foHO2H5D*&u9v8B z>82t_J<6a|x%U`q5^*-9ck9sehb;e!6oRjKjbYmycjDI%oW z{MyvCiIp#vCA43h+qf7}MJ%=zi1HSp(H@VD1l+CcUUgS4H+hP%p#95ElIPLR2{Wjo zJT?QM0U)QyOgND@#p)P&i_O_>rtD*w-lbx!aJld?G+)s9g8FFwO3atMV9jVORd#w3 zwxq$iF%viTeElxIlj-By_{`iETfurxYrD?s@wRSgi>WqVlPg~NruTnIFS<xQ6ARcctyX;y7yN+tU>^j9pN6Tiv76!yUU`Ta6Wk`;?kHN%_{?6#+ zmfe1mm`rg|Ex#PLoVBs-6 z&AS-K?0q^LitBoijXF`0)1|=^u-h>HI40K&r&~jHxYC9N!`5XQwq_fz2nKLuu_9+n zMB_c{+7K(SV%zQRbgsyNeDQLF?S+fbq{voK++#|{ zV*-3JE-jO`A`Z`qXf7u*J#n}Qbxme)cqJm!^NdRnS@J}##I)oRM3*=$6s<2bo4JI9 zhTK?nb}yEk4Vssb+|WCxF1_LtsY^*|$X(K0i3!-HBr>&x3@NBMLo#!_6#0Ws_(XE? z$=#)hzrabiD~Do}!b?b@^tp(WkM^9JN?wX=HtAGkv5m~vE=6Rx71tMeHb~FrhO%5d z>|AmWH)zwQSXURM5pC<}nb$>RXiz$XPtJZBDMh!Kim5BRN-UIsB`G%>?SC0v278-a zgp^Wy%@+~1)?BV8pY{x>hL@r_8j%lPpec+q zd1(!6&;a4X*4LNUCCFgPg7lUuCR8HChLNcCMow$4y3FswmW%jrM62taGA|-BhjvRZh@CzTjU^YOFNeM>K<#i5$~M(#Uk{U z*(*dC)xIUSPQ!B+IS$iZ;aehqIZNu6+}){oRQh2hTK31#qXWNB|7ehks6m_FPy`+u_KO1Qz${Ad7bfPcvIt z#~$L`!S&%qJP#mB54-^{t|7GN?C=Y3@s_79E!%TLt~tPhU4~vOR)f0nXf!NqZHq-n z)*Tp0W==*5W9hbz@q}V@L&$h!d(lWmcfpdtIBP{TiZ->95^=2u!(9B9+Wt+1A-I?V zAg3lZ34gIEcxZ{Do1CF3&>^9!4%&uG5-L9T*5G1#mzW7B(Nc@SgqrSQK$h_aNIm=_ zC_7EWe(%enpth1B<$>ea)RoGSeAA6Rr%Me&IXgdS&($Qu8s5{p^PZ5_Nam$rffrDq zohNyHqRo<|a=ER!5QoX6H-MOy+W<^Q47UUwqnvmd#n~f??vE?lb9hguucxR8b|)Y{ zt|J7If`bwtF|}J4k@ZYABFNyH;6S_|{lLL7({Jju=MsmwoFC6Xjn2FiyCSFn=?PVYxUkaiYpFR`@{(Zfx(h#03*WHV1fQ);3ANvQy=i;pOp zs|#_0iFLr~0)j+Ka`-xqxPvw*qoiad5#dzVgIGZ)kWf;h6IZZEM9R4$ruZ(B0@7mz zDajFfE}3h#7wv0(hg__?_Q|BDN$r><>4b*ZkDz{9M7m9b_-+#hs%nB}a{p>(y^DRO(xHfr%!e4bhAv>y>dZ1Aj44f@MKOiSG8rD)^kZD}OOL^6v>s!nGyaY8bQ) z5Q>h>7UUqENH7Fj0>#%4?a7We-ejOlnrV`igyO4UFscNKW@6;G2pr zdvZnmui8m0(&d6`)gsjugB~1@KtjA0OD%^JYTD-_AqQ?Pq!*u7C0nh;6(Mm5i{vE!qzzfv2%U{N;^gX!d#C6=&CHHeThsd1%TGui`>jUWkk z(I7P(o18)O1m8gX;3P+1?KxKRL`MRdx5O}={GdjWs*%zIBras_xs>BNV6v8O&xy}r zd+D2K4DvfnK=EzfL~rr5ZO;w%;f?QQa>oFn(f!)^-7?O-f_&mx-=2P#-4=xS*&!qG zHd>-Y2+YyA9bQz)t^)srI z+*OT>H+4(4T`m^kJ$0ov!m>R{4DYifH>n$A?RwcZPDnP;+H=C7IBw6$eicFDKoSFQR<{8bCm;vW;PYOB?K$1`Y|rT( znfBa3VkW(A1-kmywX?4aw`9a%i)CDNfq#Y z<*#X#_%)@XlEkT%Q=z+D0BD~M~E^xWh(AZBW!A<1b$H^{E8w>g-Xr6g}y@n>ecxC1TGKc*I+{<-O zLTXE2cdixp45Pk$5K9wSYE~?$s+(U8-acH}$N1BV9vOSy_+SKf(?OoQU`cNFJg39F znnfTr)K!}{b88pQs;bQ`oHJ+f?1o%J)vVgtxlH}~C0%WF-^$JD?e4@9zO$(SqMHO` zGRJH3AaK5r!!7;{u8vxaMfs+d^$5d9HFAsBqXar<^ZWu7UXc78)$&KEDT!oqE6S_Ko~6BN+}!f5tXzrG>*goXpqg7aGx zJNaxr&re`1%Qv-S`rOCpQK>RV`q2g8*#nu*d}n9(+WgF!b8F|%s?JTCFcD1g0l8$-50erw^pN( z;4=^)R?1=HmLyN)()H6PJ_X#)j(}R^?^rC# z<2bVqWz0`Tu>VMrySr-JI&st&n;T#Ah>c6OIr!dB9;M$OeNbmjCqFI315tFXz7wkI zbKMbWaW4?J>4sJu&$cYar+V_-uwW=N<+=!GHrLJ&IG=a@^+-#q0W!FdN3uAR1!r9K zbMeOeBoHF|RP{OQ#5y3w#T{+%e|LSMGgnfTS!tr0!!{OG9MdS83nTLj(ABxTTMB(V!*KsP@^Q;Pi^^!x%QWLT zIv3ZmQfc%OQH_sA#d`M1C}1SH6vx5%autwcW}(-#t!<0)Wa(AsmULN9j*s*3gH@bn z_@0TwVKgC#)W}TeTi?mcIurT|z47l>d&9S~@)Oo{^-tj4mzLMIwPYgH%4#^FWqlW7 z#=nujD1@JWqJ|1`2+cHrMdq)CIoo&rXyc?g*VIr{{w1x~m!_&z--TsqkL%zKX9KV659M5Qc zdydaIi4}jzFO!)7+B4_RcayIYJbY&2J&T7wIJb-~3M7 zOgxNBzVW{qKX(oXa6jbb4?k~s-lhBC)tL;RXF#)b8K2J*Jil;!8}MN`J~KhnbOAFh zc#vEaXFquOY`(_JBR|#PCz#1M3s23ft5f7-^R!9=JMIXNbbkveFWI}Hk{37_!K^6 zTyb8BK7nT>9%|0-1V8$>@wZC>qaVuS^Eo^(!b3iOZ+LeJzW #endif /* _OPENMP */ @@ -673,16 +673,16 @@ static const char *__pyx_f[] = { }; /*--- Type declarations ---*/ -struct __pyx_obj_6CAStar___pyx_scope_struct__AStar2; +struct __pyx_obj_6CAStar_6CAStar___pyx_scope_struct__AStar2; -/* "CAStar.pyx":121 +/* "CAStar/CAStar.pyx":121 * return None * * def AStar2(graph, int start, int target): # Set all g to node_count + 1 # <<<<<<<<<<<<<< * StartTime = time.time() * */ -struct __pyx_obj_6CAStar___pyx_scope_struct__AStar2 { +struct __pyx_obj_6CAStar_6CAStar___pyx_scope_struct__AStar2 { PyObject_HEAD PyObject *__pyx_v_f; }; @@ -1101,24 +1101,23 @@ static int __Pyx_check_binary_version(void); static int __Pyx_InitStrings(__Pyx_StringTabEntry *t); -/* Module declarations from 'CAStar' */ -static PyTypeObject *__pyx_ptype_6CAStar___pyx_scope_struct__AStar2 = 0; -static float __pyx_f_6CAStar_EstimateDistance(int, int, int, int, int, float, float, float); /*proto*/ -static float __pyx_f_6CAStar_GetxCoord(int, int, int, int, float, float, float); /*proto*/ -static float __pyx_f_6CAStar_GetyCoord(int, int, int, int, float, float, float); /*proto*/ -static float __pyx_f_6CAStar_GetzCoord(int, int, int, int, float, float, float); /*proto*/ -static PyObject *__pyx_f_6CAStar_FindPath(PyObject *, int); /*proto*/ -#define __Pyx_MODULE_NAME "CAStar" -int __pyx_module_is_main_CAStar = 0; +/* Module declarations from 'CAStar.CAStar' */ +static PyTypeObject *__pyx_ptype_6CAStar_6CAStar___pyx_scope_struct__AStar2 = 0; +static float __pyx_f_6CAStar_6CAStar_EstimateDistance(int, int, int, int, int, float, float, float); /*proto*/ +static float __pyx_f_6CAStar_6CAStar_GetxCoord(int, int, int, int, float, float, float); /*proto*/ +static float __pyx_f_6CAStar_6CAStar_GetyCoord(int, int, int, int, float, float, float); /*proto*/ +static float __pyx_f_6CAStar_6CAStar_GetzCoord(int, int, int, int, float, float, float); /*proto*/ +static PyObject *__pyx_f_6CAStar_6CAStar_FindPath(PyObject *, int); /*proto*/ +#define __Pyx_MODULE_NAME "CAStar.CAStar" +int __pyx_module_is_main_CAStar__CAStar = 0; -/* Implementation of 'CAStar' */ +/* Implementation of 'CAStar.CAStar' */ static PyObject *__pyx_builtin_min; -static const char __pyx_k_[] = "*"; static const char __pyx_k_f[] = "f"; static const char __pyx_k_g[] = "g"; -static const char __pyx_k__2[] = "_"; +static const char __pyx_k__2[] = "*"; +static const char __pyx_k__3[] = "_"; static const char __pyx_k_fp[] = "fp"; -static const char __pyx_k_os[] = "os"; static const char __pyx_k_end[] = "end"; static const char __pyx_k_inf[] = "inf"; static const char __pyx_k_key[] = "key"; @@ -1135,7 +1134,6 @@ static const char __pyx_k_Found[] = "Found"; static const char __pyx_k_fTemp[] = "fTemp"; static const char __pyx_k_gNode[] = "gNode"; static const char __pyx_k_graph[] = "graph"; -static const char __pyx_k_heapq[] = "heapq"; static const char __pyx_k_print[] = "print"; static const char __pyx_k_start[] = "start"; static const char __pyx_k_xSize[] = "xSize"; @@ -1143,11 +1141,9 @@ static const char __pyx_k_ySize[] = "ySize"; static const char __pyx_k_zSize[] = "zSize"; static const char __pyx_k_AStar2[] = "AStar2"; static const char __pyx_k_A_Time[] = "[A* Time] "; -static const char __pyx_k_CAStar[] = "CAStar"; static const char __pyx_k_NodeID[] = "NodeID"; static const char __pyx_k_Target[] = "Target:"; static const char __pyx_k_import[] = "__import__"; -static const char __pyx_k_pickle[] = "pickle"; static const char __pyx_k_remove[] = "remove"; static const char __pyx_k_tScore[] = "tScore"; static const char __pyx_k_target[] = "target"; @@ -1156,7 +1152,6 @@ static const char __pyx_k_yCount[] = "yCount"; static const char __pyx_k_zCount[] = "zCount"; static const char __pyx_k_AStarPQ[] = "AStarPQ"; static const char __pyx_k_EndTime[] = "EndTime"; -static const char __pyx_k_Friends[] = "Friends"; static const char __pyx_k_GetNode[] = "GetNode"; static const char __pyx_k_OpenSet[] = "OpenSet"; static const char __pyx_k_current[] = "current"; @@ -1170,6 +1165,7 @@ static const char __pyx_k_FriendList[] = "FriendList"; static const char __pyx_k_TargetNode[] = "TargetNode"; static const char __pyx_k_Get_Friends[] = "Get_Friends"; static const char __pyx_k_Milliseconds[] = " Milliseconds."; +static const char __pyx_k_CAStar_CAStar[] = "CAStar.CAStar"; static const char __pyx_k_PriorityQueue[] = "PriorityQueue"; static const char __pyx_k_Total_Expanded[] = " Total Expanded:"; static const char __pyx_k_AATC_Coordinate[] = "AATC_Coordinate"; @@ -1181,7 +1177,6 @@ static const char __pyx_k_PriorityQueue_PriorityQueue[] = "PriorityQueue.Priorit static const char __pyx_k_PriorityQueue_PriorityQueueC[] = "PriorityQueue.PriorityQueueC"; static const char __pyx_k_You_do_not_have_math_inf_object[] = "You do not have math.inf object, Python 3.5 onwards. Will use replacement."; static const char __pyx_k_PriotityQueueC_not_available_def[] = "PriotityQueueC not available, defaulting to pure python"; -static PyObject *__pyx_n_s_; static PyObject *__pyx_n_s_AATC_Coordinate; static PyObject *__pyx_n_s_AStar2; static PyObject *__pyx_n_s_AStar2_locals_lambda; @@ -1189,13 +1184,12 @@ static PyObject *__pyx_n_s_AStarPQ; static PyObject *__pyx_kp_s_AStarPQ_not_available; static PyObject *__pyx_kp_s_A_Search_FAILED_Start; static PyObject *__pyx_kp_s_A_Time; -static PyObject *__pyx_n_s_CAStar; +static PyObject *__pyx_n_s_CAStar_CAStar; static PyObject *__pyx_kp_s_CAStar_pyx; static PyObject *__pyx_n_s_ClosedSet; static PyObject *__pyx_n_s_EndTime; static PyObject *__pyx_n_s_Found; static PyObject *__pyx_n_s_FriendList; -static PyObject *__pyx_n_s_Friends; static PyObject *__pyx_n_s_GetNode; static PyObject *__pyx_n_s_Get_Cost; static PyObject *__pyx_n_s_Get_Friends; @@ -1213,6 +1207,7 @@ static PyObject *__pyx_n_s_TargetNode; static PyObject *__pyx_kp_s_Total_Expanded; static PyObject *__pyx_kp_s_You_do_not_have_math_inf_object; static PyObject *__pyx_n_s__2; +static PyObject *__pyx_n_s__3; static PyObject *__pyx_n_s_cameFrom; static PyObject *__pyx_n_s_cline_in_traceback; static PyObject *__pyx_n_s_current; @@ -1225,15 +1220,12 @@ static PyObject *__pyx_n_s_g; static PyObject *__pyx_n_s_gNode; static PyObject *__pyx_n_s_graph; static PyObject *__pyx_n_s_hashlib; -static PyObject *__pyx_n_s_heapq; static PyObject *__pyx_n_s_import; static PyObject *__pyx_n_s_inf; static PyObject *__pyx_n_s_key; static PyObject *__pyx_n_s_main; static PyObject *__pyx_n_s_math; static PyObject *__pyx_n_s_min; -static PyObject *__pyx_n_s_os; -static PyObject *__pyx_n_s_pickle; static PyObject *__pyx_n_s_pop; static PyObject *__pyx_n_s_print; static PyObject *__pyx_n_s_put; @@ -1249,21 +1241,23 @@ static PyObject *__pyx_n_s_yCount; static PyObject *__pyx_n_s_ySize; static PyObject *__pyx_n_s_zCount; static PyObject *__pyx_n_s_zSize; -static PyObject *__pyx_pf_6CAStar_AStarPQ(CYTHON_UNUSED PyObject *__pyx_self, PyObject *__pyx_v_graph, int __pyx_v_start, int __pyx_v_target); /* proto */ +static PyObject *__pyx_pf_6CAStar_6CAStar_AStarPQ(CYTHON_UNUSED PyObject *__pyx_self, PyObject *__pyx_v_graph, int __pyx_v_start, int __pyx_v_target); /* proto */ static PyObject *__pyx_lambda_funcdef_lambda(PyObject *__pyx_self, PyObject *__pyx_v_n); /* proto */ -static PyObject *__pyx_pf_6CAStar_2AStar2(CYTHON_UNUSED PyObject *__pyx_self, PyObject *__pyx_v_graph, int __pyx_v_start, int __pyx_v_target); /* proto */ -static PyObject *__pyx_tp_new_6CAStar___pyx_scope_struct__AStar2(PyTypeObject *t, PyObject *a, PyObject *k); /*proto*/ +static PyObject *__pyx_pf_6CAStar_6CAStar_2AStar2(CYTHON_UNUSED PyObject *__pyx_self, PyObject *__pyx_v_graph, int __pyx_v_start, int __pyx_v_target); /* proto */ +static PyObject *__pyx_tp_new_6CAStar_6CAStar___pyx_scope_struct__AStar2(PyTypeObject *t, PyObject *a, PyObject *k); /*proto*/ static __Pyx_CachedCFunction __pyx_umethod_PyList_Type_pop = {0, &__pyx_n_s_pop, 0, 0, 0}; static PyObject *__pyx_int_0; static PyObject *__pyx_int_1; static PyObject *__pyx_int_1000; static PyObject *__pyx_int_100000000000000000000; -static PyObject *__pyx_tuple__3; -static PyObject *__pyx_tuple__5; -static PyObject *__pyx_codeobj__4; -static PyObject *__pyx_codeobj__6; - -/* "CAStar.pyx":22 +static PyObject *__pyx_int_neg_1; +static PyObject *__pyx_slice_; +static PyObject *__pyx_tuple__4; +static PyObject *__pyx_tuple__6; +static PyObject *__pyx_codeobj__5; +static PyObject *__pyx_codeobj__7; + +/* "CAStar/CAStar.pyx":22 * math.inf = 10**20 * * cdef float EstimateDistance(int NodeID, int TargetID, int xCount,int yCount,int zCount, float xSize, float ySize, float zSize): # <<<<<<<<<<<<<< @@ -1271,7 +1265,7 @@ static PyObject *__pyx_codeobj__6; * cdef float Distance */ -static float __pyx_f_6CAStar_EstimateDistance(int __pyx_v_NodeID, int __pyx_v_TargetID, int __pyx_v_xCount, int __pyx_v_yCount, int __pyx_v_zCount, float __pyx_v_xSize, float __pyx_v_ySize, float __pyx_v_zSize) { +static float __pyx_f_6CAStar_6CAStar_EstimateDistance(int __pyx_v_NodeID, int __pyx_v_TargetID, int __pyx_v_xCount, int __pyx_v_yCount, int __pyx_v_zCount, float __pyx_v_xSize, float __pyx_v_ySize, float __pyx_v_zSize) { float __pyx_v_x; float __pyx_v_y; float __pyx_v_z; @@ -1290,35 +1284,35 @@ static float __pyx_f_6CAStar_EstimateDistance(int __pyx_v_NodeID, int __pyx_v_Ta int __pyx_t_4; __Pyx_RefNannySetupContext("EstimateDistance", 0); - /* "CAStar.pyx":25 + /* "CAStar/CAStar.pyx":25 * cdef float x,y,z,Nx,Ny,Nz,Tx,Ty,Tz * cdef float Distance * Nx,Ny,Nz = GetxCoord(NodeID,xCount,yCount,zCount,xSize,ySize,zSize),GetyCoord(NodeID,xCount,yCount,zCount,xSize,ySize,zSize),GetzCoord(NodeID,xCount,yCount,zCount,xSize,ySize,zSize) # <<<<<<<<<<<<<< * Tx,Ty,Tz = GetxCoord(TargetID,xCount,yCount,zCount,xSize,ySize,zSize),GetyCoord(TargetID,xCount,yCount,zCount,xSize,ySize,zSize),GetzCoord(TargetID,xCount,yCount,zCount,xSize,ySize,zSize) * x=(Nx-Tx)/xSize */ - __pyx_t_1 = __pyx_f_6CAStar_GetxCoord(__pyx_v_NodeID, __pyx_v_xCount, __pyx_v_yCount, __pyx_v_zCount, __pyx_v_xSize, __pyx_v_ySize, __pyx_v_zSize); - __pyx_t_2 = __pyx_f_6CAStar_GetyCoord(__pyx_v_NodeID, __pyx_v_xCount, __pyx_v_yCount, __pyx_v_zCount, __pyx_v_xSize, __pyx_v_ySize, __pyx_v_zSize); - __pyx_t_3 = __pyx_f_6CAStar_GetzCoord(__pyx_v_NodeID, __pyx_v_xCount, __pyx_v_yCount, __pyx_v_zCount, __pyx_v_xSize, __pyx_v_ySize, __pyx_v_zSize); + __pyx_t_1 = __pyx_f_6CAStar_6CAStar_GetxCoord(__pyx_v_NodeID, __pyx_v_xCount, __pyx_v_yCount, __pyx_v_zCount, __pyx_v_xSize, __pyx_v_ySize, __pyx_v_zSize); + __pyx_t_2 = __pyx_f_6CAStar_6CAStar_GetyCoord(__pyx_v_NodeID, __pyx_v_xCount, __pyx_v_yCount, __pyx_v_zCount, __pyx_v_xSize, __pyx_v_ySize, __pyx_v_zSize); + __pyx_t_3 = __pyx_f_6CAStar_6CAStar_GetzCoord(__pyx_v_NodeID, __pyx_v_xCount, __pyx_v_yCount, __pyx_v_zCount, __pyx_v_xSize, __pyx_v_ySize, __pyx_v_zSize); __pyx_v_Nx = __pyx_t_1; __pyx_v_Ny = __pyx_t_2; __pyx_v_Nz = __pyx_t_3; - /* "CAStar.pyx":26 + /* "CAStar/CAStar.pyx":26 * cdef float Distance * Nx,Ny,Nz = GetxCoord(NodeID,xCount,yCount,zCount,xSize,ySize,zSize),GetyCoord(NodeID,xCount,yCount,zCount,xSize,ySize,zSize),GetzCoord(NodeID,xCount,yCount,zCount,xSize,ySize,zSize) * Tx,Ty,Tz = GetxCoord(TargetID,xCount,yCount,zCount,xSize,ySize,zSize),GetyCoord(TargetID,xCount,yCount,zCount,xSize,ySize,zSize),GetzCoord(TargetID,xCount,yCount,zCount,xSize,ySize,zSize) # <<<<<<<<<<<<<< * x=(Nx-Tx)/xSize * y=(Ny-Ty)/ySize */ - __pyx_t_3 = __pyx_f_6CAStar_GetxCoord(__pyx_v_TargetID, __pyx_v_xCount, __pyx_v_yCount, __pyx_v_zCount, __pyx_v_xSize, __pyx_v_ySize, __pyx_v_zSize); - __pyx_t_2 = __pyx_f_6CAStar_GetyCoord(__pyx_v_TargetID, __pyx_v_xCount, __pyx_v_yCount, __pyx_v_zCount, __pyx_v_xSize, __pyx_v_ySize, __pyx_v_zSize); - __pyx_t_1 = __pyx_f_6CAStar_GetzCoord(__pyx_v_TargetID, __pyx_v_xCount, __pyx_v_yCount, __pyx_v_zCount, __pyx_v_xSize, __pyx_v_ySize, __pyx_v_zSize); + __pyx_t_3 = __pyx_f_6CAStar_6CAStar_GetxCoord(__pyx_v_TargetID, __pyx_v_xCount, __pyx_v_yCount, __pyx_v_zCount, __pyx_v_xSize, __pyx_v_ySize, __pyx_v_zSize); + __pyx_t_2 = __pyx_f_6CAStar_6CAStar_GetyCoord(__pyx_v_TargetID, __pyx_v_xCount, __pyx_v_yCount, __pyx_v_zCount, __pyx_v_xSize, __pyx_v_ySize, __pyx_v_zSize); + __pyx_t_1 = __pyx_f_6CAStar_6CAStar_GetzCoord(__pyx_v_TargetID, __pyx_v_xCount, __pyx_v_yCount, __pyx_v_zCount, __pyx_v_xSize, __pyx_v_ySize, __pyx_v_zSize); __pyx_v_Tx = __pyx_t_3; __pyx_v_Ty = __pyx_t_2; __pyx_v_Tz = __pyx_t_1; - /* "CAStar.pyx":27 + /* "CAStar/CAStar.pyx":27 * Nx,Ny,Nz = GetxCoord(NodeID,xCount,yCount,zCount,xSize,ySize,zSize),GetyCoord(NodeID,xCount,yCount,zCount,xSize,ySize,zSize),GetzCoord(NodeID,xCount,yCount,zCount,xSize,ySize,zSize) * Tx,Ty,Tz = GetxCoord(TargetID,xCount,yCount,zCount,xSize,ySize,zSize),GetyCoord(TargetID,xCount,yCount,zCount,xSize,ySize,zSize),GetzCoord(TargetID,xCount,yCount,zCount,xSize,ySize,zSize) * x=(Nx-Tx)/xSize # <<<<<<<<<<<<<< @@ -1327,7 +1321,7 @@ static float __pyx_f_6CAStar_EstimateDistance(int __pyx_v_NodeID, int __pyx_v_Ta */ __pyx_v_x = ((__pyx_v_Nx - __pyx_v_Tx) / __pyx_v_xSize); - /* "CAStar.pyx":28 + /* "CAStar/CAStar.pyx":28 * Tx,Ty,Tz = GetxCoord(TargetID,xCount,yCount,zCount,xSize,ySize,zSize),GetyCoord(TargetID,xCount,yCount,zCount,xSize,ySize,zSize),GetzCoord(TargetID,xCount,yCount,zCount,xSize,ySize,zSize) * x=(Nx-Tx)/xSize * y=(Ny-Ty)/ySize # <<<<<<<<<<<<<< @@ -1336,7 +1330,7 @@ static float __pyx_f_6CAStar_EstimateDistance(int __pyx_v_NodeID, int __pyx_v_Ta */ __pyx_v_y = ((__pyx_v_Ny - __pyx_v_Ty) / __pyx_v_ySize); - /* "CAStar.pyx":29 + /* "CAStar/CAStar.pyx":29 * x=(Nx-Tx)/xSize * y=(Ny-Ty)/ySize * z=(Nz-Tz)/zSize # <<<<<<<<<<<<<< @@ -1345,7 +1339,7 @@ static float __pyx_f_6CAStar_EstimateDistance(int __pyx_v_NodeID, int __pyx_v_Ta */ __pyx_v_z = ((__pyx_v_Nz - __pyx_v_Tz) / __pyx_v_zSize); - /* "CAStar.pyx":30 + /* "CAStar/CAStar.pyx":30 * y=(Ny-Ty)/ySize * z=(Nz-Tz)/zSize * if x < 0: # <<<<<<<<<<<<<< @@ -1355,7 +1349,7 @@ static float __pyx_f_6CAStar_EstimateDistance(int __pyx_v_NodeID, int __pyx_v_Ta __pyx_t_4 = ((__pyx_v_x < 0.0) != 0); if (__pyx_t_4) { - /* "CAStar.pyx":31 + /* "CAStar/CAStar.pyx":31 * z=(Nz-Tz)/zSize * if x < 0: * x = x*-1 # <<<<<<<<<<<<<< @@ -1364,7 +1358,7 @@ static float __pyx_f_6CAStar_EstimateDistance(int __pyx_v_NodeID, int __pyx_v_Ta */ __pyx_v_x = (__pyx_v_x * -1.0); - /* "CAStar.pyx":30 + /* "CAStar/CAStar.pyx":30 * y=(Ny-Ty)/ySize * z=(Nz-Tz)/zSize * if x < 0: # <<<<<<<<<<<<<< @@ -1373,7 +1367,7 @@ static float __pyx_f_6CAStar_EstimateDistance(int __pyx_v_NodeID, int __pyx_v_Ta */ } - /* "CAStar.pyx":32 + /* "CAStar/CAStar.pyx":32 * if x < 0: * x = x*-1 * if y < 0: # <<<<<<<<<<<<<< @@ -1383,7 +1377,7 @@ static float __pyx_f_6CAStar_EstimateDistance(int __pyx_v_NodeID, int __pyx_v_Ta __pyx_t_4 = ((__pyx_v_y < 0.0) != 0); if (__pyx_t_4) { - /* "CAStar.pyx":33 + /* "CAStar/CAStar.pyx":33 * x = x*-1 * if y < 0: * y = y*-1 # <<<<<<<<<<<<<< @@ -1392,7 +1386,7 @@ static float __pyx_f_6CAStar_EstimateDistance(int __pyx_v_NodeID, int __pyx_v_Ta */ __pyx_v_y = (__pyx_v_y * -1.0); - /* "CAStar.pyx":32 + /* "CAStar/CAStar.pyx":32 * if x < 0: * x = x*-1 * if y < 0: # <<<<<<<<<<<<<< @@ -1401,7 +1395,7 @@ static float __pyx_f_6CAStar_EstimateDistance(int __pyx_v_NodeID, int __pyx_v_Ta */ } - /* "CAStar.pyx":34 + /* "CAStar/CAStar.pyx":34 * if y < 0: * y = y*-1 * if z < 0: # <<<<<<<<<<<<<< @@ -1411,7 +1405,7 @@ static float __pyx_f_6CAStar_EstimateDistance(int __pyx_v_NodeID, int __pyx_v_Ta __pyx_t_4 = ((__pyx_v_z < 0.0) != 0); if (__pyx_t_4) { - /* "CAStar.pyx":35 + /* "CAStar/CAStar.pyx":35 * y = y*-1 * if z < 0: * z = z*-1 # <<<<<<<<<<<<<< @@ -1420,7 +1414,7 @@ static float __pyx_f_6CAStar_EstimateDistance(int __pyx_v_NodeID, int __pyx_v_Ta */ __pyx_v_z = (__pyx_v_z * -1.0); - /* "CAStar.pyx":34 + /* "CAStar/CAStar.pyx":34 * if y < 0: * y = y*-1 * if z < 0: # <<<<<<<<<<<<<< @@ -1429,7 +1423,7 @@ static float __pyx_f_6CAStar_EstimateDistance(int __pyx_v_NodeID, int __pyx_v_Ta */ } - /* "CAStar.pyx":36 + /* "CAStar/CAStar.pyx":36 * if z < 0: * z = z*-1 * Distance = x+y+z # <<<<<<<<<<<<<< @@ -1438,7 +1432,7 @@ static float __pyx_f_6CAStar_EstimateDistance(int __pyx_v_NodeID, int __pyx_v_Ta */ __pyx_v_Distance = ((__pyx_v_x + __pyx_v_y) + __pyx_v_z); - /* "CAStar.pyx":37 + /* "CAStar/CAStar.pyx":37 * z = z*-1 * Distance = x+y+z * return Distance # <<<<<<<<<<<<<< @@ -1448,7 +1442,7 @@ static float __pyx_f_6CAStar_EstimateDistance(int __pyx_v_NodeID, int __pyx_v_Ta __pyx_r = __pyx_v_Distance; goto __pyx_L0; - /* "CAStar.pyx":22 + /* "CAStar/CAStar.pyx":22 * math.inf = 10**20 * * cdef float EstimateDistance(int NodeID, int TargetID, int xCount,int yCount,int zCount, float xSize, float ySize, float zSize): # <<<<<<<<<<<<<< @@ -1462,7 +1456,7 @@ static float __pyx_f_6CAStar_EstimateDistance(int __pyx_v_NodeID, int __pyx_v_Ta return __pyx_r; } -/* "CAStar.pyx":39 +/* "CAStar/CAStar.pyx":39 * return Distance * * cdef float GetxCoord(int ID, int xCount, int yCount, int zCount, float xSize, float ySize,float zSize): # <<<<<<<<<<<<<< @@ -1470,13 +1464,13 @@ static float __pyx_f_6CAStar_EstimateDistance(int __pyx_v_NodeID, int __pyx_v_Ta * xCoord = ((ID-1)//(zCount*yCount)) * xSize */ -static float __pyx_f_6CAStar_GetxCoord(int __pyx_v_ID, CYTHON_UNUSED int __pyx_v_xCount, int __pyx_v_yCount, int __pyx_v_zCount, float __pyx_v_xSize, CYTHON_UNUSED float __pyx_v_ySize, CYTHON_UNUSED float __pyx_v_zSize) { +static float __pyx_f_6CAStar_6CAStar_GetxCoord(int __pyx_v_ID, CYTHON_UNUSED int __pyx_v_xCount, int __pyx_v_yCount, int __pyx_v_zCount, float __pyx_v_xSize, CYTHON_UNUSED float __pyx_v_ySize, CYTHON_UNUSED float __pyx_v_zSize) { float __pyx_v_xCoord; float __pyx_r; __Pyx_RefNannyDeclarations __Pyx_RefNannySetupContext("GetxCoord", 0); - /* "CAStar.pyx":41 + /* "CAStar/CAStar.pyx":41 * cdef float GetxCoord(int ID, int xCount, int yCount, int zCount, float xSize, float ySize,float zSize): * cdef float xCoord * xCoord = ((ID-1)//(zCount*yCount)) * xSize # <<<<<<<<<<<<<< @@ -1485,7 +1479,7 @@ static float __pyx_f_6CAStar_GetxCoord(int __pyx_v_ID, CYTHON_UNUSED int __pyx_v */ __pyx_v_xCoord = (((__pyx_v_ID - 1) / (__pyx_v_zCount * __pyx_v_yCount)) * __pyx_v_xSize); - /* "CAStar.pyx":42 + /* "CAStar/CAStar.pyx":42 * cdef float xCoord * xCoord = ((ID-1)//(zCount*yCount)) * xSize * return xCoord # <<<<<<<<<<<<<< @@ -1495,7 +1489,7 @@ static float __pyx_f_6CAStar_GetxCoord(int __pyx_v_ID, CYTHON_UNUSED int __pyx_v __pyx_r = __pyx_v_xCoord; goto __pyx_L0; - /* "CAStar.pyx":39 + /* "CAStar/CAStar.pyx":39 * return Distance * * cdef float GetxCoord(int ID, int xCount, int yCount, int zCount, float xSize, float ySize,float zSize): # <<<<<<<<<<<<<< @@ -1509,7 +1503,7 @@ static float __pyx_f_6CAStar_GetxCoord(int __pyx_v_ID, CYTHON_UNUSED int __pyx_v return __pyx_r; } -/* "CAStar.pyx":44 +/* "CAStar/CAStar.pyx":44 * return xCoord * * cdef float GetyCoord(int ID, int xCount, int yCount, int zCount, float xSize, float ySize,float zSize): # <<<<<<<<<<<<<< @@ -1517,13 +1511,13 @@ static float __pyx_f_6CAStar_GetxCoord(int __pyx_v_ID, CYTHON_UNUSED int __pyx_v * yCoord = (((ID-1)%(zCount*yCount))//zCount)*ySize */ -static float __pyx_f_6CAStar_GetyCoord(int __pyx_v_ID, CYTHON_UNUSED int __pyx_v_xCount, int __pyx_v_yCount, int __pyx_v_zCount, CYTHON_UNUSED float __pyx_v_xSize, float __pyx_v_ySize, CYTHON_UNUSED float __pyx_v_zSize) { +static float __pyx_f_6CAStar_6CAStar_GetyCoord(int __pyx_v_ID, CYTHON_UNUSED int __pyx_v_xCount, int __pyx_v_yCount, int __pyx_v_zCount, CYTHON_UNUSED float __pyx_v_xSize, float __pyx_v_ySize, CYTHON_UNUSED float __pyx_v_zSize) { float __pyx_v_yCoord; float __pyx_r; __Pyx_RefNannyDeclarations __Pyx_RefNannySetupContext("GetyCoord", 0); - /* "CAStar.pyx":46 + /* "CAStar/CAStar.pyx":46 * cdef float GetyCoord(int ID, int xCount, int yCount, int zCount, float xSize, float ySize,float zSize): * cdef float yCoord * yCoord = (((ID-1)%(zCount*yCount))//zCount)*ySize # <<<<<<<<<<<<<< @@ -1532,7 +1526,7 @@ static float __pyx_f_6CAStar_GetyCoord(int __pyx_v_ID, CYTHON_UNUSED int __pyx_v */ __pyx_v_yCoord = ((((__pyx_v_ID - 1) % (__pyx_v_zCount * __pyx_v_yCount)) / __pyx_v_zCount) * __pyx_v_ySize); - /* "CAStar.pyx":47 + /* "CAStar/CAStar.pyx":47 * cdef float yCoord * yCoord = (((ID-1)%(zCount*yCount))//zCount)*ySize * return yCoord # <<<<<<<<<<<<<< @@ -1542,7 +1536,7 @@ static float __pyx_f_6CAStar_GetyCoord(int __pyx_v_ID, CYTHON_UNUSED int __pyx_v __pyx_r = __pyx_v_yCoord; goto __pyx_L0; - /* "CAStar.pyx":44 + /* "CAStar/CAStar.pyx":44 * return xCoord * * cdef float GetyCoord(int ID, int xCount, int yCount, int zCount, float xSize, float ySize,float zSize): # <<<<<<<<<<<<<< @@ -1556,7 +1550,7 @@ static float __pyx_f_6CAStar_GetyCoord(int __pyx_v_ID, CYTHON_UNUSED int __pyx_v return __pyx_r; } -/* "CAStar.pyx":49 +/* "CAStar/CAStar.pyx":49 * return yCoord * * cdef float GetzCoord(int ID, int xCount, int yCount, int zCount, float xSize, float ySize,float zSize): # <<<<<<<<<<<<<< @@ -1564,13 +1558,13 @@ static float __pyx_f_6CAStar_GetyCoord(int __pyx_v_ID, CYTHON_UNUSED int __pyx_v * zCoord = ((ID-1)%zCount)*zSize */ -static float __pyx_f_6CAStar_GetzCoord(int __pyx_v_ID, CYTHON_UNUSED int __pyx_v_xCount, CYTHON_UNUSED int __pyx_v_yCount, int __pyx_v_zCount, CYTHON_UNUSED float __pyx_v_xSize, CYTHON_UNUSED float __pyx_v_ySize, float __pyx_v_zSize) { +static float __pyx_f_6CAStar_6CAStar_GetzCoord(int __pyx_v_ID, CYTHON_UNUSED int __pyx_v_xCount, CYTHON_UNUSED int __pyx_v_yCount, int __pyx_v_zCount, CYTHON_UNUSED float __pyx_v_xSize, CYTHON_UNUSED float __pyx_v_ySize, float __pyx_v_zSize) { float __pyx_v_zCoord; float __pyx_r; __Pyx_RefNannyDeclarations __Pyx_RefNannySetupContext("GetzCoord", 0); - /* "CAStar.pyx":51 + /* "CAStar/CAStar.pyx":51 * cdef float GetzCoord(int ID, int xCount, int yCount, int zCount, float xSize, float ySize,float zSize): * cdef float zCoord * zCoord = ((ID-1)%zCount)*zSize # <<<<<<<<<<<<<< @@ -1579,7 +1573,7 @@ static float __pyx_f_6CAStar_GetzCoord(int __pyx_v_ID, CYTHON_UNUSED int __pyx_v */ __pyx_v_zCoord = (((__pyx_v_ID - 1) % __pyx_v_zCount) * __pyx_v_zSize); - /* "CAStar.pyx":52 + /* "CAStar/CAStar.pyx":52 * cdef float zCoord * zCoord = ((ID-1)%zCount)*zSize * return zCoord # <<<<<<<<<<<<<< @@ -1589,7 +1583,7 @@ static float __pyx_f_6CAStar_GetzCoord(int __pyx_v_ID, CYTHON_UNUSED int __pyx_v __pyx_r = __pyx_v_zCoord; goto __pyx_L0; - /* "CAStar.pyx":49 + /* "CAStar/CAStar.pyx":49 * return yCoord * * cdef float GetzCoord(int ID, int xCount, int yCount, int zCount, float xSize, float ySize,float zSize): # <<<<<<<<<<<<<< @@ -1603,7 +1597,7 @@ static float __pyx_f_6CAStar_GetzCoord(int __pyx_v_ID, CYTHON_UNUSED int __pyx_v return __pyx_r; } -/* "CAStar.pyx":54 +/* "CAStar/CAStar.pyx":54 * return zCoord * * def AStarPQ(graph, int start, int target): # Set all g to node_count + 1 # <<<<<<<<<<<<<< @@ -1612,9 +1606,9 @@ static float __pyx_f_6CAStar_GetzCoord(int __pyx_v_ID, CYTHON_UNUSED int __pyx_v */ /* Python wrapper */ -static PyObject *__pyx_pw_6CAStar_1AStarPQ(PyObject *__pyx_self, PyObject *__pyx_args, PyObject *__pyx_kwds); /*proto*/ -static PyMethodDef __pyx_mdef_6CAStar_1AStarPQ = {"AStarPQ", (PyCFunction)__pyx_pw_6CAStar_1AStarPQ, METH_VARARGS|METH_KEYWORDS, 0}; -static PyObject *__pyx_pw_6CAStar_1AStarPQ(PyObject *__pyx_self, PyObject *__pyx_args, PyObject *__pyx_kwds) { +static PyObject *__pyx_pw_6CAStar_6CAStar_1AStarPQ(PyObject *__pyx_self, PyObject *__pyx_args, PyObject *__pyx_kwds); /*proto*/ +static PyMethodDef __pyx_mdef_6CAStar_6CAStar_1AStarPQ = {"AStarPQ", (PyCFunction)__pyx_pw_6CAStar_6CAStar_1AStarPQ, METH_VARARGS|METH_KEYWORDS, 0}; +static PyObject *__pyx_pw_6CAStar_6CAStar_1AStarPQ(PyObject *__pyx_self, PyObject *__pyx_args, PyObject *__pyx_kwds) { PyObject *__pyx_v_graph = 0; int __pyx_v_start; int __pyx_v_target; @@ -1673,18 +1667,18 @@ static PyObject *__pyx_pw_6CAStar_1AStarPQ(PyObject *__pyx_self, PyObject *__pyx __pyx_L5_argtuple_error:; __Pyx_RaiseArgtupleInvalid("AStarPQ", 1, 3, 3, PyTuple_GET_SIZE(__pyx_args)); __PYX_ERR(0, 54, __pyx_L3_error) __pyx_L3_error:; - __Pyx_AddTraceback("CAStar.AStarPQ", __pyx_clineno, __pyx_lineno, __pyx_filename); + __Pyx_AddTraceback("CAStar.CAStar.AStarPQ", __pyx_clineno, __pyx_lineno, __pyx_filename); __Pyx_RefNannyFinishContext(); return NULL; __pyx_L4_argument_unpacking_done:; - __pyx_r = __pyx_pf_6CAStar_AStarPQ(__pyx_self, __pyx_v_graph, __pyx_v_start, __pyx_v_target); + __pyx_r = __pyx_pf_6CAStar_6CAStar_AStarPQ(__pyx_self, __pyx_v_graph, __pyx_v_start, __pyx_v_target); /* function exit code */ __Pyx_RefNannyFinishContext(); return __pyx_r; } -static PyObject *__pyx_pf_6CAStar_AStarPQ(CYTHON_UNUSED PyObject *__pyx_self, PyObject *__pyx_v_graph, int __pyx_v_start, int __pyx_v_target) { +static PyObject *__pyx_pf_6CAStar_6CAStar_AStarPQ(CYTHON_UNUSED PyObject *__pyx_self, PyObject *__pyx_v_graph, int __pyx_v_start, int __pyx_v_target) { PyObject *__pyx_v_StartTime = NULL; float __pyx_v_xSize; float __pyx_v_ySize; @@ -1722,11 +1716,11 @@ static PyObject *__pyx_pf_6CAStar_AStarPQ(CYTHON_UNUSED PyObject *__pyx_self, Py int __pyx_t_11; Py_ssize_t __pyx_t_12; int __pyx_t_13; - int __pyx_t_14; - PyObject *__pyx_t_15 = NULL; + PyObject *__pyx_t_14 = NULL; + int __pyx_t_15; __Pyx_RefNannySetupContext("AStarPQ", 0); - /* "CAStar.pyx":55 + /* "CAStar/CAStar.pyx":55 * * def AStarPQ(graph, int start, int target): # Set all g to node_count + 1 * StartTime = time.time() # <<<<<<<<<<<<<< @@ -1759,7 +1753,7 @@ static PyObject *__pyx_pf_6CAStar_AStarPQ(CYTHON_UNUSED PyObject *__pyx_self, Py __pyx_v_StartTime = __pyx_t_1; __pyx_t_1 = 0; - /* "CAStar.pyx":63 + /* "CAStar/CAStar.pyx":63 * * * TargetNode = graph.GetNode(target) # <<<<<<<<<<<<<< @@ -1819,7 +1813,7 @@ static PyObject *__pyx_pf_6CAStar_AStarPQ(CYTHON_UNUSED PyObject *__pyx_self, Py __pyx_v_TargetNode = __pyx_t_1; __pyx_t_1 = 0; - /* "CAStar.pyx":64 + /* "CAStar/CAStar.pyx":64 * * TargetNode = graph.GetNode(target) * xSize,ySize,zSize = graph.xSize,graph.ySize,graph.zSize # <<<<<<<<<<<<<< @@ -1842,7 +1836,7 @@ static PyObject *__pyx_pf_6CAStar_AStarPQ(CYTHON_UNUSED PyObject *__pyx_self, Py __pyx_v_ySize = __pyx_t_7; __pyx_v_zSize = __pyx_t_8; - /* "CAStar.pyx":65 + /* "CAStar/CAStar.pyx":65 * TargetNode = graph.GetNode(target) * xSize,ySize,zSize = graph.xSize,graph.ySize,graph.zSize * xCount,yCount,zCount = graph.xCount,graph.yCount,graph.zCount # <<<<<<<<<<<<<< @@ -1865,7 +1859,7 @@ static PyObject *__pyx_pf_6CAStar_AStarPQ(CYTHON_UNUSED PyObject *__pyx_self, Py __pyx_v_yCount = __pyx_t_10; __pyx_v_zCount = __pyx_t_11; - /* "CAStar.pyx":67 + /* "CAStar/CAStar.pyx":67 * xCount,yCount,zCount = graph.xCount,graph.yCount,graph.zCount * * ClosedSet = {} #Dict to hash find closed nodes # <<<<<<<<<<<<<< @@ -1877,7 +1871,7 @@ static PyObject *__pyx_pf_6CAStar_AStarPQ(CYTHON_UNUSED PyObject *__pyx_self, Py __pyx_v_ClosedSet = ((PyObject*)__pyx_t_1); __pyx_t_1 = 0; - /* "CAStar.pyx":68 + /* "CAStar/CAStar.pyx":68 * * ClosedSet = {} #Dict to hash find closed nodes * OpenSet = {start:1} # <<<<<<<<<<<<<< @@ -1893,7 +1887,7 @@ static PyObject *__pyx_pf_6CAStar_AStarPQ(CYTHON_UNUSED PyObject *__pyx_self, Py __pyx_v_OpenSet = ((PyObject*)__pyx_t_1); __pyx_t_1 = 0; - /* "CAStar.pyx":69 + /* "CAStar/CAStar.pyx":69 * ClosedSet = {} #Dict to hash find closed nodes * OpenSet = {start:1} * cameFrom = {} # <<<<<<<<<<<<<< @@ -1905,7 +1899,7 @@ static PyObject *__pyx_pf_6CAStar_AStarPQ(CYTHON_UNUSED PyObject *__pyx_self, Py __pyx_v_cameFrom = ((PyObject*)__pyx_t_1); __pyx_t_1 = 0; - /* "CAStar.pyx":70 + /* "CAStar/CAStar.pyx":70 * OpenSet = {start:1} * cameFrom = {} * g,f = {},{} # <<<<<<<<<<<<<< @@ -1921,7 +1915,7 @@ static PyObject *__pyx_pf_6CAStar_AStarPQ(CYTHON_UNUSED PyObject *__pyx_self, Py __pyx_v_f = ((PyObject*)__pyx_t_3); __pyx_t_3 = 0; - /* "CAStar.pyx":71 + /* "CAStar/CAStar.pyx":71 * cameFrom = {} * g,f = {},{} * current = -1 # <<<<<<<<<<<<<< @@ -1930,7 +1924,7 @@ static PyObject *__pyx_pf_6CAStar_AStarPQ(CYTHON_UNUSED PyObject *__pyx_self, Py */ __pyx_v_current = -1; - /* "CAStar.pyx":72 + /* "CAStar/CAStar.pyx":72 * g,f = {},{} * current = -1 * fp = PriorityQueue.PriorityQueue() # <<<<<<<<<<<<<< @@ -1963,7 +1957,7 @@ static PyObject *__pyx_pf_6CAStar_AStarPQ(CYTHON_UNUSED PyObject *__pyx_self, Py __pyx_v_fp = __pyx_t_3; __pyx_t_3 = 0; - /* "CAStar.pyx":75 + /* "CAStar/CAStar.pyx":75 * * * g[start] = 0 # <<<<<<<<<<<<<< @@ -1975,14 +1969,14 @@ static PyObject *__pyx_pf_6CAStar_AStarPQ(CYTHON_UNUSED PyObject *__pyx_self, Py if (unlikely(PyDict_SetItem(__pyx_v_g, __pyx_t_3, __pyx_int_0) < 0)) __PYX_ERR(0, 75, __pyx_L1_error) __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; - /* "CAStar.pyx":76 + /* "CAStar/CAStar.pyx":76 * * g[start] = 0 * f[start] = EstimateDistance(start,target,xCount,yCount,zCount,xSize,ySize,zSize) # <<<<<<<<<<<<<< * fp.put((EstimateDistance(start,target,xCount,yCount,zCount,xSize,ySize,zSize),start)) * Found = False */ - __pyx_t_3 = PyFloat_FromDouble(__pyx_f_6CAStar_EstimateDistance(__pyx_v_start, __pyx_v_target, __pyx_v_xCount, __pyx_v_yCount, __pyx_v_zCount, __pyx_v_xSize, __pyx_v_ySize, __pyx_v_zSize)); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 76, __pyx_L1_error) + __pyx_t_3 = PyFloat_FromDouble(__pyx_f_6CAStar_6CAStar_EstimateDistance(__pyx_v_start, __pyx_v_target, __pyx_v_xCount, __pyx_v_yCount, __pyx_v_zCount, __pyx_v_xSize, __pyx_v_ySize, __pyx_v_zSize)); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 76, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_3); __pyx_t_5 = __Pyx_PyInt_From_int(__pyx_v_start); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 76, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_5); @@ -1990,7 +1984,7 @@ static PyObject *__pyx_pf_6CAStar_AStarPQ(CYTHON_UNUSED PyObject *__pyx_self, Py __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0; __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; - /* "CAStar.pyx":77 + /* "CAStar/CAStar.pyx":77 * g[start] = 0 * f[start] = EstimateDistance(start,target,xCount,yCount,zCount,xSize,ySize,zSize) * fp.put((EstimateDistance(start,target,xCount,yCount,zCount,xSize,ySize,zSize),start)) # <<<<<<<<<<<<<< @@ -1999,7 +1993,7 @@ static PyObject *__pyx_pf_6CAStar_AStarPQ(CYTHON_UNUSED PyObject *__pyx_self, Py */ __pyx_t_5 = __Pyx_PyObject_GetAttrStr(__pyx_v_fp, __pyx_n_s_put); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 77, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_5); - __pyx_t_1 = PyFloat_FromDouble(__pyx_f_6CAStar_EstimateDistance(__pyx_v_start, __pyx_v_target, __pyx_v_xCount, __pyx_v_yCount, __pyx_v_zCount, __pyx_v_xSize, __pyx_v_ySize, __pyx_v_zSize)); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 77, __pyx_L1_error) + __pyx_t_1 = PyFloat_FromDouble(__pyx_f_6CAStar_6CAStar_EstimateDistance(__pyx_v_start, __pyx_v_target, __pyx_v_xCount, __pyx_v_yCount, __pyx_v_zCount, __pyx_v_xSize, __pyx_v_ySize, __pyx_v_zSize)); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 77, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_1); __pyx_t_2 = __Pyx_PyInt_From_int(__pyx_v_start); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 77, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_2); @@ -2059,7 +2053,7 @@ static PyObject *__pyx_pf_6CAStar_AStarPQ(CYTHON_UNUSED PyObject *__pyx_self, Py __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0; __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; - /* "CAStar.pyx":78 + /* "CAStar/CAStar.pyx":78 * f[start] = EstimateDistance(start,target,xCount,yCount,zCount,xSize,ySize,zSize) * fp.put((EstimateDistance(start,target,xCount,yCount,zCount,xSize,ySize,zSize),start)) * Found = False # <<<<<<<<<<<<<< @@ -2068,7 +2062,7 @@ static PyObject *__pyx_pf_6CAStar_AStarPQ(CYTHON_UNUSED PyObject *__pyx_self, Py */ __pyx_v_Found = 0; - /* "CAStar.pyx":79 + /* "CAStar/CAStar.pyx":79 * fp.put((EstimateDistance(start,target,xCount,yCount,zCount,xSize,ySize,zSize),start)) * Found = False * while len(OpenSet) != 0: # <<<<<<<<<<<<<< @@ -2080,7 +2074,7 @@ static PyObject *__pyx_pf_6CAStar_AStarPQ(CYTHON_UNUSED PyObject *__pyx_self, Py __pyx_t_13 = ((__pyx_t_12 != 0) != 0); if (!__pyx_t_13) break; - /* "CAStar.pyx":80 + /* "CAStar/CAStar.pyx":80 * Found = False * while len(OpenSet) != 0: * current = fp.pop()[1] # <<<<<<<<<<<<<< @@ -2096,7 +2090,7 @@ static PyObject *__pyx_pf_6CAStar_AStarPQ(CYTHON_UNUSED PyObject *__pyx_self, Py __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0; __pyx_v_current = __pyx_t_11; - /* "CAStar.pyx":81 + /* "CAStar/CAStar.pyx":81 * while len(OpenSet) != 0: * current = fp.pop()[1] * if current == target: # <<<<<<<<<<<<<< @@ -2106,7 +2100,7 @@ static PyObject *__pyx_pf_6CAStar_AStarPQ(CYTHON_UNUSED PyObject *__pyx_self, Py __pyx_t_13 = ((__pyx_v_current == __pyx_v_target) != 0); if (__pyx_t_13) { - /* "CAStar.pyx":82 + /* "CAStar/CAStar.pyx":82 * current = fp.pop()[1] * if current == target: * Found = True # <<<<<<<<<<<<<< @@ -2115,7 +2109,7 @@ static PyObject *__pyx_pf_6CAStar_AStarPQ(CYTHON_UNUSED PyObject *__pyx_self, Py */ __pyx_v_Found = 1; - /* "CAStar.pyx":83 + /* "CAStar/CAStar.pyx":83 * if current == target: * Found = True * break # <<<<<<<<<<<<<< @@ -2124,7 +2118,7 @@ static PyObject *__pyx_pf_6CAStar_AStarPQ(CYTHON_UNUSED PyObject *__pyx_self, Py */ goto __pyx_L4_break; - /* "CAStar.pyx":81 + /* "CAStar/CAStar.pyx":81 * while len(OpenSet) != 0: * current = fp.pop()[1] * if current == target: # <<<<<<<<<<<<<< @@ -2133,7 +2127,7 @@ static PyObject *__pyx_pf_6CAStar_AStarPQ(CYTHON_UNUSED PyObject *__pyx_self, Py */ } - /* "CAStar.pyx":86 + /* "CAStar/CAStar.pyx":86 * * * OpenSet.pop(current) # <<<<<<<<<<<<<< @@ -2192,85 +2186,103 @@ static PyObject *__pyx_pf_6CAStar_AStarPQ(CYTHON_UNUSED PyObject *__pyx_self, Py __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0; - /* "CAStar.pyx":87 + /* "CAStar/CAStar.pyx":87 * * OpenSet.pop(current) * ClosedSet[current] = 1 # <<<<<<<<<<<<<< * - * FriendList = graph.GetNode(current).Friends + * FriendList = graph.GetNode(current).Get_Friends() */ __pyx_t_5 = __Pyx_PyInt_From_int(__pyx_v_current); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 87, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_5); if (unlikely(PyDict_SetItem(__pyx_v_ClosedSet, __pyx_t_5, __pyx_int_1) < 0)) __PYX_ERR(0, 87, __pyx_L1_error) __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0; - /* "CAStar.pyx":89 + /* "CAStar/CAStar.pyx":89 * ClosedSet[current] = 1 * - * FriendList = graph.GetNode(current).Friends # <<<<<<<<<<<<<< + * FriendList = graph.GetNode(current).Get_Friends() # <<<<<<<<<<<<<< * for NodeID in FriendList: * if NodeID in ClosedSet: */ - __pyx_t_3 = __Pyx_PyObject_GetAttrStr(__pyx_v_graph, __pyx_n_s_GetNode); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 89, __pyx_L1_error) - __Pyx_GOTREF(__pyx_t_3); - __pyx_t_2 = __Pyx_PyInt_From_int(__pyx_v_current); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 89, __pyx_L1_error) + __pyx_t_2 = __Pyx_PyObject_GetAttrStr(__pyx_v_graph, __pyx_n_s_GetNode); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 89, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_2); - __pyx_t_1 = NULL; - if (CYTHON_UNPACK_METHODS && likely(PyMethod_Check(__pyx_t_3))) { - __pyx_t_1 = PyMethod_GET_SELF(__pyx_t_3); - if (likely(__pyx_t_1)) { - PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_3); - __Pyx_INCREF(__pyx_t_1); + __pyx_t_1 = __Pyx_PyInt_From_int(__pyx_v_current); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 89, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_1); + __pyx_t_4 = NULL; + if (CYTHON_UNPACK_METHODS && likely(PyMethod_Check(__pyx_t_2))) { + __pyx_t_4 = PyMethod_GET_SELF(__pyx_t_2); + if (likely(__pyx_t_4)) { + PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_2); + __Pyx_INCREF(__pyx_t_4); __Pyx_INCREF(function); - __Pyx_DECREF_SET(__pyx_t_3, function); + __Pyx_DECREF_SET(__pyx_t_2, function); } } - if (!__pyx_t_1) { - __pyx_t_5 = __Pyx_PyObject_CallOneArg(__pyx_t_3, __pyx_t_2); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 89, __pyx_L1_error) - __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; - __Pyx_GOTREF(__pyx_t_5); + if (!__pyx_t_4) { + __pyx_t_3 = __Pyx_PyObject_CallOneArg(__pyx_t_2, __pyx_t_1); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 89, __pyx_L1_error) + __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; + __Pyx_GOTREF(__pyx_t_3); } else { #if CYTHON_FAST_PYCALL - if (PyFunction_Check(__pyx_t_3)) { - PyObject *__pyx_temp[2] = {__pyx_t_1, __pyx_t_2}; - __pyx_t_5 = __Pyx_PyFunction_FastCall(__pyx_t_3, __pyx_temp+1-1, 1+1); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 89, __pyx_L1_error) - __Pyx_XDECREF(__pyx_t_1); __pyx_t_1 = 0; - __Pyx_GOTREF(__pyx_t_5); - __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; + if (PyFunction_Check(__pyx_t_2)) { + PyObject *__pyx_temp[2] = {__pyx_t_4, __pyx_t_1}; + __pyx_t_3 = __Pyx_PyFunction_FastCall(__pyx_t_2, __pyx_temp+1-1, 1+1); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 89, __pyx_L1_error) + __Pyx_XDECREF(__pyx_t_4); __pyx_t_4 = 0; + __Pyx_GOTREF(__pyx_t_3); + __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; } else #endif #if CYTHON_FAST_PYCCALL - if (__Pyx_PyFastCFunction_Check(__pyx_t_3)) { - PyObject *__pyx_temp[2] = {__pyx_t_1, __pyx_t_2}; - __pyx_t_5 = __Pyx_PyCFunction_FastCall(__pyx_t_3, __pyx_temp+1-1, 1+1); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 89, __pyx_L1_error) - __Pyx_XDECREF(__pyx_t_1); __pyx_t_1 = 0; - __Pyx_GOTREF(__pyx_t_5); - __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; + if (__Pyx_PyFastCFunction_Check(__pyx_t_2)) { + PyObject *__pyx_temp[2] = {__pyx_t_4, __pyx_t_1}; + __pyx_t_3 = __Pyx_PyCFunction_FastCall(__pyx_t_2, __pyx_temp+1-1, 1+1); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 89, __pyx_L1_error) + __Pyx_XDECREF(__pyx_t_4); __pyx_t_4 = 0; + __Pyx_GOTREF(__pyx_t_3); + __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; } else #endif { - __pyx_t_4 = PyTuple_New(1+1); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 89, __pyx_L1_error) - __Pyx_GOTREF(__pyx_t_4); - __Pyx_GIVEREF(__pyx_t_1); PyTuple_SET_ITEM(__pyx_t_4, 0, __pyx_t_1); __pyx_t_1 = NULL; - __Pyx_GIVEREF(__pyx_t_2); - PyTuple_SET_ITEM(__pyx_t_4, 0+1, __pyx_t_2); - __pyx_t_2 = 0; - __pyx_t_5 = __Pyx_PyObject_Call(__pyx_t_3, __pyx_t_4, NULL); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 89, __pyx_L1_error) - __Pyx_GOTREF(__pyx_t_5); - __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0; + __pyx_t_14 = PyTuple_New(1+1); if (unlikely(!__pyx_t_14)) __PYX_ERR(0, 89, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_14); + __Pyx_GIVEREF(__pyx_t_4); PyTuple_SET_ITEM(__pyx_t_14, 0, __pyx_t_4); __pyx_t_4 = NULL; + __Pyx_GIVEREF(__pyx_t_1); + PyTuple_SET_ITEM(__pyx_t_14, 0+1, __pyx_t_1); + __pyx_t_1 = 0; + __pyx_t_3 = __Pyx_PyObject_Call(__pyx_t_2, __pyx_t_14, NULL); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 89, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_3); + __Pyx_DECREF(__pyx_t_14); __pyx_t_14 = 0; } } + __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; + __pyx_t_2 = __Pyx_PyObject_GetAttrStr(__pyx_t_3, __pyx_n_s_Get_Friends); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 89, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_2); __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; - __pyx_t_3 = __Pyx_PyObject_GetAttrStr(__pyx_t_5, __pyx_n_s_Friends); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 89, __pyx_L1_error) - __Pyx_GOTREF(__pyx_t_3); - __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0; - if (!(likely(PyList_CheckExact(__pyx_t_3))||((__pyx_t_3) == Py_None)||(PyErr_Format(PyExc_TypeError, "Expected %.16s, got %.200s", "list", Py_TYPE(__pyx_t_3)->tp_name), 0))) __PYX_ERR(0, 89, __pyx_L1_error) - __Pyx_XDECREF_SET(__pyx_v_FriendList, ((PyObject*)__pyx_t_3)); - __pyx_t_3 = 0; + __pyx_t_3 = NULL; + if (CYTHON_UNPACK_METHODS && likely(PyMethod_Check(__pyx_t_2))) { + __pyx_t_3 = PyMethod_GET_SELF(__pyx_t_2); + if (likely(__pyx_t_3)) { + PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_2); + __Pyx_INCREF(__pyx_t_3); + __Pyx_INCREF(function); + __Pyx_DECREF_SET(__pyx_t_2, function); + } + } + if (__pyx_t_3) { + __pyx_t_5 = __Pyx_PyObject_CallOneArg(__pyx_t_2, __pyx_t_3); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 89, __pyx_L1_error) + __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; + } else { + __pyx_t_5 = __Pyx_PyObject_CallNoArg(__pyx_t_2); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 89, __pyx_L1_error) + } + __Pyx_GOTREF(__pyx_t_5); + __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; + if (!(likely(PyList_CheckExact(__pyx_t_5))||((__pyx_t_5) == Py_None)||(PyErr_Format(PyExc_TypeError, "Expected %.16s, got %.200s", "list", Py_TYPE(__pyx_t_5)->tp_name), 0))) __PYX_ERR(0, 89, __pyx_L1_error) + __Pyx_XDECREF_SET(__pyx_v_FriendList, ((PyObject*)__pyx_t_5)); + __pyx_t_5 = 0; - /* "CAStar.pyx":90 + /* "CAStar/CAStar.pyx":90 * - * FriendList = graph.GetNode(current).Friends + * FriendList = graph.GetNode(current).Get_Friends() * for NodeID in FriendList: # <<<<<<<<<<<<<< * if NodeID in ClosedSet: * continue @@ -2279,34 +2291,34 @@ static PyObject *__pyx_pf_6CAStar_AStarPQ(CYTHON_UNUSED PyObject *__pyx_self, Py PyErr_SetString(PyExc_TypeError, "'NoneType' object is not iterable"); __PYX_ERR(0, 90, __pyx_L1_error) } - __pyx_t_3 = __pyx_v_FriendList; __Pyx_INCREF(__pyx_t_3); __pyx_t_12 = 0; + __pyx_t_5 = __pyx_v_FriendList; __Pyx_INCREF(__pyx_t_5); __pyx_t_12 = 0; for (;;) { - if (__pyx_t_12 >= PyList_GET_SIZE(__pyx_t_3)) break; + if (__pyx_t_12 >= PyList_GET_SIZE(__pyx_t_5)) break; #if CYTHON_ASSUME_SAFE_MACROS && !CYTHON_AVOID_BORROWED_REFS - __pyx_t_5 = PyList_GET_ITEM(__pyx_t_3, __pyx_t_12); __Pyx_INCREF(__pyx_t_5); __pyx_t_12++; if (unlikely(0 < 0)) __PYX_ERR(0, 90, __pyx_L1_error) + __pyx_t_2 = PyList_GET_ITEM(__pyx_t_5, __pyx_t_12); __Pyx_INCREF(__pyx_t_2); __pyx_t_12++; if (unlikely(0 < 0)) __PYX_ERR(0, 90, __pyx_L1_error) #else - __pyx_t_5 = PySequence_ITEM(__pyx_t_3, __pyx_t_12); __pyx_t_12++; if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 90, __pyx_L1_error) - __Pyx_GOTREF(__pyx_t_5); + __pyx_t_2 = PySequence_ITEM(__pyx_t_5, __pyx_t_12); __pyx_t_12++; if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 90, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_2); #endif - __pyx_t_11 = __Pyx_PyInt_As_int(__pyx_t_5); if (unlikely((__pyx_t_11 == (int)-1) && PyErr_Occurred())) __PYX_ERR(0, 90, __pyx_L1_error) - __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0; + __pyx_t_11 = __Pyx_PyInt_As_int(__pyx_t_2); if (unlikely((__pyx_t_11 == (int)-1) && PyErr_Occurred())) __PYX_ERR(0, 90, __pyx_L1_error) + __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; __pyx_v_NodeID = __pyx_t_11; - /* "CAStar.pyx":91 - * FriendList = graph.GetNode(current).Friends + /* "CAStar/CAStar.pyx":91 + * FriendList = graph.GetNode(current).Get_Friends() * for NodeID in FriendList: * if NodeID in ClosedSet: # <<<<<<<<<<<<<< * continue * if NodeID not in OpenSet: */ - __pyx_t_5 = __Pyx_PyInt_From_int(__pyx_v_NodeID); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 91, __pyx_L1_error) - __Pyx_GOTREF(__pyx_t_5); - __pyx_t_13 = (__Pyx_PyDict_ContainsTF(__pyx_t_5, __pyx_v_ClosedSet, Py_EQ)); if (unlikely(__pyx_t_13 < 0)) __PYX_ERR(0, 91, __pyx_L1_error) - __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0; - __pyx_t_14 = (__pyx_t_13 != 0); - if (__pyx_t_14) { + __pyx_t_2 = __Pyx_PyInt_From_int(__pyx_v_NodeID); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 91, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_2); + __pyx_t_13 = (__Pyx_PyDict_ContainsTF(__pyx_t_2, __pyx_v_ClosedSet, Py_EQ)); if (unlikely(__pyx_t_13 < 0)) __PYX_ERR(0, 91, __pyx_L1_error) + __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; + __pyx_t_15 = (__pyx_t_13 != 0); + if (__pyx_t_15) { - /* "CAStar.pyx":92 + /* "CAStar/CAStar.pyx":92 * for NodeID in FriendList: * if NodeID in ClosedSet: * continue # <<<<<<<<<<<<<< @@ -2315,8 +2327,8 @@ static PyObject *__pyx_pf_6CAStar_AStarPQ(CYTHON_UNUSED PyObject *__pyx_self, Py */ goto __pyx_L6_continue; - /* "CAStar.pyx":91 - * FriendList = graph.GetNode(current).Friends + /* "CAStar/CAStar.pyx":91 + * FriendList = graph.GetNode(current).Get_Friends() * for NodeID in FriendList: * if NodeID in ClosedSet: # <<<<<<<<<<<<<< * continue @@ -2324,141 +2336,141 @@ static PyObject *__pyx_pf_6CAStar_AStarPQ(CYTHON_UNUSED PyObject *__pyx_self, Py */ } - /* "CAStar.pyx":93 + /* "CAStar/CAStar.pyx":93 * if NodeID in ClosedSet: * continue * if NodeID not in OpenSet: # <<<<<<<<<<<<<< * OpenSet[NodeID] = 1 * g[NodeID] = math.inf */ - __pyx_t_5 = __Pyx_PyInt_From_int(__pyx_v_NodeID); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 93, __pyx_L1_error) - __Pyx_GOTREF(__pyx_t_5); - __pyx_t_14 = (__Pyx_PyDict_ContainsTF(__pyx_t_5, __pyx_v_OpenSet, Py_NE)); if (unlikely(__pyx_t_14 < 0)) __PYX_ERR(0, 93, __pyx_L1_error) - __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0; - __pyx_t_13 = (__pyx_t_14 != 0); + __pyx_t_2 = __Pyx_PyInt_From_int(__pyx_v_NodeID); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 93, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_2); + __pyx_t_15 = (__Pyx_PyDict_ContainsTF(__pyx_t_2, __pyx_v_OpenSet, Py_NE)); if (unlikely(__pyx_t_15 < 0)) __PYX_ERR(0, 93, __pyx_L1_error) + __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; + __pyx_t_13 = (__pyx_t_15 != 0); if (__pyx_t_13) { - /* "CAStar.pyx":94 + /* "CAStar/CAStar.pyx":94 * continue * if NodeID not in OpenSet: * OpenSet[NodeID] = 1 # <<<<<<<<<<<<<< * g[NodeID] = math.inf * f[NodeID] = math.inf */ - __pyx_t_5 = __Pyx_PyInt_From_int(__pyx_v_NodeID); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 94, __pyx_L1_error) - __Pyx_GOTREF(__pyx_t_5); - if (unlikely(PyDict_SetItem(__pyx_v_OpenSet, __pyx_t_5, __pyx_int_1) < 0)) __PYX_ERR(0, 94, __pyx_L1_error) - __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0; + __pyx_t_2 = __Pyx_PyInt_From_int(__pyx_v_NodeID); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 94, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_2); + if (unlikely(PyDict_SetItem(__pyx_v_OpenSet, __pyx_t_2, __pyx_int_1) < 0)) __PYX_ERR(0, 94, __pyx_L1_error) + __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; - /* "CAStar.pyx":95 + /* "CAStar/CAStar.pyx":95 * if NodeID not in OpenSet: * OpenSet[NodeID] = 1 * g[NodeID] = math.inf # <<<<<<<<<<<<<< * f[NodeID] = math.inf * fp.put((math.inf,NodeID)) */ - __pyx_t_5 = __Pyx_GetModuleGlobalName(__pyx_n_s_math); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 95, __pyx_L1_error) - __Pyx_GOTREF(__pyx_t_5); - __pyx_t_4 = __Pyx_PyObject_GetAttrStr(__pyx_t_5, __pyx_n_s_inf); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 95, __pyx_L1_error) - __Pyx_GOTREF(__pyx_t_4); - __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0; - __pyx_t_5 = __Pyx_PyInt_From_int(__pyx_v_NodeID); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 95, __pyx_L1_error) - __Pyx_GOTREF(__pyx_t_5); - if (unlikely(PyDict_SetItem(__pyx_v_g, __pyx_t_5, __pyx_t_4) < 0)) __PYX_ERR(0, 95, __pyx_L1_error) - __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0; - __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0; + __pyx_t_2 = __Pyx_GetModuleGlobalName(__pyx_n_s_math); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 95, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_2); + __pyx_t_3 = __Pyx_PyObject_GetAttrStr(__pyx_t_2, __pyx_n_s_inf); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 95, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_3); + __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; + __pyx_t_2 = __Pyx_PyInt_From_int(__pyx_v_NodeID); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 95, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_2); + if (unlikely(PyDict_SetItem(__pyx_v_g, __pyx_t_2, __pyx_t_3) < 0)) __PYX_ERR(0, 95, __pyx_L1_error) + __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; + __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; - /* "CAStar.pyx":96 + /* "CAStar/CAStar.pyx":96 * OpenSet[NodeID] = 1 * g[NodeID] = math.inf * f[NodeID] = math.inf # <<<<<<<<<<<<<< * fp.put((math.inf,NodeID)) * */ - __pyx_t_4 = __Pyx_GetModuleGlobalName(__pyx_n_s_math); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 96, __pyx_L1_error) - __Pyx_GOTREF(__pyx_t_4); - __pyx_t_5 = __Pyx_PyObject_GetAttrStr(__pyx_t_4, __pyx_n_s_inf); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 96, __pyx_L1_error) - __Pyx_GOTREF(__pyx_t_5); - __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0; - __pyx_t_4 = __Pyx_PyInt_From_int(__pyx_v_NodeID); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 96, __pyx_L1_error) - __Pyx_GOTREF(__pyx_t_4); - if (unlikely(PyDict_SetItem(__pyx_v_f, __pyx_t_4, __pyx_t_5) < 0)) __PYX_ERR(0, 96, __pyx_L1_error) - __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0; - __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0; + __pyx_t_3 = __Pyx_GetModuleGlobalName(__pyx_n_s_math); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 96, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_3); + __pyx_t_2 = __Pyx_PyObject_GetAttrStr(__pyx_t_3, __pyx_n_s_inf); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 96, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_2); + __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; + __pyx_t_3 = __Pyx_PyInt_From_int(__pyx_v_NodeID); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 96, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_3); + if (unlikely(PyDict_SetItem(__pyx_v_f, __pyx_t_3, __pyx_t_2) < 0)) __PYX_ERR(0, 96, __pyx_L1_error) + __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; + __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; - /* "CAStar.pyx":97 + /* "CAStar/CAStar.pyx":97 * g[NodeID] = math.inf * f[NodeID] = math.inf * fp.put((math.inf,NodeID)) # <<<<<<<<<<<<<< * * Node = graph.GetNode(NodeID) */ - __pyx_t_4 = __Pyx_PyObject_GetAttrStr(__pyx_v_fp, __pyx_n_s_put); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 97, __pyx_L1_error) - __Pyx_GOTREF(__pyx_t_4); - __pyx_t_2 = __Pyx_GetModuleGlobalName(__pyx_n_s_math); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 97, __pyx_L1_error) - __Pyx_GOTREF(__pyx_t_2); - __pyx_t_1 = __Pyx_PyObject_GetAttrStr(__pyx_t_2, __pyx_n_s_inf); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 97, __pyx_L1_error) + __pyx_t_3 = __Pyx_PyObject_GetAttrStr(__pyx_v_fp, __pyx_n_s_put); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 97, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_3); + __pyx_t_14 = __Pyx_GetModuleGlobalName(__pyx_n_s_math); if (unlikely(!__pyx_t_14)) __PYX_ERR(0, 97, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_14); + __pyx_t_1 = __Pyx_PyObject_GetAttrStr(__pyx_t_14, __pyx_n_s_inf); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 97, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_1); - __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; - __pyx_t_2 = __Pyx_PyInt_From_int(__pyx_v_NodeID); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 97, __pyx_L1_error) - __Pyx_GOTREF(__pyx_t_2); - __pyx_t_15 = PyTuple_New(2); if (unlikely(!__pyx_t_15)) __PYX_ERR(0, 97, __pyx_L1_error) - __Pyx_GOTREF(__pyx_t_15); + __Pyx_DECREF(__pyx_t_14); __pyx_t_14 = 0; + __pyx_t_14 = __Pyx_PyInt_From_int(__pyx_v_NodeID); if (unlikely(!__pyx_t_14)) __PYX_ERR(0, 97, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_14); + __pyx_t_4 = PyTuple_New(2); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 97, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_4); __Pyx_GIVEREF(__pyx_t_1); - PyTuple_SET_ITEM(__pyx_t_15, 0, __pyx_t_1); - __Pyx_GIVEREF(__pyx_t_2); - PyTuple_SET_ITEM(__pyx_t_15, 1, __pyx_t_2); + PyTuple_SET_ITEM(__pyx_t_4, 0, __pyx_t_1); + __Pyx_GIVEREF(__pyx_t_14); + PyTuple_SET_ITEM(__pyx_t_4, 1, __pyx_t_14); __pyx_t_1 = 0; - __pyx_t_2 = 0; - __pyx_t_2 = NULL; - if (CYTHON_UNPACK_METHODS && likely(PyMethod_Check(__pyx_t_4))) { - __pyx_t_2 = PyMethod_GET_SELF(__pyx_t_4); - if (likely(__pyx_t_2)) { - PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_4); - __Pyx_INCREF(__pyx_t_2); + __pyx_t_14 = 0; + __pyx_t_14 = NULL; + if (CYTHON_UNPACK_METHODS && likely(PyMethod_Check(__pyx_t_3))) { + __pyx_t_14 = PyMethod_GET_SELF(__pyx_t_3); + if (likely(__pyx_t_14)) { + PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_3); + __Pyx_INCREF(__pyx_t_14); __Pyx_INCREF(function); - __Pyx_DECREF_SET(__pyx_t_4, function); + __Pyx_DECREF_SET(__pyx_t_3, function); } } - if (!__pyx_t_2) { - __pyx_t_5 = __Pyx_PyObject_CallOneArg(__pyx_t_4, __pyx_t_15); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 97, __pyx_L1_error) - __Pyx_DECREF(__pyx_t_15); __pyx_t_15 = 0; - __Pyx_GOTREF(__pyx_t_5); + if (!__pyx_t_14) { + __pyx_t_2 = __Pyx_PyObject_CallOneArg(__pyx_t_3, __pyx_t_4); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 97, __pyx_L1_error) + __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0; + __Pyx_GOTREF(__pyx_t_2); } else { #if CYTHON_FAST_PYCALL - if (PyFunction_Check(__pyx_t_4)) { - PyObject *__pyx_temp[2] = {__pyx_t_2, __pyx_t_15}; - __pyx_t_5 = __Pyx_PyFunction_FastCall(__pyx_t_4, __pyx_temp+1-1, 1+1); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 97, __pyx_L1_error) - __Pyx_XDECREF(__pyx_t_2); __pyx_t_2 = 0; - __Pyx_GOTREF(__pyx_t_5); - __Pyx_DECREF(__pyx_t_15); __pyx_t_15 = 0; + if (PyFunction_Check(__pyx_t_3)) { + PyObject *__pyx_temp[2] = {__pyx_t_14, __pyx_t_4}; + __pyx_t_2 = __Pyx_PyFunction_FastCall(__pyx_t_3, __pyx_temp+1-1, 1+1); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 97, __pyx_L1_error) + __Pyx_XDECREF(__pyx_t_14); __pyx_t_14 = 0; + __Pyx_GOTREF(__pyx_t_2); + __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0; } else #endif #if CYTHON_FAST_PYCCALL - if (__Pyx_PyFastCFunction_Check(__pyx_t_4)) { - PyObject *__pyx_temp[2] = {__pyx_t_2, __pyx_t_15}; - __pyx_t_5 = __Pyx_PyCFunction_FastCall(__pyx_t_4, __pyx_temp+1-1, 1+1); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 97, __pyx_L1_error) - __Pyx_XDECREF(__pyx_t_2); __pyx_t_2 = 0; - __Pyx_GOTREF(__pyx_t_5); - __Pyx_DECREF(__pyx_t_15); __pyx_t_15 = 0; + if (__Pyx_PyFastCFunction_Check(__pyx_t_3)) { + PyObject *__pyx_temp[2] = {__pyx_t_14, __pyx_t_4}; + __pyx_t_2 = __Pyx_PyCFunction_FastCall(__pyx_t_3, __pyx_temp+1-1, 1+1); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 97, __pyx_L1_error) + __Pyx_XDECREF(__pyx_t_14); __pyx_t_14 = 0; + __Pyx_GOTREF(__pyx_t_2); + __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0; } else #endif { __pyx_t_1 = PyTuple_New(1+1); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 97, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_1); - __Pyx_GIVEREF(__pyx_t_2); PyTuple_SET_ITEM(__pyx_t_1, 0, __pyx_t_2); __pyx_t_2 = NULL; - __Pyx_GIVEREF(__pyx_t_15); - PyTuple_SET_ITEM(__pyx_t_1, 0+1, __pyx_t_15); - __pyx_t_15 = 0; - __pyx_t_5 = __Pyx_PyObject_Call(__pyx_t_4, __pyx_t_1, NULL); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 97, __pyx_L1_error) - __Pyx_GOTREF(__pyx_t_5); + __Pyx_GIVEREF(__pyx_t_14); PyTuple_SET_ITEM(__pyx_t_1, 0, __pyx_t_14); __pyx_t_14 = NULL; + __Pyx_GIVEREF(__pyx_t_4); + PyTuple_SET_ITEM(__pyx_t_1, 0+1, __pyx_t_4); + __pyx_t_4 = 0; + __pyx_t_2 = __Pyx_PyObject_Call(__pyx_t_3, __pyx_t_1, NULL); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 97, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_2); __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; } } - __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0; - __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0; + __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; + __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; - /* "CAStar.pyx":93 + /* "CAStar/CAStar.pyx":93 * if NodeID in ClosedSet: * continue * if NodeID not in OpenSet: # <<<<<<<<<<<<<< @@ -2467,128 +2479,128 @@ static PyObject *__pyx_pf_6CAStar_AStarPQ(CYTHON_UNUSED PyObject *__pyx_self, Py */ } - /* "CAStar.pyx":99 + /* "CAStar/CAStar.pyx":99 * fp.put((math.inf,NodeID)) * * Node = graph.GetNode(NodeID) # <<<<<<<<<<<<<< * tScore = g[current]+ Node.Get_Cost() * if tScore >= g[NodeID]: */ - __pyx_t_4 = __Pyx_PyObject_GetAttrStr(__pyx_v_graph, __pyx_n_s_GetNode); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 99, __pyx_L1_error) - __Pyx_GOTREF(__pyx_t_4); + __pyx_t_3 = __Pyx_PyObject_GetAttrStr(__pyx_v_graph, __pyx_n_s_GetNode); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 99, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_3); __pyx_t_1 = __Pyx_PyInt_From_int(__pyx_v_NodeID); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 99, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_1); - __pyx_t_15 = NULL; - if (CYTHON_UNPACK_METHODS && likely(PyMethod_Check(__pyx_t_4))) { - __pyx_t_15 = PyMethod_GET_SELF(__pyx_t_4); - if (likely(__pyx_t_15)) { - PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_4); - __Pyx_INCREF(__pyx_t_15); + __pyx_t_4 = NULL; + if (CYTHON_UNPACK_METHODS && likely(PyMethod_Check(__pyx_t_3))) { + __pyx_t_4 = PyMethod_GET_SELF(__pyx_t_3); + if (likely(__pyx_t_4)) { + PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_3); + __Pyx_INCREF(__pyx_t_4); __Pyx_INCREF(function); - __Pyx_DECREF_SET(__pyx_t_4, function); + __Pyx_DECREF_SET(__pyx_t_3, function); } } - if (!__pyx_t_15) { - __pyx_t_5 = __Pyx_PyObject_CallOneArg(__pyx_t_4, __pyx_t_1); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 99, __pyx_L1_error) + if (!__pyx_t_4) { + __pyx_t_2 = __Pyx_PyObject_CallOneArg(__pyx_t_3, __pyx_t_1); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 99, __pyx_L1_error) __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; - __Pyx_GOTREF(__pyx_t_5); + __Pyx_GOTREF(__pyx_t_2); } else { #if CYTHON_FAST_PYCALL - if (PyFunction_Check(__pyx_t_4)) { - PyObject *__pyx_temp[2] = {__pyx_t_15, __pyx_t_1}; - __pyx_t_5 = __Pyx_PyFunction_FastCall(__pyx_t_4, __pyx_temp+1-1, 1+1); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 99, __pyx_L1_error) - __Pyx_XDECREF(__pyx_t_15); __pyx_t_15 = 0; - __Pyx_GOTREF(__pyx_t_5); + if (PyFunction_Check(__pyx_t_3)) { + PyObject *__pyx_temp[2] = {__pyx_t_4, __pyx_t_1}; + __pyx_t_2 = __Pyx_PyFunction_FastCall(__pyx_t_3, __pyx_temp+1-1, 1+1); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 99, __pyx_L1_error) + __Pyx_XDECREF(__pyx_t_4); __pyx_t_4 = 0; + __Pyx_GOTREF(__pyx_t_2); __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; } else #endif #if CYTHON_FAST_PYCCALL - if (__Pyx_PyFastCFunction_Check(__pyx_t_4)) { - PyObject *__pyx_temp[2] = {__pyx_t_15, __pyx_t_1}; - __pyx_t_5 = __Pyx_PyCFunction_FastCall(__pyx_t_4, __pyx_temp+1-1, 1+1); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 99, __pyx_L1_error) - __Pyx_XDECREF(__pyx_t_15); __pyx_t_15 = 0; - __Pyx_GOTREF(__pyx_t_5); + if (__Pyx_PyFastCFunction_Check(__pyx_t_3)) { + PyObject *__pyx_temp[2] = {__pyx_t_4, __pyx_t_1}; + __pyx_t_2 = __Pyx_PyCFunction_FastCall(__pyx_t_3, __pyx_temp+1-1, 1+1); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 99, __pyx_L1_error) + __Pyx_XDECREF(__pyx_t_4); __pyx_t_4 = 0; + __Pyx_GOTREF(__pyx_t_2); __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; } else #endif { - __pyx_t_2 = PyTuple_New(1+1); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 99, __pyx_L1_error) - __Pyx_GOTREF(__pyx_t_2); - __Pyx_GIVEREF(__pyx_t_15); PyTuple_SET_ITEM(__pyx_t_2, 0, __pyx_t_15); __pyx_t_15 = NULL; + __pyx_t_14 = PyTuple_New(1+1); if (unlikely(!__pyx_t_14)) __PYX_ERR(0, 99, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_14); + __Pyx_GIVEREF(__pyx_t_4); PyTuple_SET_ITEM(__pyx_t_14, 0, __pyx_t_4); __pyx_t_4 = NULL; __Pyx_GIVEREF(__pyx_t_1); - PyTuple_SET_ITEM(__pyx_t_2, 0+1, __pyx_t_1); + PyTuple_SET_ITEM(__pyx_t_14, 0+1, __pyx_t_1); __pyx_t_1 = 0; - __pyx_t_5 = __Pyx_PyObject_Call(__pyx_t_4, __pyx_t_2, NULL); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 99, __pyx_L1_error) - __Pyx_GOTREF(__pyx_t_5); - __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; + __pyx_t_2 = __Pyx_PyObject_Call(__pyx_t_3, __pyx_t_14, NULL); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 99, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_2); + __Pyx_DECREF(__pyx_t_14); __pyx_t_14 = 0; } } - __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0; - __Pyx_XDECREF_SET(__pyx_v_Node, __pyx_t_5); - __pyx_t_5 = 0; + __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; + __Pyx_XDECREF_SET(__pyx_v_Node, __pyx_t_2); + __pyx_t_2 = 0; - /* "CAStar.pyx":100 + /* "CAStar/CAStar.pyx":100 * * Node = graph.GetNode(NodeID) * tScore = g[current]+ Node.Get_Cost() # <<<<<<<<<<<<<< * if tScore >= g[NodeID]: * continue */ - __pyx_t_5 = __Pyx_PyInt_From_int(__pyx_v_current); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 100, __pyx_L1_error) - __Pyx_GOTREF(__pyx_t_5); - __pyx_t_4 = __Pyx_PyDict_GetItem(__pyx_v_g, __pyx_t_5); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 100, __pyx_L1_error) - __Pyx_GOTREF(__pyx_t_4); - __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0; - __pyx_t_2 = __Pyx_PyObject_GetAttrStr(__pyx_v_Node, __pyx_n_s_Get_Cost); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 100, __pyx_L1_error) + __pyx_t_2 = __Pyx_PyInt_From_int(__pyx_v_current); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 100, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_2); + __pyx_t_3 = __Pyx_PyDict_GetItem(__pyx_v_g, __pyx_t_2); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 100, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_3); + __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; + __pyx_t_14 = __Pyx_PyObject_GetAttrStr(__pyx_v_Node, __pyx_n_s_Get_Cost); if (unlikely(!__pyx_t_14)) __PYX_ERR(0, 100, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_14); __pyx_t_1 = NULL; - if (CYTHON_UNPACK_METHODS && likely(PyMethod_Check(__pyx_t_2))) { - __pyx_t_1 = PyMethod_GET_SELF(__pyx_t_2); + if (CYTHON_UNPACK_METHODS && likely(PyMethod_Check(__pyx_t_14))) { + __pyx_t_1 = PyMethod_GET_SELF(__pyx_t_14); if (likely(__pyx_t_1)) { - PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_2); + PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_14); __Pyx_INCREF(__pyx_t_1); __Pyx_INCREF(function); - __Pyx_DECREF_SET(__pyx_t_2, function); + __Pyx_DECREF_SET(__pyx_t_14, function); } } if (__pyx_t_1) { - __pyx_t_5 = __Pyx_PyObject_CallOneArg(__pyx_t_2, __pyx_t_1); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 100, __pyx_L1_error) + __pyx_t_2 = __Pyx_PyObject_CallOneArg(__pyx_t_14, __pyx_t_1); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 100, __pyx_L1_error) __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; } else { - __pyx_t_5 = __Pyx_PyObject_CallNoArg(__pyx_t_2); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 100, __pyx_L1_error) + __pyx_t_2 = __Pyx_PyObject_CallNoArg(__pyx_t_14); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 100, __pyx_L1_error) } - __Pyx_GOTREF(__pyx_t_5); - __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; - __pyx_t_2 = PyNumber_Add(__pyx_t_4, __pyx_t_5); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 100, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_2); - __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0; - __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0; - __pyx_t_11 = __Pyx_PyInt_As_int(__pyx_t_2); if (unlikely((__pyx_t_11 == (int)-1) && PyErr_Occurred())) __PYX_ERR(0, 100, __pyx_L1_error) + __Pyx_DECREF(__pyx_t_14); __pyx_t_14 = 0; + __pyx_t_14 = PyNumber_Add(__pyx_t_3, __pyx_t_2); if (unlikely(!__pyx_t_14)) __PYX_ERR(0, 100, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_14); + __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; + __pyx_t_11 = __Pyx_PyInt_As_int(__pyx_t_14); if (unlikely((__pyx_t_11 == (int)-1) && PyErr_Occurred())) __PYX_ERR(0, 100, __pyx_L1_error) + __Pyx_DECREF(__pyx_t_14); __pyx_t_14 = 0; __pyx_v_tScore = __pyx_t_11; - /* "CAStar.pyx":101 + /* "CAStar/CAStar.pyx":101 * Node = graph.GetNode(NodeID) * tScore = g[current]+ Node.Get_Cost() * if tScore >= g[NodeID]: # <<<<<<<<<<<<<< * continue * cameFrom[NodeID] = current */ - __pyx_t_2 = __Pyx_PyInt_From_int(__pyx_v_tScore); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 101, __pyx_L1_error) + __pyx_t_14 = __Pyx_PyInt_From_int(__pyx_v_tScore); if (unlikely(!__pyx_t_14)) __PYX_ERR(0, 101, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_14); + __pyx_t_2 = __Pyx_PyInt_From_int(__pyx_v_NodeID); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 101, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_2); - __pyx_t_5 = __Pyx_PyInt_From_int(__pyx_v_NodeID); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 101, __pyx_L1_error) - __Pyx_GOTREF(__pyx_t_5); - __pyx_t_4 = __Pyx_PyDict_GetItem(__pyx_v_g, __pyx_t_5); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 101, __pyx_L1_error) - __Pyx_GOTREF(__pyx_t_4); - __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0; - __pyx_t_5 = PyObject_RichCompare(__pyx_t_2, __pyx_t_4, Py_GE); __Pyx_XGOTREF(__pyx_t_5); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 101, __pyx_L1_error) + __pyx_t_3 = __Pyx_PyDict_GetItem(__pyx_v_g, __pyx_t_2); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 101, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_3); + __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; + __pyx_t_2 = PyObject_RichCompare(__pyx_t_14, __pyx_t_3, Py_GE); __Pyx_XGOTREF(__pyx_t_2); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 101, __pyx_L1_error) + __Pyx_DECREF(__pyx_t_14); __pyx_t_14 = 0; + __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; + __pyx_t_13 = __Pyx_PyObject_IsTrue(__pyx_t_2); if (unlikely(__pyx_t_13 < 0)) __PYX_ERR(0, 101, __pyx_L1_error) __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; - __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0; - __pyx_t_13 = __Pyx_PyObject_IsTrue(__pyx_t_5); if (unlikely(__pyx_t_13 < 0)) __PYX_ERR(0, 101, __pyx_L1_error) - __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0; if (__pyx_t_13) { - /* "CAStar.pyx":102 + /* "CAStar/CAStar.pyx":102 * tScore = g[current]+ Node.Get_Cost() * if tScore >= g[NodeID]: * continue # <<<<<<<<<<<<<< @@ -2597,7 +2609,7 @@ static PyObject *__pyx_pf_6CAStar_AStarPQ(CYTHON_UNUSED PyObject *__pyx_self, Py */ goto __pyx_L6_continue; - /* "CAStar.pyx":101 + /* "CAStar/CAStar.pyx":101 * Node = graph.GetNode(NodeID) * tScore = g[current]+ Node.Get_Cost() * if tScore >= g[NodeID]: # <<<<<<<<<<<<<< @@ -2606,131 +2618,131 @@ static PyObject *__pyx_pf_6CAStar_AStarPQ(CYTHON_UNUSED PyObject *__pyx_self, Py */ } - /* "CAStar.pyx":103 + /* "CAStar/CAStar.pyx":103 * if tScore >= g[NodeID]: * continue * cameFrom[NodeID] = current # <<<<<<<<<<<<<< * g[NodeID] = tScore * fp.remove((f[NodeID],NodeID)) */ - __pyx_t_5 = __Pyx_PyInt_From_int(__pyx_v_current); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 103, __pyx_L1_error) - __Pyx_GOTREF(__pyx_t_5); - __pyx_t_4 = __Pyx_PyInt_From_int(__pyx_v_NodeID); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 103, __pyx_L1_error) - __Pyx_GOTREF(__pyx_t_4); - if (unlikely(PyDict_SetItem(__pyx_v_cameFrom, __pyx_t_4, __pyx_t_5) < 0)) __PYX_ERR(0, 103, __pyx_L1_error) - __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0; - __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0; + __pyx_t_2 = __Pyx_PyInt_From_int(__pyx_v_current); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 103, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_2); + __pyx_t_3 = __Pyx_PyInt_From_int(__pyx_v_NodeID); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 103, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_3); + if (unlikely(PyDict_SetItem(__pyx_v_cameFrom, __pyx_t_3, __pyx_t_2) < 0)) __PYX_ERR(0, 103, __pyx_L1_error) + __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; + __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; - /* "CAStar.pyx":104 + /* "CAStar/CAStar.pyx":104 * continue * cameFrom[NodeID] = current * g[NodeID] = tScore # <<<<<<<<<<<<<< * fp.remove((f[NodeID],NodeID)) * fTemp = g[NodeID] + EstimateDistance(NodeID,target,xCount,yCount,zCount,xSize,ySize,zSize) */ - __pyx_t_5 = __Pyx_PyInt_From_int(__pyx_v_tScore); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 104, __pyx_L1_error) - __Pyx_GOTREF(__pyx_t_5); - __pyx_t_4 = __Pyx_PyInt_From_int(__pyx_v_NodeID); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 104, __pyx_L1_error) - __Pyx_GOTREF(__pyx_t_4); - if (unlikely(PyDict_SetItem(__pyx_v_g, __pyx_t_4, __pyx_t_5) < 0)) __PYX_ERR(0, 104, __pyx_L1_error) - __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0; - __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0; + __pyx_t_2 = __Pyx_PyInt_From_int(__pyx_v_tScore); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 104, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_2); + __pyx_t_3 = __Pyx_PyInt_From_int(__pyx_v_NodeID); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 104, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_3); + if (unlikely(PyDict_SetItem(__pyx_v_g, __pyx_t_3, __pyx_t_2) < 0)) __PYX_ERR(0, 104, __pyx_L1_error) + __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; + __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; - /* "CAStar.pyx":105 + /* "CAStar/CAStar.pyx":105 * cameFrom[NodeID] = current * g[NodeID] = tScore * fp.remove((f[NodeID],NodeID)) # <<<<<<<<<<<<<< * fTemp = g[NodeID] + EstimateDistance(NodeID,target,xCount,yCount,zCount,xSize,ySize,zSize) * f[NodeID] = fTemp */ - __pyx_t_4 = __Pyx_PyObject_GetAttrStr(__pyx_v_fp, __pyx_n_s_remove); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 105, __pyx_L1_error) - __Pyx_GOTREF(__pyx_t_4); - __pyx_t_2 = __Pyx_PyInt_From_int(__pyx_v_NodeID); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 105, __pyx_L1_error) - __Pyx_GOTREF(__pyx_t_2); - __pyx_t_1 = __Pyx_PyDict_GetItem(__pyx_v_f, __pyx_t_2); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 105, __pyx_L1_error) + __pyx_t_3 = __Pyx_PyObject_GetAttrStr(__pyx_v_fp, __pyx_n_s_remove); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 105, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_3); + __pyx_t_14 = __Pyx_PyInt_From_int(__pyx_v_NodeID); if (unlikely(!__pyx_t_14)) __PYX_ERR(0, 105, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_14); + __pyx_t_1 = __Pyx_PyDict_GetItem(__pyx_v_f, __pyx_t_14); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 105, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_1); - __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; - __pyx_t_2 = __Pyx_PyInt_From_int(__pyx_v_NodeID); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 105, __pyx_L1_error) - __Pyx_GOTREF(__pyx_t_2); - __pyx_t_15 = PyTuple_New(2); if (unlikely(!__pyx_t_15)) __PYX_ERR(0, 105, __pyx_L1_error) - __Pyx_GOTREF(__pyx_t_15); + __Pyx_DECREF(__pyx_t_14); __pyx_t_14 = 0; + __pyx_t_14 = __Pyx_PyInt_From_int(__pyx_v_NodeID); if (unlikely(!__pyx_t_14)) __PYX_ERR(0, 105, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_14); + __pyx_t_4 = PyTuple_New(2); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 105, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_4); __Pyx_GIVEREF(__pyx_t_1); - PyTuple_SET_ITEM(__pyx_t_15, 0, __pyx_t_1); - __Pyx_GIVEREF(__pyx_t_2); - PyTuple_SET_ITEM(__pyx_t_15, 1, __pyx_t_2); + PyTuple_SET_ITEM(__pyx_t_4, 0, __pyx_t_1); + __Pyx_GIVEREF(__pyx_t_14); + PyTuple_SET_ITEM(__pyx_t_4, 1, __pyx_t_14); __pyx_t_1 = 0; - __pyx_t_2 = 0; - __pyx_t_2 = NULL; - if (CYTHON_UNPACK_METHODS && likely(PyMethod_Check(__pyx_t_4))) { - __pyx_t_2 = PyMethod_GET_SELF(__pyx_t_4); - if (likely(__pyx_t_2)) { - PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_4); - __Pyx_INCREF(__pyx_t_2); + __pyx_t_14 = 0; + __pyx_t_14 = NULL; + if (CYTHON_UNPACK_METHODS && likely(PyMethod_Check(__pyx_t_3))) { + __pyx_t_14 = PyMethod_GET_SELF(__pyx_t_3); + if (likely(__pyx_t_14)) { + PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_3); + __Pyx_INCREF(__pyx_t_14); __Pyx_INCREF(function); - __Pyx_DECREF_SET(__pyx_t_4, function); + __Pyx_DECREF_SET(__pyx_t_3, function); } } - if (!__pyx_t_2) { - __pyx_t_5 = __Pyx_PyObject_CallOneArg(__pyx_t_4, __pyx_t_15); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 105, __pyx_L1_error) - __Pyx_DECREF(__pyx_t_15); __pyx_t_15 = 0; - __Pyx_GOTREF(__pyx_t_5); + if (!__pyx_t_14) { + __pyx_t_2 = __Pyx_PyObject_CallOneArg(__pyx_t_3, __pyx_t_4); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 105, __pyx_L1_error) + __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0; + __Pyx_GOTREF(__pyx_t_2); } else { #if CYTHON_FAST_PYCALL - if (PyFunction_Check(__pyx_t_4)) { - PyObject *__pyx_temp[2] = {__pyx_t_2, __pyx_t_15}; - __pyx_t_5 = __Pyx_PyFunction_FastCall(__pyx_t_4, __pyx_temp+1-1, 1+1); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 105, __pyx_L1_error) - __Pyx_XDECREF(__pyx_t_2); __pyx_t_2 = 0; - __Pyx_GOTREF(__pyx_t_5); - __Pyx_DECREF(__pyx_t_15); __pyx_t_15 = 0; + if (PyFunction_Check(__pyx_t_3)) { + PyObject *__pyx_temp[2] = {__pyx_t_14, __pyx_t_4}; + __pyx_t_2 = __Pyx_PyFunction_FastCall(__pyx_t_3, __pyx_temp+1-1, 1+1); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 105, __pyx_L1_error) + __Pyx_XDECREF(__pyx_t_14); __pyx_t_14 = 0; + __Pyx_GOTREF(__pyx_t_2); + __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0; } else #endif #if CYTHON_FAST_PYCCALL - if (__Pyx_PyFastCFunction_Check(__pyx_t_4)) { - PyObject *__pyx_temp[2] = {__pyx_t_2, __pyx_t_15}; - __pyx_t_5 = __Pyx_PyCFunction_FastCall(__pyx_t_4, __pyx_temp+1-1, 1+1); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 105, __pyx_L1_error) - __Pyx_XDECREF(__pyx_t_2); __pyx_t_2 = 0; - __Pyx_GOTREF(__pyx_t_5); - __Pyx_DECREF(__pyx_t_15); __pyx_t_15 = 0; + if (__Pyx_PyFastCFunction_Check(__pyx_t_3)) { + PyObject *__pyx_temp[2] = {__pyx_t_14, __pyx_t_4}; + __pyx_t_2 = __Pyx_PyCFunction_FastCall(__pyx_t_3, __pyx_temp+1-1, 1+1); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 105, __pyx_L1_error) + __Pyx_XDECREF(__pyx_t_14); __pyx_t_14 = 0; + __Pyx_GOTREF(__pyx_t_2); + __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0; } else #endif { __pyx_t_1 = PyTuple_New(1+1); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 105, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_1); - __Pyx_GIVEREF(__pyx_t_2); PyTuple_SET_ITEM(__pyx_t_1, 0, __pyx_t_2); __pyx_t_2 = NULL; - __Pyx_GIVEREF(__pyx_t_15); - PyTuple_SET_ITEM(__pyx_t_1, 0+1, __pyx_t_15); - __pyx_t_15 = 0; - __pyx_t_5 = __Pyx_PyObject_Call(__pyx_t_4, __pyx_t_1, NULL); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 105, __pyx_L1_error) - __Pyx_GOTREF(__pyx_t_5); + __Pyx_GIVEREF(__pyx_t_14); PyTuple_SET_ITEM(__pyx_t_1, 0, __pyx_t_14); __pyx_t_14 = NULL; + __Pyx_GIVEREF(__pyx_t_4); + PyTuple_SET_ITEM(__pyx_t_1, 0+1, __pyx_t_4); + __pyx_t_4 = 0; + __pyx_t_2 = __Pyx_PyObject_Call(__pyx_t_3, __pyx_t_1, NULL); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 105, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_2); __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; } } - __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0; - __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0; + __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; + __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; - /* "CAStar.pyx":106 + /* "CAStar/CAStar.pyx":106 * g[NodeID] = tScore * fp.remove((f[NodeID],NodeID)) * fTemp = g[NodeID] + EstimateDistance(NodeID,target,xCount,yCount,zCount,xSize,ySize,zSize) # <<<<<<<<<<<<<< * f[NodeID] = fTemp * fp.put((fTemp,NodeID)) */ - __pyx_t_5 = __Pyx_PyInt_From_int(__pyx_v_NodeID); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 106, __pyx_L1_error) - __Pyx_GOTREF(__pyx_t_5); - __pyx_t_4 = __Pyx_PyDict_GetItem(__pyx_v_g, __pyx_t_5); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 106, __pyx_L1_error) - __Pyx_GOTREF(__pyx_t_4); - __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0; - __pyx_t_5 = PyFloat_FromDouble(__pyx_f_6CAStar_EstimateDistance(__pyx_v_NodeID, __pyx_v_target, __pyx_v_xCount, __pyx_v_yCount, __pyx_v_zCount, __pyx_v_xSize, __pyx_v_ySize, __pyx_v_zSize)); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 106, __pyx_L1_error) - __Pyx_GOTREF(__pyx_t_5); - __pyx_t_1 = PyNumber_Add(__pyx_t_4, __pyx_t_5); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 106, __pyx_L1_error) + __pyx_t_2 = __Pyx_PyInt_From_int(__pyx_v_NodeID); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 106, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_2); + __pyx_t_3 = __Pyx_PyDict_GetItem(__pyx_v_g, __pyx_t_2); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 106, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_3); + __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; + __pyx_t_2 = PyFloat_FromDouble(__pyx_f_6CAStar_6CAStar_EstimateDistance(__pyx_v_NodeID, __pyx_v_target, __pyx_v_xCount, __pyx_v_yCount, __pyx_v_zCount, __pyx_v_xSize, __pyx_v_ySize, __pyx_v_zSize)); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 106, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_2); + __pyx_t_1 = PyNumber_Add(__pyx_t_3, __pyx_t_2); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 106, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_1); - __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0; - __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0; + __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; + __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; __pyx_t_8 = __pyx_PyFloat_AsFloat(__pyx_t_1); if (unlikely((__pyx_t_8 == (float)-1) && PyErr_Occurred())) __PYX_ERR(0, 106, __pyx_L1_error) __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; __pyx_v_fTemp = __pyx_t_8; - /* "CAStar.pyx":107 + /* "CAStar/CAStar.pyx":107 * fp.remove((f[NodeID],NodeID)) * fTemp = g[NodeID] + EstimateDistance(NodeID,target,xCount,yCount,zCount,xSize,ySize,zSize) * f[NodeID] = fTemp # <<<<<<<<<<<<<< @@ -2739,93 +2751,93 @@ static PyObject *__pyx_pf_6CAStar_AStarPQ(CYTHON_UNUSED PyObject *__pyx_self, Py */ __pyx_t_1 = PyFloat_FromDouble(__pyx_v_fTemp); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 107, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_1); - __pyx_t_5 = __Pyx_PyInt_From_int(__pyx_v_NodeID); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 107, __pyx_L1_error) - __Pyx_GOTREF(__pyx_t_5); - if (unlikely(PyDict_SetItem(__pyx_v_f, __pyx_t_5, __pyx_t_1) < 0)) __PYX_ERR(0, 107, __pyx_L1_error) - __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0; + __pyx_t_2 = __Pyx_PyInt_From_int(__pyx_v_NodeID); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 107, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_2); + if (unlikely(PyDict_SetItem(__pyx_v_f, __pyx_t_2, __pyx_t_1) < 0)) __PYX_ERR(0, 107, __pyx_L1_error) + __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; - /* "CAStar.pyx":108 + /* "CAStar/CAStar.pyx":108 * fTemp = g[NodeID] + EstimateDistance(NodeID,target,xCount,yCount,zCount,xSize,ySize,zSize) * f[NodeID] = fTemp * fp.put((fTemp,NodeID)) # <<<<<<<<<<<<<< * * f.pop(current) #These values will not be refered to again since the current NodeID has been moved to the closed set . This therefore reduces memory usage very slightly */ - __pyx_t_5 = __Pyx_PyObject_GetAttrStr(__pyx_v_fp, __pyx_n_s_put); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 108, __pyx_L1_error) - __Pyx_GOTREF(__pyx_t_5); - __pyx_t_4 = PyFloat_FromDouble(__pyx_v_fTemp); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 108, __pyx_L1_error) - __Pyx_GOTREF(__pyx_t_4); - __pyx_t_15 = __Pyx_PyInt_From_int(__pyx_v_NodeID); if (unlikely(!__pyx_t_15)) __PYX_ERR(0, 108, __pyx_L1_error) - __Pyx_GOTREF(__pyx_t_15); - __pyx_t_2 = PyTuple_New(2); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 108, __pyx_L1_error) + __pyx_t_2 = __Pyx_PyObject_GetAttrStr(__pyx_v_fp, __pyx_n_s_put); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 108, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_2); + __pyx_t_3 = PyFloat_FromDouble(__pyx_v_fTemp); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 108, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_3); + __pyx_t_4 = __Pyx_PyInt_From_int(__pyx_v_NodeID); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 108, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_4); + __pyx_t_14 = PyTuple_New(2); if (unlikely(!__pyx_t_14)) __PYX_ERR(0, 108, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_14); + __Pyx_GIVEREF(__pyx_t_3); + PyTuple_SET_ITEM(__pyx_t_14, 0, __pyx_t_3); __Pyx_GIVEREF(__pyx_t_4); - PyTuple_SET_ITEM(__pyx_t_2, 0, __pyx_t_4); - __Pyx_GIVEREF(__pyx_t_15); - PyTuple_SET_ITEM(__pyx_t_2, 1, __pyx_t_15); + PyTuple_SET_ITEM(__pyx_t_14, 1, __pyx_t_4); + __pyx_t_3 = 0; __pyx_t_4 = 0; - __pyx_t_15 = 0; - __pyx_t_15 = NULL; - if (CYTHON_UNPACK_METHODS && likely(PyMethod_Check(__pyx_t_5))) { - __pyx_t_15 = PyMethod_GET_SELF(__pyx_t_5); - if (likely(__pyx_t_15)) { - PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_5); - __Pyx_INCREF(__pyx_t_15); + __pyx_t_4 = NULL; + if (CYTHON_UNPACK_METHODS && likely(PyMethod_Check(__pyx_t_2))) { + __pyx_t_4 = PyMethod_GET_SELF(__pyx_t_2); + if (likely(__pyx_t_4)) { + PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_2); + __Pyx_INCREF(__pyx_t_4); __Pyx_INCREF(function); - __Pyx_DECREF_SET(__pyx_t_5, function); + __Pyx_DECREF_SET(__pyx_t_2, function); } } - if (!__pyx_t_15) { - __pyx_t_1 = __Pyx_PyObject_CallOneArg(__pyx_t_5, __pyx_t_2); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 108, __pyx_L1_error) - __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; + if (!__pyx_t_4) { + __pyx_t_1 = __Pyx_PyObject_CallOneArg(__pyx_t_2, __pyx_t_14); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 108, __pyx_L1_error) + __Pyx_DECREF(__pyx_t_14); __pyx_t_14 = 0; __Pyx_GOTREF(__pyx_t_1); } else { #if CYTHON_FAST_PYCALL - if (PyFunction_Check(__pyx_t_5)) { - PyObject *__pyx_temp[2] = {__pyx_t_15, __pyx_t_2}; - __pyx_t_1 = __Pyx_PyFunction_FastCall(__pyx_t_5, __pyx_temp+1-1, 1+1); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 108, __pyx_L1_error) - __Pyx_XDECREF(__pyx_t_15); __pyx_t_15 = 0; + if (PyFunction_Check(__pyx_t_2)) { + PyObject *__pyx_temp[2] = {__pyx_t_4, __pyx_t_14}; + __pyx_t_1 = __Pyx_PyFunction_FastCall(__pyx_t_2, __pyx_temp+1-1, 1+1); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 108, __pyx_L1_error) + __Pyx_XDECREF(__pyx_t_4); __pyx_t_4 = 0; __Pyx_GOTREF(__pyx_t_1); - __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; + __Pyx_DECREF(__pyx_t_14); __pyx_t_14 = 0; } else #endif #if CYTHON_FAST_PYCCALL - if (__Pyx_PyFastCFunction_Check(__pyx_t_5)) { - PyObject *__pyx_temp[2] = {__pyx_t_15, __pyx_t_2}; - __pyx_t_1 = __Pyx_PyCFunction_FastCall(__pyx_t_5, __pyx_temp+1-1, 1+1); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 108, __pyx_L1_error) - __Pyx_XDECREF(__pyx_t_15); __pyx_t_15 = 0; + if (__Pyx_PyFastCFunction_Check(__pyx_t_2)) { + PyObject *__pyx_temp[2] = {__pyx_t_4, __pyx_t_14}; + __pyx_t_1 = __Pyx_PyCFunction_FastCall(__pyx_t_2, __pyx_temp+1-1, 1+1); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 108, __pyx_L1_error) + __Pyx_XDECREF(__pyx_t_4); __pyx_t_4 = 0; __Pyx_GOTREF(__pyx_t_1); - __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; + __Pyx_DECREF(__pyx_t_14); __pyx_t_14 = 0; } else #endif { - __pyx_t_4 = PyTuple_New(1+1); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 108, __pyx_L1_error) - __Pyx_GOTREF(__pyx_t_4); - __Pyx_GIVEREF(__pyx_t_15); PyTuple_SET_ITEM(__pyx_t_4, 0, __pyx_t_15); __pyx_t_15 = NULL; - __Pyx_GIVEREF(__pyx_t_2); - PyTuple_SET_ITEM(__pyx_t_4, 0+1, __pyx_t_2); - __pyx_t_2 = 0; - __pyx_t_1 = __Pyx_PyObject_Call(__pyx_t_5, __pyx_t_4, NULL); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 108, __pyx_L1_error) + __pyx_t_3 = PyTuple_New(1+1); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 108, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_3); + __Pyx_GIVEREF(__pyx_t_4); PyTuple_SET_ITEM(__pyx_t_3, 0, __pyx_t_4); __pyx_t_4 = NULL; + __Pyx_GIVEREF(__pyx_t_14); + PyTuple_SET_ITEM(__pyx_t_3, 0+1, __pyx_t_14); + __pyx_t_14 = 0; + __pyx_t_1 = __Pyx_PyObject_Call(__pyx_t_2, __pyx_t_3, NULL); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 108, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_1); - __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0; + __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; } } - __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0; + __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; - /* "CAStar.pyx":90 + /* "CAStar/CAStar.pyx":90 * - * FriendList = graph.GetNode(current).Friends + * FriendList = graph.GetNode(current).Get_Friends() * for NodeID in FriendList: # <<<<<<<<<<<<<< * if NodeID in ClosedSet: * continue */ __pyx_L6_continue:; } - __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; + __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0; - /* "CAStar.pyx":110 + /* "CAStar/CAStar.pyx":110 * fp.put((fTemp,NodeID)) * * f.pop(current) #These values will not be refered to again since the current NodeID has been moved to the closed set . This therefore reduces memory usage very slightly # <<<<<<<<<<<<<< @@ -2834,57 +2846,57 @@ static PyObject *__pyx_pf_6CAStar_AStarPQ(CYTHON_UNUSED PyObject *__pyx_self, Py */ __pyx_t_1 = __Pyx_PyObject_GetAttrStr(__pyx_v_f, __pyx_n_s_pop); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 110, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_1); - __pyx_t_5 = __Pyx_PyInt_From_int(__pyx_v_current); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 110, __pyx_L1_error) - __Pyx_GOTREF(__pyx_t_5); - __pyx_t_4 = NULL; + __pyx_t_2 = __Pyx_PyInt_From_int(__pyx_v_current); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 110, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_2); + __pyx_t_3 = NULL; if (CYTHON_UNPACK_METHODS && likely(PyMethod_Check(__pyx_t_1))) { - __pyx_t_4 = PyMethod_GET_SELF(__pyx_t_1); - if (likely(__pyx_t_4)) { + __pyx_t_3 = PyMethod_GET_SELF(__pyx_t_1); + if (likely(__pyx_t_3)) { PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_1); - __Pyx_INCREF(__pyx_t_4); + __Pyx_INCREF(__pyx_t_3); __Pyx_INCREF(function); __Pyx_DECREF_SET(__pyx_t_1, function); } } - if (!__pyx_t_4) { - __pyx_t_3 = __Pyx_PyObject_CallOneArg(__pyx_t_1, __pyx_t_5); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 110, __pyx_L1_error) - __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0; - __Pyx_GOTREF(__pyx_t_3); + if (!__pyx_t_3) { + __pyx_t_5 = __Pyx_PyObject_CallOneArg(__pyx_t_1, __pyx_t_2); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 110, __pyx_L1_error) + __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; + __Pyx_GOTREF(__pyx_t_5); } else { #if CYTHON_FAST_PYCALL if (PyFunction_Check(__pyx_t_1)) { - PyObject *__pyx_temp[2] = {__pyx_t_4, __pyx_t_5}; - __pyx_t_3 = __Pyx_PyFunction_FastCall(__pyx_t_1, __pyx_temp+1-1, 1+1); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 110, __pyx_L1_error) - __Pyx_XDECREF(__pyx_t_4); __pyx_t_4 = 0; - __Pyx_GOTREF(__pyx_t_3); - __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0; + PyObject *__pyx_temp[2] = {__pyx_t_3, __pyx_t_2}; + __pyx_t_5 = __Pyx_PyFunction_FastCall(__pyx_t_1, __pyx_temp+1-1, 1+1); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 110, __pyx_L1_error) + __Pyx_XDECREF(__pyx_t_3); __pyx_t_3 = 0; + __Pyx_GOTREF(__pyx_t_5); + __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; } else #endif #if CYTHON_FAST_PYCCALL if (__Pyx_PyFastCFunction_Check(__pyx_t_1)) { - PyObject *__pyx_temp[2] = {__pyx_t_4, __pyx_t_5}; - __pyx_t_3 = __Pyx_PyCFunction_FastCall(__pyx_t_1, __pyx_temp+1-1, 1+1); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 110, __pyx_L1_error) - __Pyx_XDECREF(__pyx_t_4); __pyx_t_4 = 0; - __Pyx_GOTREF(__pyx_t_3); - __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0; + PyObject *__pyx_temp[2] = {__pyx_t_3, __pyx_t_2}; + __pyx_t_5 = __Pyx_PyCFunction_FastCall(__pyx_t_1, __pyx_temp+1-1, 1+1); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 110, __pyx_L1_error) + __Pyx_XDECREF(__pyx_t_3); __pyx_t_3 = 0; + __Pyx_GOTREF(__pyx_t_5); + __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; } else #endif { - __pyx_t_2 = PyTuple_New(1+1); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 110, __pyx_L1_error) - __Pyx_GOTREF(__pyx_t_2); - __Pyx_GIVEREF(__pyx_t_4); PyTuple_SET_ITEM(__pyx_t_2, 0, __pyx_t_4); __pyx_t_4 = NULL; - __Pyx_GIVEREF(__pyx_t_5); - PyTuple_SET_ITEM(__pyx_t_2, 0+1, __pyx_t_5); - __pyx_t_5 = 0; - __pyx_t_3 = __Pyx_PyObject_Call(__pyx_t_1, __pyx_t_2, NULL); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 110, __pyx_L1_error) - __Pyx_GOTREF(__pyx_t_3); - __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; + __pyx_t_14 = PyTuple_New(1+1); if (unlikely(!__pyx_t_14)) __PYX_ERR(0, 110, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_14); + __Pyx_GIVEREF(__pyx_t_3); PyTuple_SET_ITEM(__pyx_t_14, 0, __pyx_t_3); __pyx_t_3 = NULL; + __Pyx_GIVEREF(__pyx_t_2); + PyTuple_SET_ITEM(__pyx_t_14, 0+1, __pyx_t_2); + __pyx_t_2 = 0; + __pyx_t_5 = __Pyx_PyObject_Call(__pyx_t_1, __pyx_t_14, NULL); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 110, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_5); + __Pyx_DECREF(__pyx_t_14); __pyx_t_14 = 0; } } __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; - __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; + __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0; - /* "CAStar.pyx":111 + /* "CAStar/CAStar.pyx":111 * * f.pop(current) #These values will not be refered to again since the current NodeID has been moved to the closed set . This therefore reduces memory usage very slightly * g.pop(current) # <<<<<<<<<<<<<< @@ -2893,59 +2905,59 @@ static PyObject *__pyx_pf_6CAStar_AStarPQ(CYTHON_UNUSED PyObject *__pyx_self, Py */ __pyx_t_1 = __Pyx_PyObject_GetAttrStr(__pyx_v_g, __pyx_n_s_pop); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 111, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_1); - __pyx_t_2 = __Pyx_PyInt_From_int(__pyx_v_current); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 111, __pyx_L1_error) - __Pyx_GOTREF(__pyx_t_2); - __pyx_t_5 = NULL; + __pyx_t_14 = __Pyx_PyInt_From_int(__pyx_v_current); if (unlikely(!__pyx_t_14)) __PYX_ERR(0, 111, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_14); + __pyx_t_2 = NULL; if (CYTHON_UNPACK_METHODS && likely(PyMethod_Check(__pyx_t_1))) { - __pyx_t_5 = PyMethod_GET_SELF(__pyx_t_1); - if (likely(__pyx_t_5)) { + __pyx_t_2 = PyMethod_GET_SELF(__pyx_t_1); + if (likely(__pyx_t_2)) { PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_1); - __Pyx_INCREF(__pyx_t_5); + __Pyx_INCREF(__pyx_t_2); __Pyx_INCREF(function); __Pyx_DECREF_SET(__pyx_t_1, function); } } - if (!__pyx_t_5) { - __pyx_t_3 = __Pyx_PyObject_CallOneArg(__pyx_t_1, __pyx_t_2); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 111, __pyx_L1_error) - __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; - __Pyx_GOTREF(__pyx_t_3); + if (!__pyx_t_2) { + __pyx_t_5 = __Pyx_PyObject_CallOneArg(__pyx_t_1, __pyx_t_14); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 111, __pyx_L1_error) + __Pyx_DECREF(__pyx_t_14); __pyx_t_14 = 0; + __Pyx_GOTREF(__pyx_t_5); } else { #if CYTHON_FAST_PYCALL if (PyFunction_Check(__pyx_t_1)) { - PyObject *__pyx_temp[2] = {__pyx_t_5, __pyx_t_2}; - __pyx_t_3 = __Pyx_PyFunction_FastCall(__pyx_t_1, __pyx_temp+1-1, 1+1); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 111, __pyx_L1_error) - __Pyx_XDECREF(__pyx_t_5); __pyx_t_5 = 0; - __Pyx_GOTREF(__pyx_t_3); - __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; + PyObject *__pyx_temp[2] = {__pyx_t_2, __pyx_t_14}; + __pyx_t_5 = __Pyx_PyFunction_FastCall(__pyx_t_1, __pyx_temp+1-1, 1+1); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 111, __pyx_L1_error) + __Pyx_XDECREF(__pyx_t_2); __pyx_t_2 = 0; + __Pyx_GOTREF(__pyx_t_5); + __Pyx_DECREF(__pyx_t_14); __pyx_t_14 = 0; } else #endif #if CYTHON_FAST_PYCCALL if (__Pyx_PyFastCFunction_Check(__pyx_t_1)) { - PyObject *__pyx_temp[2] = {__pyx_t_5, __pyx_t_2}; - __pyx_t_3 = __Pyx_PyCFunction_FastCall(__pyx_t_1, __pyx_temp+1-1, 1+1); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 111, __pyx_L1_error) - __Pyx_XDECREF(__pyx_t_5); __pyx_t_5 = 0; - __Pyx_GOTREF(__pyx_t_3); - __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; + PyObject *__pyx_temp[2] = {__pyx_t_2, __pyx_t_14}; + __pyx_t_5 = __Pyx_PyCFunction_FastCall(__pyx_t_1, __pyx_temp+1-1, 1+1); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 111, __pyx_L1_error) + __Pyx_XDECREF(__pyx_t_2); __pyx_t_2 = 0; + __Pyx_GOTREF(__pyx_t_5); + __Pyx_DECREF(__pyx_t_14); __pyx_t_14 = 0; } else #endif { - __pyx_t_4 = PyTuple_New(1+1); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 111, __pyx_L1_error) - __Pyx_GOTREF(__pyx_t_4); - __Pyx_GIVEREF(__pyx_t_5); PyTuple_SET_ITEM(__pyx_t_4, 0, __pyx_t_5); __pyx_t_5 = NULL; - __Pyx_GIVEREF(__pyx_t_2); - PyTuple_SET_ITEM(__pyx_t_4, 0+1, __pyx_t_2); - __pyx_t_2 = 0; - __pyx_t_3 = __Pyx_PyObject_Call(__pyx_t_1, __pyx_t_4, NULL); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 111, __pyx_L1_error) + __pyx_t_3 = PyTuple_New(1+1); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 111, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_3); - __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0; + __Pyx_GIVEREF(__pyx_t_2); PyTuple_SET_ITEM(__pyx_t_3, 0, __pyx_t_2); __pyx_t_2 = NULL; + __Pyx_GIVEREF(__pyx_t_14); + PyTuple_SET_ITEM(__pyx_t_3, 0+1, __pyx_t_14); + __pyx_t_14 = 0; + __pyx_t_5 = __Pyx_PyObject_Call(__pyx_t_1, __pyx_t_3, NULL); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 111, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_5); + __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; } } __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; - __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; + __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0; } __pyx_L4_break:; - /* "CAStar.pyx":112 + /* "CAStar/CAStar.pyx":112 * f.pop(current) #These values will not be refered to again since the current NodeID has been moved to the closed set . This therefore reduces memory usage very slightly * g.pop(current) * EndTime = time.time() # <<<<<<<<<<<<<< @@ -2954,78 +2966,78 @@ static PyObject *__pyx_pf_6CAStar_AStarPQ(CYTHON_UNUSED PyObject *__pyx_self, Py */ __pyx_t_1 = __Pyx_GetModuleGlobalName(__pyx_n_s_time); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 112, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_1); - __pyx_t_4 = __Pyx_PyObject_GetAttrStr(__pyx_t_1, __pyx_n_s_time); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 112, __pyx_L1_error) - __Pyx_GOTREF(__pyx_t_4); + __pyx_t_3 = __Pyx_PyObject_GetAttrStr(__pyx_t_1, __pyx_n_s_time); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 112, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_3); __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; __pyx_t_1 = NULL; - if (CYTHON_UNPACK_METHODS && unlikely(PyMethod_Check(__pyx_t_4))) { - __pyx_t_1 = PyMethod_GET_SELF(__pyx_t_4); + if (CYTHON_UNPACK_METHODS && unlikely(PyMethod_Check(__pyx_t_3))) { + __pyx_t_1 = PyMethod_GET_SELF(__pyx_t_3); if (likely(__pyx_t_1)) { - PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_4); + PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_3); __Pyx_INCREF(__pyx_t_1); __Pyx_INCREF(function); - __Pyx_DECREF_SET(__pyx_t_4, function); + __Pyx_DECREF_SET(__pyx_t_3, function); } } if (__pyx_t_1) { - __pyx_t_3 = __Pyx_PyObject_CallOneArg(__pyx_t_4, __pyx_t_1); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 112, __pyx_L1_error) + __pyx_t_5 = __Pyx_PyObject_CallOneArg(__pyx_t_3, __pyx_t_1); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 112, __pyx_L1_error) __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; } else { - __pyx_t_3 = __Pyx_PyObject_CallNoArg(__pyx_t_4); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 112, __pyx_L1_error) + __pyx_t_5 = __Pyx_PyObject_CallNoArg(__pyx_t_3); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 112, __pyx_L1_error) } - __Pyx_GOTREF(__pyx_t_3); - __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0; - __pyx_v_EndTime = __pyx_t_3; - __pyx_t_3 = 0; + __Pyx_GOTREF(__pyx_t_5); + __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; + __pyx_v_EndTime = __pyx_t_5; + __pyx_t_5 = 0; - /* "CAStar.pyx":113 + /* "CAStar/CAStar.pyx":113 * g.pop(current) * EndTime = time.time() * print("[A* Time] "+str((EndTime-StartTime)*1000)+" Milliseconds."+" Total Expanded:"+str(len(cameFrom))) # <<<<<<<<<<<<<< * if Found: * return FindPath(cameFrom,current) */ - __pyx_t_3 = PyNumber_Subtract(__pyx_v_EndTime, __pyx_v_StartTime); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 113, __pyx_L1_error) + __pyx_t_5 = PyNumber_Subtract(__pyx_v_EndTime, __pyx_v_StartTime); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 113, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_5); + __pyx_t_3 = PyNumber_Multiply(__pyx_t_5, __pyx_int_1000); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 113, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_3); - __pyx_t_4 = PyNumber_Multiply(__pyx_t_3, __pyx_int_1000); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 113, __pyx_L1_error) - __Pyx_GOTREF(__pyx_t_4); - __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; - __pyx_t_3 = PyTuple_New(1); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 113, __pyx_L1_error) + __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0; + __pyx_t_5 = PyTuple_New(1); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 113, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_5); + __Pyx_GIVEREF(__pyx_t_3); + PyTuple_SET_ITEM(__pyx_t_5, 0, __pyx_t_3); + __pyx_t_3 = 0; + __pyx_t_3 = __Pyx_PyObject_Call(((PyObject *)(&PyString_Type)), __pyx_t_5, NULL); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 113, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_3); - __Pyx_GIVEREF(__pyx_t_4); - PyTuple_SET_ITEM(__pyx_t_3, 0, __pyx_t_4); - __pyx_t_4 = 0; - __pyx_t_4 = __Pyx_PyObject_Call(((PyObject *)(&PyString_Type)), __pyx_t_3, NULL); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 113, __pyx_L1_error) - __Pyx_GOTREF(__pyx_t_4); + __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0; + __pyx_t_5 = PyNumber_Add(__pyx_kp_s_A_Time, __pyx_t_3); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 113, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_5); __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; - __pyx_t_3 = PyNumber_Add(__pyx_kp_s_A_Time, __pyx_t_4); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 113, __pyx_L1_error) + __pyx_t_3 = PyNumber_Add(__pyx_t_5, __pyx_kp_s_Milliseconds); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 113, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_3); - __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0; - __pyx_t_4 = PyNumber_Add(__pyx_t_3, __pyx_kp_s_Milliseconds); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 113, __pyx_L1_error) - __Pyx_GOTREF(__pyx_t_4); + __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0; + __pyx_t_5 = PyNumber_Add(__pyx_t_3, __pyx_kp_s_Total_Expanded); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 113, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_5); __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; - __pyx_t_3 = PyNumber_Add(__pyx_t_4, __pyx_kp_s_Total_Expanded); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 113, __pyx_L1_error) - __Pyx_GOTREF(__pyx_t_3); - __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0; __pyx_t_12 = PyDict_Size(__pyx_v_cameFrom); if (unlikely(__pyx_t_12 == -1)) __PYX_ERR(0, 113, __pyx_L1_error) - __pyx_t_4 = PyInt_FromSsize_t(__pyx_t_12); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 113, __pyx_L1_error) - __Pyx_GOTREF(__pyx_t_4); + __pyx_t_3 = PyInt_FromSsize_t(__pyx_t_12); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 113, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_3); __pyx_t_1 = PyTuple_New(1); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 113, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_1); - __Pyx_GIVEREF(__pyx_t_4); - PyTuple_SET_ITEM(__pyx_t_1, 0, __pyx_t_4); - __pyx_t_4 = 0; - __pyx_t_4 = __Pyx_PyObject_Call(((PyObject *)(&PyString_Type)), __pyx_t_1, NULL); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 113, __pyx_L1_error) - __Pyx_GOTREF(__pyx_t_4); + __Pyx_GIVEREF(__pyx_t_3); + PyTuple_SET_ITEM(__pyx_t_1, 0, __pyx_t_3); + __pyx_t_3 = 0; + __pyx_t_3 = __Pyx_PyObject_Call(((PyObject *)(&PyString_Type)), __pyx_t_1, NULL); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 113, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_3); __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; - __pyx_t_1 = PyNumber_Add(__pyx_t_3, __pyx_t_4); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 113, __pyx_L1_error) + __pyx_t_1 = PyNumber_Add(__pyx_t_5, __pyx_t_3); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 113, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_1); + __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0; __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; - __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0; if (__Pyx_PrintOne(0, __pyx_t_1) < 0) __PYX_ERR(0, 113, __pyx_L1_error) __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; - /* "CAStar.pyx":114 + /* "CAStar/CAStar.pyx":114 * EndTime = time.time() * print("[A* Time] "+str((EndTime-StartTime)*1000)+" Milliseconds."+" Total Expanded:"+str(len(cameFrom))) * if Found: # <<<<<<<<<<<<<< @@ -3035,7 +3047,7 @@ static PyObject *__pyx_pf_6CAStar_AStarPQ(CYTHON_UNUSED PyObject *__pyx_self, Py __pyx_t_13 = (__pyx_v_Found != 0); if (__pyx_t_13) { - /* "CAStar.pyx":115 + /* "CAStar/CAStar.pyx":115 * print("[A* Time] "+str((EndTime-StartTime)*1000)+" Milliseconds."+" Total Expanded:"+str(len(cameFrom))) * if Found: * return FindPath(cameFrom,current) # <<<<<<<<<<<<<< @@ -3043,13 +3055,13 @@ static PyObject *__pyx_pf_6CAStar_AStarPQ(CYTHON_UNUSED PyObject *__pyx_self, Py * print("A* Search FAILED. Start:",start,"Target:",target) */ __Pyx_XDECREF(__pyx_r); - __pyx_t_1 = __pyx_f_6CAStar_FindPath(__pyx_v_cameFrom, __pyx_v_current); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 115, __pyx_L1_error) + __pyx_t_1 = __pyx_f_6CAStar_6CAStar_FindPath(__pyx_v_cameFrom, __pyx_v_current); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 115, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_1); __pyx_r = __pyx_t_1; __pyx_t_1 = 0; goto __pyx_L0; - /* "CAStar.pyx":114 + /* "CAStar/CAStar.pyx":114 * EndTime = time.time() * print("[A* Time] "+str((EndTime-StartTime)*1000)+" Milliseconds."+" Total Expanded:"+str(len(cameFrom))) * if Found: # <<<<<<<<<<<<<< @@ -3058,7 +3070,7 @@ static PyObject *__pyx_pf_6CAStar_AStarPQ(CYTHON_UNUSED PyObject *__pyx_self, Py */ } - /* "CAStar.pyx":117 + /* "CAStar/CAStar.pyx":117 * return FindPath(cameFrom,current) * else: * print("A* Search FAILED. Start:",start,"Target:",target) # <<<<<<<<<<<<<< @@ -3068,38 +3080,38 @@ static PyObject *__pyx_pf_6CAStar_AStarPQ(CYTHON_UNUSED PyObject *__pyx_self, Py /*else*/ { __pyx_t_1 = __Pyx_PyInt_From_int(__pyx_v_start); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 117, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_1); - __pyx_t_4 = __Pyx_PyInt_From_int(__pyx_v_target); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 117, __pyx_L1_error) - __Pyx_GOTREF(__pyx_t_4); - __pyx_t_3 = PyTuple_New(4); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 117, __pyx_L1_error) + __pyx_t_3 = __Pyx_PyInt_From_int(__pyx_v_target); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 117, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_3); + __pyx_t_5 = PyTuple_New(4); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 117, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_5); __Pyx_INCREF(__pyx_kp_s_A_Search_FAILED_Start); __Pyx_GIVEREF(__pyx_kp_s_A_Search_FAILED_Start); - PyTuple_SET_ITEM(__pyx_t_3, 0, __pyx_kp_s_A_Search_FAILED_Start); + PyTuple_SET_ITEM(__pyx_t_5, 0, __pyx_kp_s_A_Search_FAILED_Start); __Pyx_GIVEREF(__pyx_t_1); - PyTuple_SET_ITEM(__pyx_t_3, 1, __pyx_t_1); + PyTuple_SET_ITEM(__pyx_t_5, 1, __pyx_t_1); __Pyx_INCREF(__pyx_kp_s_Target); __Pyx_GIVEREF(__pyx_kp_s_Target); - PyTuple_SET_ITEM(__pyx_t_3, 2, __pyx_kp_s_Target); - __Pyx_GIVEREF(__pyx_t_4); - PyTuple_SET_ITEM(__pyx_t_3, 3, __pyx_t_4); + PyTuple_SET_ITEM(__pyx_t_5, 2, __pyx_kp_s_Target); + __Pyx_GIVEREF(__pyx_t_3); + PyTuple_SET_ITEM(__pyx_t_5, 3, __pyx_t_3); __pyx_t_1 = 0; - __pyx_t_4 = 0; - if (__Pyx_PrintOne(0, __pyx_t_3) < 0) __PYX_ERR(0, 117, __pyx_L1_error) - __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; + __pyx_t_3 = 0; + if (__Pyx_PrintOne(0, __pyx_t_5) < 0) __PYX_ERR(0, 117, __pyx_L1_error) + __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0; - /* "CAStar.pyx":118 + /* "CAStar/CAStar.pyx":118 * else: * print("A* Search FAILED. Start:",start,"Target:",target) * print(FindPath(cameFrom,current)) # <<<<<<<<<<<<<< * return None * */ - __pyx_t_3 = __pyx_f_6CAStar_FindPath(__pyx_v_cameFrom, __pyx_v_current); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 118, __pyx_L1_error) - __Pyx_GOTREF(__pyx_t_3); - if (__Pyx_PrintOne(0, __pyx_t_3) < 0) __PYX_ERR(0, 118, __pyx_L1_error) - __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; + __pyx_t_5 = __pyx_f_6CAStar_6CAStar_FindPath(__pyx_v_cameFrom, __pyx_v_current); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 118, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_5); + if (__Pyx_PrintOne(0, __pyx_t_5) < 0) __PYX_ERR(0, 118, __pyx_L1_error) + __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0; - /* "CAStar.pyx":119 + /* "CAStar/CAStar.pyx":119 * print("A* Search FAILED. Start:",start,"Target:",target) * print(FindPath(cameFrom,current)) * return None # <<<<<<<<<<<<<< @@ -3112,7 +3124,7 @@ static PyObject *__pyx_pf_6CAStar_AStarPQ(CYTHON_UNUSED PyObject *__pyx_self, Py goto __pyx_L0; } - /* "CAStar.pyx":54 + /* "CAStar/CAStar.pyx":54 * return zCoord * * def AStarPQ(graph, int start, int target): # Set all g to node_count + 1 # <<<<<<<<<<<<<< @@ -3127,8 +3139,8 @@ static PyObject *__pyx_pf_6CAStar_AStarPQ(CYTHON_UNUSED PyObject *__pyx_self, Py __Pyx_XDECREF(__pyx_t_3); __Pyx_XDECREF(__pyx_t_4); __Pyx_XDECREF(__pyx_t_5); - __Pyx_XDECREF(__pyx_t_15); - __Pyx_AddTraceback("CAStar.AStarPQ", __pyx_clineno, __pyx_lineno, __pyx_filename); + __Pyx_XDECREF(__pyx_t_14); + __Pyx_AddTraceback("CAStar.CAStar.AStarPQ", __pyx_clineno, __pyx_lineno, __pyx_filename); __pyx_r = NULL; __pyx_L0:; __Pyx_XDECREF(__pyx_v_StartTime); @@ -3147,7 +3159,7 @@ static PyObject *__pyx_pf_6CAStar_AStarPQ(CYTHON_UNUSED PyObject *__pyx_self, Py return __pyx_r; } -/* "CAStar.pyx":121 +/* "CAStar/CAStar.pyx":121 * return None * * def AStar2(graph, int start, int target): # Set all g to node_count + 1 # <<<<<<<<<<<<<< @@ -3156,9 +3168,9 @@ static PyObject *__pyx_pf_6CAStar_AStarPQ(CYTHON_UNUSED PyObject *__pyx_self, Py */ /* Python wrapper */ -static PyObject *__pyx_pw_6CAStar_3AStar2(PyObject *__pyx_self, PyObject *__pyx_args, PyObject *__pyx_kwds); /*proto*/ -static PyMethodDef __pyx_mdef_6CAStar_3AStar2 = {"AStar2", (PyCFunction)__pyx_pw_6CAStar_3AStar2, METH_VARARGS|METH_KEYWORDS, 0}; -static PyObject *__pyx_pw_6CAStar_3AStar2(PyObject *__pyx_self, PyObject *__pyx_args, PyObject *__pyx_kwds) { +static PyObject *__pyx_pw_6CAStar_6CAStar_3AStar2(PyObject *__pyx_self, PyObject *__pyx_args, PyObject *__pyx_kwds); /*proto*/ +static PyMethodDef __pyx_mdef_6CAStar_6CAStar_3AStar2 = {"AStar2", (PyCFunction)__pyx_pw_6CAStar_6CAStar_3AStar2, METH_VARARGS|METH_KEYWORDS, 0}; +static PyObject *__pyx_pw_6CAStar_6CAStar_3AStar2(PyObject *__pyx_self, PyObject *__pyx_args, PyObject *__pyx_kwds) { PyObject *__pyx_v_graph = 0; int __pyx_v_start; int __pyx_v_target; @@ -3217,18 +3229,18 @@ static PyObject *__pyx_pw_6CAStar_3AStar2(PyObject *__pyx_self, PyObject *__pyx_ __pyx_L5_argtuple_error:; __Pyx_RaiseArgtupleInvalid("AStar2", 1, 3, 3, PyTuple_GET_SIZE(__pyx_args)); __PYX_ERR(0, 121, __pyx_L3_error) __pyx_L3_error:; - __Pyx_AddTraceback("CAStar.AStar2", __pyx_clineno, __pyx_lineno, __pyx_filename); + __Pyx_AddTraceback("CAStar.CAStar.AStar2", __pyx_clineno, __pyx_lineno, __pyx_filename); __Pyx_RefNannyFinishContext(); return NULL; __pyx_L4_argument_unpacking_done:; - __pyx_r = __pyx_pf_6CAStar_2AStar2(__pyx_self, __pyx_v_graph, __pyx_v_start, __pyx_v_target); + __pyx_r = __pyx_pf_6CAStar_6CAStar_2AStar2(__pyx_self, __pyx_v_graph, __pyx_v_start, __pyx_v_target); /* function exit code */ __Pyx_RefNannyFinishContext(); return __pyx_r; } -/* "CAStar.pyx":145 +/* "CAStar/CAStar.pyx":145 * Found = False * while len(OpenSet) != 0: * current = min(f, key = lambda n:f[n]) #Faster (106 vs 62 ms) and doesnt require OpenList to be made # <<<<<<<<<<<<<< @@ -3237,9 +3249,9 @@ static PyObject *__pyx_pw_6CAStar_3AStar2(PyObject *__pyx_self, PyObject *__pyx_ */ /* Python wrapper */ -static PyObject *__pyx_pw_6CAStar_6AStar2_lambda(PyObject *__pyx_self, PyObject *__pyx_v_n); /*proto*/ -static PyMethodDef __pyx_mdef_6CAStar_6AStar2_lambda = {"lambda", (PyCFunction)__pyx_pw_6CAStar_6AStar2_lambda, METH_O, 0}; -static PyObject *__pyx_pw_6CAStar_6AStar2_lambda(PyObject *__pyx_self, PyObject *__pyx_v_n) { +static PyObject *__pyx_pw_6CAStar_6CAStar_6AStar2_lambda(PyObject *__pyx_self, PyObject *__pyx_v_n); /*proto*/ +static PyMethodDef __pyx_mdef_6CAStar_6CAStar_6AStar2_lambda = {"lambda", (PyCFunction)__pyx_pw_6CAStar_6CAStar_6AStar2_lambda, METH_O, 0}; +static PyObject *__pyx_pw_6CAStar_6CAStar_6AStar2_lambda(PyObject *__pyx_self, PyObject *__pyx_v_n) { PyObject *__pyx_r = 0; __Pyx_RefNannyDeclarations __Pyx_RefNannySetupContext("lambda (wrapper)", 0); @@ -3251,13 +3263,13 @@ static PyObject *__pyx_pw_6CAStar_6AStar2_lambda(PyObject *__pyx_self, PyObject } static PyObject *__pyx_lambda_funcdef_lambda(PyObject *__pyx_self, PyObject *__pyx_v_n) { - struct __pyx_obj_6CAStar___pyx_scope_struct__AStar2 *__pyx_cur_scope; - struct __pyx_obj_6CAStar___pyx_scope_struct__AStar2 *__pyx_outer_scope; + struct __pyx_obj_6CAStar_6CAStar___pyx_scope_struct__AStar2 *__pyx_cur_scope; + struct __pyx_obj_6CAStar_6CAStar___pyx_scope_struct__AStar2 *__pyx_outer_scope; PyObject *__pyx_r = NULL; __Pyx_RefNannyDeclarations PyObject *__pyx_t_1 = NULL; __Pyx_RefNannySetupContext("lambda", 0); - __pyx_outer_scope = (struct __pyx_obj_6CAStar___pyx_scope_struct__AStar2 *) __Pyx_CyFunction_GetClosure(__pyx_self); + __pyx_outer_scope = (struct __pyx_obj_6CAStar_6CAStar___pyx_scope_struct__AStar2 *) __Pyx_CyFunction_GetClosure(__pyx_self); __pyx_cur_scope = __pyx_outer_scope; __Pyx_XDECREF(__pyx_r); if (unlikely(!__pyx_cur_scope->__pyx_v_f)) { __Pyx_RaiseClosureNameError("f"); __PYX_ERR(0, 145, __pyx_L1_error) } @@ -3274,7 +3286,7 @@ static PyObject *__pyx_lambda_funcdef_lambda(PyObject *__pyx_self, PyObject *__p /* function exit code */ __pyx_L1_error:; __Pyx_XDECREF(__pyx_t_1); - __Pyx_AddTraceback("CAStar.AStar2.lambda", __pyx_clineno, __pyx_lineno, __pyx_filename); + __Pyx_AddTraceback("CAStar.CAStar.AStar2.lambda", __pyx_clineno, __pyx_lineno, __pyx_filename); __pyx_r = NULL; __pyx_L0:; __Pyx_XGIVEREF(__pyx_r); @@ -3282,7 +3294,7 @@ static PyObject *__pyx_lambda_funcdef_lambda(PyObject *__pyx_self, PyObject *__p return __pyx_r; } -/* "CAStar.pyx":121 +/* "CAStar/CAStar.pyx":121 * return None * * def AStar2(graph, int start, int target): # Set all g to node_count + 1 # <<<<<<<<<<<<<< @@ -3290,8 +3302,8 @@ static PyObject *__pyx_lambda_funcdef_lambda(PyObject *__pyx_self, PyObject *__p * */ -static PyObject *__pyx_pf_6CAStar_2AStar2(CYTHON_UNUSED PyObject *__pyx_self, PyObject *__pyx_v_graph, int __pyx_v_start, int __pyx_v_target) { - struct __pyx_obj_6CAStar___pyx_scope_struct__AStar2 *__pyx_cur_scope; +static PyObject *__pyx_pf_6CAStar_6CAStar_2AStar2(CYTHON_UNUSED PyObject *__pyx_self, PyObject *__pyx_v_graph, int __pyx_v_start, int __pyx_v_target) { + struct __pyx_obj_6CAStar_6CAStar___pyx_scope_struct__AStar2 *__pyx_cur_scope; PyObject *__pyx_v_StartTime = NULL; float __pyx_v_xSize; float __pyx_v_ySize; @@ -3329,16 +3341,16 @@ static PyObject *__pyx_pf_6CAStar_2AStar2(CYTHON_UNUSED PyObject *__pyx_self, Py PyObject *__pyx_t_14 = NULL; int __pyx_t_15; __Pyx_RefNannySetupContext("AStar2", 0); - __pyx_cur_scope = (struct __pyx_obj_6CAStar___pyx_scope_struct__AStar2 *)__pyx_tp_new_6CAStar___pyx_scope_struct__AStar2(__pyx_ptype_6CAStar___pyx_scope_struct__AStar2, __pyx_empty_tuple, NULL); + __pyx_cur_scope = (struct __pyx_obj_6CAStar_6CAStar___pyx_scope_struct__AStar2 *)__pyx_tp_new_6CAStar_6CAStar___pyx_scope_struct__AStar2(__pyx_ptype_6CAStar_6CAStar___pyx_scope_struct__AStar2, __pyx_empty_tuple, NULL); if (unlikely(!__pyx_cur_scope)) { - __pyx_cur_scope = ((struct __pyx_obj_6CAStar___pyx_scope_struct__AStar2 *)Py_None); + __pyx_cur_scope = ((struct __pyx_obj_6CAStar_6CAStar___pyx_scope_struct__AStar2 *)Py_None); __Pyx_INCREF(Py_None); __PYX_ERR(0, 121, __pyx_L1_error) } else { __Pyx_GOTREF(__pyx_cur_scope); } - /* "CAStar.pyx":122 + /* "CAStar/CAStar.pyx":122 * * def AStar2(graph, int start, int target): # Set all g to node_count + 1 * StartTime = time.time() # <<<<<<<<<<<<<< @@ -3371,7 +3383,7 @@ static PyObject *__pyx_pf_6CAStar_2AStar2(CYTHON_UNUSED PyObject *__pyx_self, Py __pyx_v_StartTime = __pyx_t_1; __pyx_t_1 = 0; - /* "CAStar.pyx":130 + /* "CAStar/CAStar.pyx":130 * * * TargetNode = graph.GetNode(target) # <<<<<<<<<<<<<< @@ -3431,7 +3443,7 @@ static PyObject *__pyx_pf_6CAStar_2AStar2(CYTHON_UNUSED PyObject *__pyx_self, Py __pyx_v_TargetNode = __pyx_t_1; __pyx_t_1 = 0; - /* "CAStar.pyx":131 + /* "CAStar/CAStar.pyx":131 * * TargetNode = graph.GetNode(target) * xSize,ySize,zSize = graph.xSize,graph.ySize,graph.zSize # <<<<<<<<<<<<<< @@ -3454,7 +3466,7 @@ static PyObject *__pyx_pf_6CAStar_2AStar2(CYTHON_UNUSED PyObject *__pyx_self, Py __pyx_v_ySize = __pyx_t_7; __pyx_v_zSize = __pyx_t_8; - /* "CAStar.pyx":132 + /* "CAStar/CAStar.pyx":132 * TargetNode = graph.GetNode(target) * xSize,ySize,zSize = graph.xSize,graph.ySize,graph.zSize * xCount,yCount,zCount = graph.xCount,graph.yCount,graph.zCount # <<<<<<<<<<<<<< @@ -3477,7 +3489,7 @@ static PyObject *__pyx_pf_6CAStar_2AStar2(CYTHON_UNUSED PyObject *__pyx_self, Py __pyx_v_yCount = __pyx_t_10; __pyx_v_zCount = __pyx_t_11; - /* "CAStar.pyx":134 + /* "CAStar/CAStar.pyx":134 * xCount,yCount,zCount = graph.xCount,graph.yCount,graph.zCount * * ClosedSet = {} #Dict to hash find closed nodes # <<<<<<<<<<<<<< @@ -3489,7 +3501,7 @@ static PyObject *__pyx_pf_6CAStar_2AStar2(CYTHON_UNUSED PyObject *__pyx_self, Py __pyx_v_ClosedSet = ((PyObject*)__pyx_t_1); __pyx_t_1 = 0; - /* "CAStar.pyx":135 + /* "CAStar/CAStar.pyx":135 * * ClosedSet = {} #Dict to hash find closed nodes * OpenSet = {start:1} # <<<<<<<<<<<<<< @@ -3505,7 +3517,7 @@ static PyObject *__pyx_pf_6CAStar_2AStar2(CYTHON_UNUSED PyObject *__pyx_self, Py __pyx_v_OpenSet = ((PyObject*)__pyx_t_1); __pyx_t_1 = 0; - /* "CAStar.pyx":136 + /* "CAStar/CAStar.pyx":136 * ClosedSet = {} #Dict to hash find closed nodes * OpenSet = {start:1} * cameFrom = {} # <<<<<<<<<<<<<< @@ -3517,7 +3529,7 @@ static PyObject *__pyx_pf_6CAStar_2AStar2(CYTHON_UNUSED PyObject *__pyx_self, Py __pyx_v_cameFrom = ((PyObject*)__pyx_t_1); __pyx_t_1 = 0; - /* "CAStar.pyx":137 + /* "CAStar/CAStar.pyx":137 * OpenSet = {start:1} * cameFrom = {} * g,f = {},{} # <<<<<<<<<<<<<< @@ -3534,7 +3546,7 @@ static PyObject *__pyx_pf_6CAStar_2AStar2(CYTHON_UNUSED PyObject *__pyx_self, Py __pyx_cur_scope->__pyx_v_f = ((PyObject*)__pyx_t_3); __pyx_t_3 = 0; - /* "CAStar.pyx":138 + /* "CAStar/CAStar.pyx":138 * cameFrom = {} * g,f = {},{} * current = -1 # <<<<<<<<<<<<<< @@ -3543,7 +3555,7 @@ static PyObject *__pyx_pf_6CAStar_2AStar2(CYTHON_UNUSED PyObject *__pyx_self, Py */ __pyx_v_current = -1; - /* "CAStar.pyx":141 + /* "CAStar/CAStar.pyx":141 * * * g[start] = 0 # <<<<<<<<<<<<<< @@ -3555,14 +3567,14 @@ static PyObject *__pyx_pf_6CAStar_2AStar2(CYTHON_UNUSED PyObject *__pyx_self, Py if (unlikely(PyDict_SetItem(__pyx_v_g, __pyx_t_3, __pyx_int_0) < 0)) __PYX_ERR(0, 141, __pyx_L1_error) __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; - /* "CAStar.pyx":142 + /* "CAStar/CAStar.pyx":142 * * g[start] = 0 * f[start] = EstimateDistance(start,target,xCount,yCount,zCount,xSize,ySize,zSize) # <<<<<<<<<<<<<< * Found = False * while len(OpenSet) != 0: */ - __pyx_t_3 = PyFloat_FromDouble(__pyx_f_6CAStar_EstimateDistance(__pyx_v_start, __pyx_v_target, __pyx_v_xCount, __pyx_v_yCount, __pyx_v_zCount, __pyx_v_xSize, __pyx_v_ySize, __pyx_v_zSize)); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 142, __pyx_L1_error) + __pyx_t_3 = PyFloat_FromDouble(__pyx_f_6CAStar_6CAStar_EstimateDistance(__pyx_v_start, __pyx_v_target, __pyx_v_xCount, __pyx_v_yCount, __pyx_v_zCount, __pyx_v_xSize, __pyx_v_ySize, __pyx_v_zSize)); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 142, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_3); __pyx_t_1 = __Pyx_PyInt_From_int(__pyx_v_start); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 142, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_1); @@ -3570,7 +3582,7 @@ static PyObject *__pyx_pf_6CAStar_2AStar2(CYTHON_UNUSED PyObject *__pyx_self, Py __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; - /* "CAStar.pyx":143 + /* "CAStar/CAStar.pyx":143 * g[start] = 0 * f[start] = EstimateDistance(start,target,xCount,yCount,zCount,xSize,ySize,zSize) * Found = False # <<<<<<<<<<<<<< @@ -3579,7 +3591,7 @@ static PyObject *__pyx_pf_6CAStar_2AStar2(CYTHON_UNUSED PyObject *__pyx_self, Py */ __pyx_v_Found = 0; - /* "CAStar.pyx":144 + /* "CAStar/CAStar.pyx":144 * f[start] = EstimateDistance(start,target,xCount,yCount,zCount,xSize,ySize,zSize) * Found = False * while len(OpenSet) != 0: # <<<<<<<<<<<<<< @@ -3591,7 +3603,7 @@ static PyObject *__pyx_pf_6CAStar_2AStar2(CYTHON_UNUSED PyObject *__pyx_self, Py __pyx_t_13 = ((__pyx_t_12 != 0) != 0); if (!__pyx_t_13) break; - /* "CAStar.pyx":145 + /* "CAStar/CAStar.pyx":145 * Found = False * while len(OpenSet) != 0: * current = min(f, key = lambda n:f[n]) #Faster (106 vs 62 ms) and doesnt require OpenList to be made # <<<<<<<<<<<<<< @@ -3605,7 +3617,7 @@ static PyObject *__pyx_pf_6CAStar_2AStar2(CYTHON_UNUSED PyObject *__pyx_self, Py PyTuple_SET_ITEM(__pyx_t_3, 0, __pyx_cur_scope->__pyx_v_f); __pyx_t_1 = PyDict_New(); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 145, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_1); - __pyx_t_5 = __Pyx_CyFunction_NewEx(&__pyx_mdef_6CAStar_6AStar2_lambda, 0, __pyx_n_s_AStar2_locals_lambda, ((PyObject*)__pyx_cur_scope), __pyx_n_s_CAStar, __pyx_d, NULL); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 145, __pyx_L1_error) + __pyx_t_5 = __Pyx_CyFunction_NewEx(&__pyx_mdef_6CAStar_6CAStar_6AStar2_lambda, 0, __pyx_n_s_AStar2_locals_lambda, ((PyObject*)__pyx_cur_scope), __pyx_n_s_CAStar_CAStar, __pyx_d, NULL); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 145, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_5); if (PyDict_SetItem(__pyx_t_1, __pyx_n_s_key, __pyx_t_5) < 0) __PYX_ERR(0, 145, __pyx_L1_error) __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0; @@ -3617,7 +3629,7 @@ static PyObject *__pyx_pf_6CAStar_2AStar2(CYTHON_UNUSED PyObject *__pyx_self, Py __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0; __pyx_v_current = __pyx_t_11; - /* "CAStar.pyx":146 + /* "CAStar/CAStar.pyx":146 * while len(OpenSet) != 0: * current = min(f, key = lambda n:f[n]) #Faster (106 vs 62 ms) and doesnt require OpenList to be made * if current == target: # <<<<<<<<<<<<<< @@ -3627,7 +3639,7 @@ static PyObject *__pyx_pf_6CAStar_2AStar2(CYTHON_UNUSED PyObject *__pyx_self, Py __pyx_t_13 = ((__pyx_v_current == __pyx_v_target) != 0); if (__pyx_t_13) { - /* "CAStar.pyx":147 + /* "CAStar/CAStar.pyx":147 * current = min(f, key = lambda n:f[n]) #Faster (106 vs 62 ms) and doesnt require OpenList to be made * if current == target: * Found = True # <<<<<<<<<<<<<< @@ -3636,7 +3648,7 @@ static PyObject *__pyx_pf_6CAStar_2AStar2(CYTHON_UNUSED PyObject *__pyx_self, Py */ __pyx_v_Found = 1; - /* "CAStar.pyx":148 + /* "CAStar/CAStar.pyx":148 * if current == target: * Found = True * break # <<<<<<<<<<<<<< @@ -3645,7 +3657,7 @@ static PyObject *__pyx_pf_6CAStar_2AStar2(CYTHON_UNUSED PyObject *__pyx_self, Py */ goto __pyx_L4_break; - /* "CAStar.pyx":146 + /* "CAStar/CAStar.pyx":146 * while len(OpenSet) != 0: * current = min(f, key = lambda n:f[n]) #Faster (106 vs 62 ms) and doesnt require OpenList to be made * if current == target: # <<<<<<<<<<<<<< @@ -3654,7 +3666,7 @@ static PyObject *__pyx_pf_6CAStar_2AStar2(CYTHON_UNUSED PyObject *__pyx_self, Py */ } - /* "CAStar.pyx":150 + /* "CAStar/CAStar.pyx":150 * break * * OpenSet.pop(current) # <<<<<<<<<<<<<< @@ -3713,7 +3725,7 @@ static PyObject *__pyx_pf_6CAStar_2AStar2(CYTHON_UNUSED PyObject *__pyx_self, Py __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0; - /* "CAStar.pyx":151 + /* "CAStar/CAStar.pyx":151 * * OpenSet.pop(current) * ClosedSet[current] = 1 # <<<<<<<<<<<<<< @@ -3725,7 +3737,7 @@ static PyObject *__pyx_pf_6CAStar_2AStar2(CYTHON_UNUSED PyObject *__pyx_self, Py if (unlikely(PyDict_SetItem(__pyx_v_ClosedSet, __pyx_t_5, __pyx_int_1) < 0)) __PYX_ERR(0, 151, __pyx_L1_error) __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0; - /* "CAStar.pyx":153 + /* "CAStar/CAStar.pyx":153 * ClosedSet[current] = 1 * * FriendList = graph.GetNode(current).Get_Friends() # <<<<<<<<<<<<<< @@ -3807,7 +3819,7 @@ static PyObject *__pyx_pf_6CAStar_2AStar2(CYTHON_UNUSED PyObject *__pyx_self, Py __Pyx_XDECREF_SET(__pyx_v_FriendList, ((PyObject*)__pyx_t_5)); __pyx_t_5 = 0; - /* "CAStar.pyx":154 + /* "CAStar/CAStar.pyx":154 * * FriendList = graph.GetNode(current).Get_Friends() * for NodeID in FriendList: # <<<<<<<<<<<<<< @@ -3831,7 +3843,7 @@ static PyObject *__pyx_pf_6CAStar_2AStar2(CYTHON_UNUSED PyObject *__pyx_self, Py __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0; __pyx_v_NodeID = __pyx_t_11; - /* "CAStar.pyx":155 + /* "CAStar/CAStar.pyx":155 * FriendList = graph.GetNode(current).Get_Friends() * for NodeID in FriendList: * if NodeID in ClosedSet: # <<<<<<<<<<<<<< @@ -3845,7 +3857,7 @@ static PyObject *__pyx_pf_6CAStar_2AStar2(CYTHON_UNUSED PyObject *__pyx_self, Py __pyx_t_15 = (__pyx_t_13 != 0); if (__pyx_t_15) { - /* "CAStar.pyx":156 + /* "CAStar/CAStar.pyx":156 * for NodeID in FriendList: * if NodeID in ClosedSet: * continue # <<<<<<<<<<<<<< @@ -3854,7 +3866,7 @@ static PyObject *__pyx_pf_6CAStar_2AStar2(CYTHON_UNUSED PyObject *__pyx_self, Py */ goto __pyx_L6_continue; - /* "CAStar.pyx":155 + /* "CAStar/CAStar.pyx":155 * FriendList = graph.GetNode(current).Get_Friends() * for NodeID in FriendList: * if NodeID in ClosedSet: # <<<<<<<<<<<<<< @@ -3863,7 +3875,7 @@ static PyObject *__pyx_pf_6CAStar_2AStar2(CYTHON_UNUSED PyObject *__pyx_self, Py */ } - /* "CAStar.pyx":157 + /* "CAStar/CAStar.pyx":157 * if NodeID in ClosedSet: * continue * if NodeID not in OpenSet: # <<<<<<<<<<<<<< @@ -3877,7 +3889,7 @@ static PyObject *__pyx_pf_6CAStar_2AStar2(CYTHON_UNUSED PyObject *__pyx_self, Py __pyx_t_13 = (__pyx_t_15 != 0); if (__pyx_t_13) { - /* "CAStar.pyx":158 + /* "CAStar/CAStar.pyx":158 * continue * if NodeID not in OpenSet: * OpenSet[NodeID] = 1 # <<<<<<<<<<<<<< @@ -3889,7 +3901,7 @@ static PyObject *__pyx_pf_6CAStar_2AStar2(CYTHON_UNUSED PyObject *__pyx_self, Py if (unlikely(PyDict_SetItem(__pyx_v_OpenSet, __pyx_t_4, __pyx_int_1) < 0)) __PYX_ERR(0, 158, __pyx_L1_error) __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0; - /* "CAStar.pyx":159 + /* "CAStar/CAStar.pyx":159 * if NodeID not in OpenSet: * OpenSet[NodeID] = 1 * g[NodeID] = math.inf # <<<<<<<<<<<<<< @@ -3907,7 +3919,7 @@ static PyObject *__pyx_pf_6CAStar_2AStar2(CYTHON_UNUSED PyObject *__pyx_self, Py __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0; __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; - /* "CAStar.pyx":160 + /* "CAStar/CAStar.pyx":160 * OpenSet[NodeID] = 1 * g[NodeID] = math.inf * f[NodeID] = math.inf # <<<<<<<<<<<<<< @@ -3925,7 +3937,7 @@ static PyObject *__pyx_pf_6CAStar_2AStar2(CYTHON_UNUSED PyObject *__pyx_self, Py __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0; - /* "CAStar.pyx":157 + /* "CAStar/CAStar.pyx":157 * if NodeID in ClosedSet: * continue * if NodeID not in OpenSet: # <<<<<<<<<<<<<< @@ -3934,7 +3946,7 @@ static PyObject *__pyx_pf_6CAStar_2AStar2(CYTHON_UNUSED PyObject *__pyx_self, Py */ } - /* "CAStar.pyx":162 + /* "CAStar/CAStar.pyx":162 * f[NodeID] = math.inf * * Node = graph.GetNode(NodeID) # <<<<<<<<<<<<<< @@ -3994,7 +4006,7 @@ static PyObject *__pyx_pf_6CAStar_2AStar2(CYTHON_UNUSED PyObject *__pyx_self, Py __Pyx_XDECREF_SET(__pyx_v_Node, __pyx_t_4); __pyx_t_4 = 0; - /* "CAStar.pyx":163 + /* "CAStar/CAStar.pyx":163 * * Node = graph.GetNode(NodeID) * tScore = g[current]+ Node.Get_Cost() # <<<<<<<<<<<<<< @@ -4034,7 +4046,7 @@ static PyObject *__pyx_pf_6CAStar_2AStar2(CYTHON_UNUSED PyObject *__pyx_self, Py __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; __pyx_v_tScore = __pyx_t_11; - /* "CAStar.pyx":164 + /* "CAStar/CAStar.pyx":164 * Node = graph.GetNode(NodeID) * tScore = g[current]+ Node.Get_Cost() * if tScore >= g[NodeID]: # <<<<<<<<<<<<<< @@ -4055,7 +4067,7 @@ static PyObject *__pyx_pf_6CAStar_2AStar2(CYTHON_UNUSED PyObject *__pyx_self, Py __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0; if (__pyx_t_13) { - /* "CAStar.pyx":165 + /* "CAStar/CAStar.pyx":165 * tScore = g[current]+ Node.Get_Cost() * if tScore >= g[NodeID]: * continue # <<<<<<<<<<<<<< @@ -4064,7 +4076,7 @@ static PyObject *__pyx_pf_6CAStar_2AStar2(CYTHON_UNUSED PyObject *__pyx_self, Py */ goto __pyx_L6_continue; - /* "CAStar.pyx":164 + /* "CAStar/CAStar.pyx":164 * Node = graph.GetNode(NodeID) * tScore = g[current]+ Node.Get_Cost() * if tScore >= g[NodeID]: # <<<<<<<<<<<<<< @@ -4073,7 +4085,7 @@ static PyObject *__pyx_pf_6CAStar_2AStar2(CYTHON_UNUSED PyObject *__pyx_self, Py */ } - /* "CAStar.pyx":166 + /* "CAStar/CAStar.pyx":166 * if tScore >= g[NodeID]: * continue * cameFrom[NodeID] = current # <<<<<<<<<<<<<< @@ -4088,7 +4100,7 @@ static PyObject *__pyx_pf_6CAStar_2AStar2(CYTHON_UNUSED PyObject *__pyx_self, Py __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0; - /* "CAStar.pyx":167 + /* "CAStar/CAStar.pyx":167 * continue * cameFrom[NodeID] = current * g[NodeID] = tScore # <<<<<<<<<<<<<< @@ -4103,7 +4115,7 @@ static PyObject *__pyx_pf_6CAStar_2AStar2(CYTHON_UNUSED PyObject *__pyx_self, Py __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0; - /* "CAStar.pyx":168 + /* "CAStar/CAStar.pyx":168 * cameFrom[NodeID] = current * g[NodeID] = tScore * f[NodeID] = g[NodeID] + EstimateDistance(NodeID,target,xCount,yCount,zCount,xSize,ySize,zSize) # <<<<<<<<<<<<<< @@ -4115,7 +4127,7 @@ static PyObject *__pyx_pf_6CAStar_2AStar2(CYTHON_UNUSED PyObject *__pyx_self, Py __pyx_t_1 = __Pyx_PyDict_GetItem(__pyx_v_g, __pyx_t_4); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 168, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_1); __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0; - __pyx_t_4 = PyFloat_FromDouble(__pyx_f_6CAStar_EstimateDistance(__pyx_v_NodeID, __pyx_v_target, __pyx_v_xCount, __pyx_v_yCount, __pyx_v_zCount, __pyx_v_xSize, __pyx_v_ySize, __pyx_v_zSize)); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 168, __pyx_L1_error) + __pyx_t_4 = PyFloat_FromDouble(__pyx_f_6CAStar_6CAStar_EstimateDistance(__pyx_v_NodeID, __pyx_v_target, __pyx_v_xCount, __pyx_v_yCount, __pyx_v_zCount, __pyx_v_xSize, __pyx_v_ySize, __pyx_v_zSize)); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 168, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_4); __pyx_t_2 = PyNumber_Add(__pyx_t_1, __pyx_t_4); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 168, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_2); @@ -4127,7 +4139,7 @@ static PyObject *__pyx_pf_6CAStar_2AStar2(CYTHON_UNUSED PyObject *__pyx_self, Py __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0; __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; - /* "CAStar.pyx":154 + /* "CAStar/CAStar.pyx":154 * * FriendList = graph.GetNode(current).Get_Friends() * for NodeID in FriendList: # <<<<<<<<<<<<<< @@ -4138,7 +4150,7 @@ static PyObject *__pyx_pf_6CAStar_2AStar2(CYTHON_UNUSED PyObject *__pyx_self, Py } __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0; - /* "CAStar.pyx":169 + /* "CAStar/CAStar.pyx":169 * g[NodeID] = tScore * f[NodeID] = g[NodeID] + EstimateDistance(NodeID,target,xCount,yCount,zCount,xSize,ySize,zSize) * f.pop(current) #These values will not be refered to again since the current NodeID has been moved to the closed set . This therefore reduces memory usage very slightly # <<<<<<<<<<<<<< @@ -4197,7 +4209,7 @@ static PyObject *__pyx_pf_6CAStar_2AStar2(CYTHON_UNUSED PyObject *__pyx_self, Py __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0; - /* "CAStar.pyx":170 + /* "CAStar/CAStar.pyx":170 * f[NodeID] = g[NodeID] + EstimateDistance(NodeID,target,xCount,yCount,zCount,xSize,ySize,zSize) * f.pop(current) #These values will not be refered to again since the current NodeID has been moved to the closed set . This therefore reduces memory usage very slightly * g.pop(current) # <<<<<<<<<<<<<< @@ -4258,7 +4270,7 @@ static PyObject *__pyx_pf_6CAStar_2AStar2(CYTHON_UNUSED PyObject *__pyx_self, Py } __pyx_L4_break:; - /* "CAStar.pyx":171 + /* "CAStar/CAStar.pyx":171 * f.pop(current) #These values will not be refered to again since the current NodeID has been moved to the closed set . This therefore reduces memory usage very slightly * g.pop(current) * EndTime = time.time() # <<<<<<<<<<<<<< @@ -4291,7 +4303,7 @@ static PyObject *__pyx_pf_6CAStar_2AStar2(CYTHON_UNUSED PyObject *__pyx_self, Py __pyx_v_EndTime = __pyx_t_5; __pyx_t_5 = 0; - /* "CAStar.pyx":172 + /* "CAStar/CAStar.pyx":172 * g.pop(current) * EndTime = time.time() * print("[A* Time] "+str((EndTime-StartTime)*1000)+" Milliseconds."+" Total Expanded:"+str(len(cameFrom))) # <<<<<<<<<<<<<< @@ -4338,7 +4350,7 @@ static PyObject *__pyx_pf_6CAStar_2AStar2(CYTHON_UNUSED PyObject *__pyx_self, Py if (__Pyx_PrintOne(0, __pyx_t_2) < 0) __PYX_ERR(0, 172, __pyx_L1_error) __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; - /* "CAStar.pyx":173 + /* "CAStar/CAStar.pyx":173 * EndTime = time.time() * print("[A* Time] "+str((EndTime-StartTime)*1000)+" Milliseconds."+" Total Expanded:"+str(len(cameFrom))) * if Found: # <<<<<<<<<<<<<< @@ -4348,7 +4360,7 @@ static PyObject *__pyx_pf_6CAStar_2AStar2(CYTHON_UNUSED PyObject *__pyx_self, Py __pyx_t_13 = (__pyx_v_Found != 0); if (__pyx_t_13) { - /* "CAStar.pyx":174 + /* "CAStar/CAStar.pyx":174 * print("[A* Time] "+str((EndTime-StartTime)*1000)+" Milliseconds."+" Total Expanded:"+str(len(cameFrom))) * if Found: * return FindPath(cameFrom,current) # <<<<<<<<<<<<<< @@ -4356,13 +4368,13 @@ static PyObject *__pyx_pf_6CAStar_2AStar2(CYTHON_UNUSED PyObject *__pyx_self, Py * print("A* Search FAILED. Start:",start,"Target:",target) */ __Pyx_XDECREF(__pyx_r); - __pyx_t_2 = __pyx_f_6CAStar_FindPath(__pyx_v_cameFrom, __pyx_v_current); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 174, __pyx_L1_error) + __pyx_t_2 = __pyx_f_6CAStar_6CAStar_FindPath(__pyx_v_cameFrom, __pyx_v_current); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 174, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_2); __pyx_r = __pyx_t_2; __pyx_t_2 = 0; goto __pyx_L0; - /* "CAStar.pyx":173 + /* "CAStar/CAStar.pyx":173 * EndTime = time.time() * print("[A* Time] "+str((EndTime-StartTime)*1000)+" Milliseconds."+" Total Expanded:"+str(len(cameFrom))) * if Found: # <<<<<<<<<<<<<< @@ -4371,7 +4383,7 @@ static PyObject *__pyx_pf_6CAStar_2AStar2(CYTHON_UNUSED PyObject *__pyx_self, Py */ } - /* "CAStar.pyx":176 + /* "CAStar/CAStar.pyx":176 * return FindPath(cameFrom,current) * else: * print("A* Search FAILED. Start:",start,"Target:",target) # <<<<<<<<<<<<<< @@ -4400,19 +4412,19 @@ static PyObject *__pyx_pf_6CAStar_2AStar2(CYTHON_UNUSED PyObject *__pyx_self, Py if (__Pyx_PrintOne(0, __pyx_t_5) < 0) __PYX_ERR(0, 176, __pyx_L1_error) __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0; - /* "CAStar.pyx":177 + /* "CAStar/CAStar.pyx":177 * else: * print("A* Search FAILED. Start:",start,"Target:",target) * print(FindPath(cameFrom,current)) # <<<<<<<<<<<<<< * return None * */ - __pyx_t_5 = __pyx_f_6CAStar_FindPath(__pyx_v_cameFrom, __pyx_v_current); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 177, __pyx_L1_error) + __pyx_t_5 = __pyx_f_6CAStar_6CAStar_FindPath(__pyx_v_cameFrom, __pyx_v_current); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 177, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_5); if (__Pyx_PrintOne(0, __pyx_t_5) < 0) __PYX_ERR(0, 177, __pyx_L1_error) __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0; - /* "CAStar.pyx":178 + /* "CAStar/CAStar.pyx":178 * print("A* Search FAILED. Start:",start,"Target:",target) * print(FindPath(cameFrom,current)) * return None # <<<<<<<<<<<<<< @@ -4425,7 +4437,7 @@ static PyObject *__pyx_pf_6CAStar_2AStar2(CYTHON_UNUSED PyObject *__pyx_self, Py goto __pyx_L0; } - /* "CAStar.pyx":121 + /* "CAStar/CAStar.pyx":121 * return None * * def AStar2(graph, int start, int target): # Set all g to node_count + 1 # <<<<<<<<<<<<<< @@ -4441,7 +4453,7 @@ static PyObject *__pyx_pf_6CAStar_2AStar2(CYTHON_UNUSED PyObject *__pyx_self, Py __Pyx_XDECREF(__pyx_t_4); __Pyx_XDECREF(__pyx_t_5); __Pyx_XDECREF(__pyx_t_14); - __Pyx_AddTraceback("CAStar.AStar2", __pyx_clineno, __pyx_lineno, __pyx_filename); + __Pyx_AddTraceback("CAStar.CAStar.AStar2", __pyx_clineno, __pyx_lineno, __pyx_filename); __pyx_r = NULL; __pyx_L0:; __Pyx_XDECREF(__pyx_v_StartTime); @@ -4459,7 +4471,7 @@ static PyObject *__pyx_pf_6CAStar_2AStar2(CYTHON_UNUSED PyObject *__pyx_self, Py return __pyx_r; } -/* "CAStar.pyx":181 +/* "CAStar/CAStar.pyx":181 * * * cdef FindPath(dict cameFrom, int current): # <<<<<<<<<<<<<< @@ -4467,7 +4479,7 @@ static PyObject *__pyx_pf_6CAStar_2AStar2(CYTHON_UNUSED PyObject *__pyx_self, Py * path = [current] */ -static PyObject *__pyx_f_6CAStar_FindPath(PyObject *__pyx_v_cameFrom, int __pyx_v_current) { +static PyObject *__pyx_f_6CAStar_6CAStar_FindPath(PyObject *__pyx_v_cameFrom, int __pyx_v_current) { PyObject *__pyx_v_path = 0; PyObject *__pyx_r = NULL; __Pyx_RefNannyDeclarations @@ -4479,7 +4491,7 @@ static PyObject *__pyx_f_6CAStar_FindPath(PyObject *__pyx_v_cameFrom, int __pyx_ int __pyx_t_6; __Pyx_RefNannySetupContext("FindPath", 0); - /* "CAStar.pyx":183 + /* "CAStar/CAStar.pyx":183 * cdef FindPath(dict cameFrom, int current): * cdef list path * path = [current] # <<<<<<<<<<<<<< @@ -4496,7 +4508,7 @@ static PyObject *__pyx_f_6CAStar_FindPath(PyObject *__pyx_v_cameFrom, int __pyx_ __pyx_v_path = ((PyObject*)__pyx_t_2); __pyx_t_2 = 0; - /* "CAStar.pyx":184 + /* "CAStar/CAStar.pyx":184 * cdef list path * path = [current] * while current in cameFrom: # <<<<<<<<<<<<<< @@ -4515,12 +4527,12 @@ static PyObject *__pyx_f_6CAStar_FindPath(PyObject *__pyx_v_cameFrom, int __pyx_ __pyx_t_4 = (__pyx_t_3 != 0); if (!__pyx_t_4) break; - /* "CAStar.pyx":185 + /* "CAStar/CAStar.pyx":185 * path = [current] * while current in cameFrom: * current = cameFrom[current] # <<<<<<<<<<<<<< * path.append(current) - * return path + * return path[::-1] */ if (unlikely(__pyx_v_cameFrom == Py_None)) { PyErr_SetString(PyExc_TypeError, "'NoneType' object is not subscriptable"); @@ -4535,11 +4547,11 @@ static PyObject *__pyx_f_6CAStar_FindPath(PyObject *__pyx_v_cameFrom, int __pyx_ __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; __pyx_v_current = __pyx_t_5; - /* "CAStar.pyx":186 + /* "CAStar/CAStar.pyx":186 * while current in cameFrom: * current = cameFrom[current] * path.append(current) # <<<<<<<<<<<<<< - * return path + * return path[::-1] * */ __pyx_t_1 = __Pyx_PyInt_From_int(__pyx_v_current); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 186, __pyx_L1_error) @@ -4548,19 +4560,21 @@ static PyObject *__pyx_f_6CAStar_FindPath(PyObject *__pyx_v_cameFrom, int __pyx_ __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; } - /* "CAStar.pyx":187 + /* "CAStar/CAStar.pyx":187 * current = cameFrom[current] * path.append(current) - * return path # <<<<<<<<<<<<<< + * return path[::-1] # <<<<<<<<<<<<<< * * */ __Pyx_XDECREF(__pyx_r); - __Pyx_INCREF(__pyx_v_path); - __pyx_r = __pyx_v_path; + __pyx_t_1 = PyObject_GetItem(__pyx_v_path, __pyx_slice_); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 187, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_1); + __pyx_r = __pyx_t_1; + __pyx_t_1 = 0; goto __pyx_L0; - /* "CAStar.pyx":181 + /* "CAStar/CAStar.pyx":181 * * * cdef FindPath(dict cameFrom, int current): # <<<<<<<<<<<<<< @@ -4572,7 +4586,7 @@ static PyObject *__pyx_f_6CAStar_FindPath(PyObject *__pyx_v_cameFrom, int __pyx_ __pyx_L1_error:; __Pyx_XDECREF(__pyx_t_1); __Pyx_XDECREF(__pyx_t_2); - __Pyx_AddTraceback("CAStar.FindPath", __pyx_clineno, __pyx_lineno, __pyx_filename); + __Pyx_AddTraceback("CAStar.CAStar.FindPath", __pyx_clineno, __pyx_lineno, __pyx_filename); __pyx_r = 0; __pyx_L0:; __Pyx_XDECREF(__pyx_v_path); @@ -4581,14 +4595,14 @@ static PyObject *__pyx_f_6CAStar_FindPath(PyObject *__pyx_v_cameFrom, int __pyx_ return __pyx_r; } -static struct __pyx_obj_6CAStar___pyx_scope_struct__AStar2 *__pyx_freelist_6CAStar___pyx_scope_struct__AStar2[8]; -static int __pyx_freecount_6CAStar___pyx_scope_struct__AStar2 = 0; +static struct __pyx_obj_6CAStar_6CAStar___pyx_scope_struct__AStar2 *__pyx_freelist_6CAStar_6CAStar___pyx_scope_struct__AStar2[8]; +static int __pyx_freecount_6CAStar_6CAStar___pyx_scope_struct__AStar2 = 0; -static PyObject *__pyx_tp_new_6CAStar___pyx_scope_struct__AStar2(PyTypeObject *t, CYTHON_UNUSED PyObject *a, CYTHON_UNUSED PyObject *k) { +static PyObject *__pyx_tp_new_6CAStar_6CAStar___pyx_scope_struct__AStar2(PyTypeObject *t, CYTHON_UNUSED PyObject *a, CYTHON_UNUSED PyObject *k) { PyObject *o; - if (CYTHON_COMPILING_IN_CPYTHON && likely((__pyx_freecount_6CAStar___pyx_scope_struct__AStar2 > 0) & (t->tp_basicsize == sizeof(struct __pyx_obj_6CAStar___pyx_scope_struct__AStar2)))) { - o = (PyObject*)__pyx_freelist_6CAStar___pyx_scope_struct__AStar2[--__pyx_freecount_6CAStar___pyx_scope_struct__AStar2]; - memset(o, 0, sizeof(struct __pyx_obj_6CAStar___pyx_scope_struct__AStar2)); + if (CYTHON_COMPILING_IN_CPYTHON && likely((__pyx_freecount_6CAStar_6CAStar___pyx_scope_struct__AStar2 > 0) & (t->tp_basicsize == sizeof(struct __pyx_obj_6CAStar_6CAStar___pyx_scope_struct__AStar2)))) { + o = (PyObject*)__pyx_freelist_6CAStar_6CAStar___pyx_scope_struct__AStar2[--__pyx_freecount_6CAStar_6CAStar___pyx_scope_struct__AStar2]; + memset(o, 0, sizeof(struct __pyx_obj_6CAStar_6CAStar___pyx_scope_struct__AStar2)); (void) PyObject_INIT(o, t); PyObject_GC_Track(o); } else { @@ -4598,41 +4612,41 @@ static PyObject *__pyx_tp_new_6CAStar___pyx_scope_struct__AStar2(PyTypeObject *t return o; } -static void __pyx_tp_dealloc_6CAStar___pyx_scope_struct__AStar2(PyObject *o) { - struct __pyx_obj_6CAStar___pyx_scope_struct__AStar2 *p = (struct __pyx_obj_6CAStar___pyx_scope_struct__AStar2 *)o; +static void __pyx_tp_dealloc_6CAStar_6CAStar___pyx_scope_struct__AStar2(PyObject *o) { + struct __pyx_obj_6CAStar_6CAStar___pyx_scope_struct__AStar2 *p = (struct __pyx_obj_6CAStar_6CAStar___pyx_scope_struct__AStar2 *)o; PyObject_GC_UnTrack(o); Py_CLEAR(p->__pyx_v_f); - if (CYTHON_COMPILING_IN_CPYTHON && ((__pyx_freecount_6CAStar___pyx_scope_struct__AStar2 < 8) & (Py_TYPE(o)->tp_basicsize == sizeof(struct __pyx_obj_6CAStar___pyx_scope_struct__AStar2)))) { - __pyx_freelist_6CAStar___pyx_scope_struct__AStar2[__pyx_freecount_6CAStar___pyx_scope_struct__AStar2++] = ((struct __pyx_obj_6CAStar___pyx_scope_struct__AStar2 *)o); + if (CYTHON_COMPILING_IN_CPYTHON && ((__pyx_freecount_6CAStar_6CAStar___pyx_scope_struct__AStar2 < 8) & (Py_TYPE(o)->tp_basicsize == sizeof(struct __pyx_obj_6CAStar_6CAStar___pyx_scope_struct__AStar2)))) { + __pyx_freelist_6CAStar_6CAStar___pyx_scope_struct__AStar2[__pyx_freecount_6CAStar_6CAStar___pyx_scope_struct__AStar2++] = ((struct __pyx_obj_6CAStar_6CAStar___pyx_scope_struct__AStar2 *)o); } else { (*Py_TYPE(o)->tp_free)(o); } } -static int __pyx_tp_traverse_6CAStar___pyx_scope_struct__AStar2(PyObject *o, visitproc v, void *a) { +static int __pyx_tp_traverse_6CAStar_6CAStar___pyx_scope_struct__AStar2(PyObject *o, visitproc v, void *a) { int e; - struct __pyx_obj_6CAStar___pyx_scope_struct__AStar2 *p = (struct __pyx_obj_6CAStar___pyx_scope_struct__AStar2 *)o; + struct __pyx_obj_6CAStar_6CAStar___pyx_scope_struct__AStar2 *p = (struct __pyx_obj_6CAStar_6CAStar___pyx_scope_struct__AStar2 *)o; if (p->__pyx_v_f) { e = (*v)(p->__pyx_v_f, a); if (e) return e; } return 0; } -static int __pyx_tp_clear_6CAStar___pyx_scope_struct__AStar2(PyObject *o) { +static int __pyx_tp_clear_6CAStar_6CAStar___pyx_scope_struct__AStar2(PyObject *o) { PyObject* tmp; - struct __pyx_obj_6CAStar___pyx_scope_struct__AStar2 *p = (struct __pyx_obj_6CAStar___pyx_scope_struct__AStar2 *)o; + struct __pyx_obj_6CAStar_6CAStar___pyx_scope_struct__AStar2 *p = (struct __pyx_obj_6CAStar_6CAStar___pyx_scope_struct__AStar2 *)o; tmp = ((PyObject*)p->__pyx_v_f); p->__pyx_v_f = ((PyObject*)Py_None); Py_INCREF(Py_None); Py_XDECREF(tmp); return 0; } -static PyTypeObject __pyx_type_6CAStar___pyx_scope_struct__AStar2 = { +static PyTypeObject __pyx_type_6CAStar_6CAStar___pyx_scope_struct__AStar2 = { PyVarObject_HEAD_INIT(0, 0) - "CAStar.__pyx_scope_struct__AStar2", /*tp_name*/ - sizeof(struct __pyx_obj_6CAStar___pyx_scope_struct__AStar2), /*tp_basicsize*/ + "CAStar.CAStar.__pyx_scope_struct__AStar2", /*tp_name*/ + sizeof(struct __pyx_obj_6CAStar_6CAStar___pyx_scope_struct__AStar2), /*tp_basicsize*/ 0, /*tp_itemsize*/ - __pyx_tp_dealloc_6CAStar___pyx_scope_struct__AStar2, /*tp_dealloc*/ + __pyx_tp_dealloc_6CAStar_6CAStar___pyx_scope_struct__AStar2, /*tp_dealloc*/ 0, /*tp_print*/ 0, /*tp_getattr*/ 0, /*tp_setattr*/ @@ -4654,8 +4668,8 @@ static PyTypeObject __pyx_type_6CAStar___pyx_scope_struct__AStar2 = { 0, /*tp_as_buffer*/ Py_TPFLAGS_DEFAULT|Py_TPFLAGS_HAVE_VERSION_TAG|Py_TPFLAGS_CHECKTYPES|Py_TPFLAGS_HAVE_NEWBUFFER|Py_TPFLAGS_HAVE_GC, /*tp_flags*/ 0, /*tp_doc*/ - __pyx_tp_traverse_6CAStar___pyx_scope_struct__AStar2, /*tp_traverse*/ - __pyx_tp_clear_6CAStar___pyx_scope_struct__AStar2, /*tp_clear*/ + __pyx_tp_traverse_6CAStar_6CAStar___pyx_scope_struct__AStar2, /*tp_traverse*/ + __pyx_tp_clear_6CAStar_6CAStar___pyx_scope_struct__AStar2, /*tp_clear*/ 0, /*tp_richcompare*/ 0, /*tp_weaklistoffset*/ 0, /*tp_iter*/ @@ -4670,7 +4684,7 @@ static PyTypeObject __pyx_type_6CAStar___pyx_scope_struct__AStar2 = { 0, /*tp_dictoffset*/ 0, /*tp_init*/ 0, /*tp_alloc*/ - __pyx_tp_new_6CAStar___pyx_scope_struct__AStar2, /*tp_new*/ + __pyx_tp_new_6CAStar_6CAStar___pyx_scope_struct__AStar2, /*tp_new*/ 0, /*tp_free*/ 0, /*tp_is_gc*/ 0, /*tp_bases*/ @@ -4972,7 +4986,6 @@ static struct PyModuleDef __pyx_moduledef = { #endif static __Pyx_StringTabEntry __pyx_string_tab[] = { - {&__pyx_n_s_, __pyx_k_, sizeof(__pyx_k_), 0, 0, 1, 1}, {&__pyx_n_s_AATC_Coordinate, __pyx_k_AATC_Coordinate, sizeof(__pyx_k_AATC_Coordinate), 0, 0, 1, 1}, {&__pyx_n_s_AStar2, __pyx_k_AStar2, sizeof(__pyx_k_AStar2), 0, 0, 1, 1}, {&__pyx_n_s_AStar2_locals_lambda, __pyx_k_AStar2_locals_lambda, sizeof(__pyx_k_AStar2_locals_lambda), 0, 0, 1, 1}, @@ -4980,13 +4993,12 @@ static __Pyx_StringTabEntry __pyx_string_tab[] = { {&__pyx_kp_s_AStarPQ_not_available, __pyx_k_AStarPQ_not_available, sizeof(__pyx_k_AStarPQ_not_available), 0, 0, 1, 0}, {&__pyx_kp_s_A_Search_FAILED_Start, __pyx_k_A_Search_FAILED_Start, sizeof(__pyx_k_A_Search_FAILED_Start), 0, 0, 1, 0}, {&__pyx_kp_s_A_Time, __pyx_k_A_Time, sizeof(__pyx_k_A_Time), 0, 0, 1, 0}, - {&__pyx_n_s_CAStar, __pyx_k_CAStar, sizeof(__pyx_k_CAStar), 0, 0, 1, 1}, + {&__pyx_n_s_CAStar_CAStar, __pyx_k_CAStar_CAStar, sizeof(__pyx_k_CAStar_CAStar), 0, 0, 1, 1}, {&__pyx_kp_s_CAStar_pyx, __pyx_k_CAStar_pyx, sizeof(__pyx_k_CAStar_pyx), 0, 0, 1, 0}, {&__pyx_n_s_ClosedSet, __pyx_k_ClosedSet, sizeof(__pyx_k_ClosedSet), 0, 0, 1, 1}, {&__pyx_n_s_EndTime, __pyx_k_EndTime, sizeof(__pyx_k_EndTime), 0, 0, 1, 1}, {&__pyx_n_s_Found, __pyx_k_Found, sizeof(__pyx_k_Found), 0, 0, 1, 1}, {&__pyx_n_s_FriendList, __pyx_k_FriendList, sizeof(__pyx_k_FriendList), 0, 0, 1, 1}, - {&__pyx_n_s_Friends, __pyx_k_Friends, sizeof(__pyx_k_Friends), 0, 0, 1, 1}, {&__pyx_n_s_GetNode, __pyx_k_GetNode, sizeof(__pyx_k_GetNode), 0, 0, 1, 1}, {&__pyx_n_s_Get_Cost, __pyx_k_Get_Cost, sizeof(__pyx_k_Get_Cost), 0, 0, 1, 1}, {&__pyx_n_s_Get_Friends, __pyx_k_Get_Friends, sizeof(__pyx_k_Get_Friends), 0, 0, 1, 1}, @@ -5004,6 +5016,7 @@ static __Pyx_StringTabEntry __pyx_string_tab[] = { {&__pyx_kp_s_Total_Expanded, __pyx_k_Total_Expanded, sizeof(__pyx_k_Total_Expanded), 0, 0, 1, 0}, {&__pyx_kp_s_You_do_not_have_math_inf_object, __pyx_k_You_do_not_have_math_inf_object, sizeof(__pyx_k_You_do_not_have_math_inf_object), 0, 0, 1, 0}, {&__pyx_n_s__2, __pyx_k__2, sizeof(__pyx_k__2), 0, 0, 1, 1}, + {&__pyx_n_s__3, __pyx_k__3, sizeof(__pyx_k__3), 0, 0, 1, 1}, {&__pyx_n_s_cameFrom, __pyx_k_cameFrom, sizeof(__pyx_k_cameFrom), 0, 0, 1, 1}, {&__pyx_n_s_cline_in_traceback, __pyx_k_cline_in_traceback, sizeof(__pyx_k_cline_in_traceback), 0, 0, 1, 1}, {&__pyx_n_s_current, __pyx_k_current, sizeof(__pyx_k_current), 0, 0, 1, 1}, @@ -5016,15 +5029,12 @@ static __Pyx_StringTabEntry __pyx_string_tab[] = { {&__pyx_n_s_gNode, __pyx_k_gNode, sizeof(__pyx_k_gNode), 0, 0, 1, 1}, {&__pyx_n_s_graph, __pyx_k_graph, sizeof(__pyx_k_graph), 0, 0, 1, 1}, {&__pyx_n_s_hashlib, __pyx_k_hashlib, sizeof(__pyx_k_hashlib), 0, 0, 1, 1}, - {&__pyx_n_s_heapq, __pyx_k_heapq, sizeof(__pyx_k_heapq), 0, 0, 1, 1}, {&__pyx_n_s_import, __pyx_k_import, sizeof(__pyx_k_import), 0, 0, 1, 1}, {&__pyx_n_s_inf, __pyx_k_inf, sizeof(__pyx_k_inf), 0, 0, 1, 1}, {&__pyx_n_s_key, __pyx_k_key, sizeof(__pyx_k_key), 0, 0, 1, 1}, {&__pyx_n_s_main, __pyx_k_main, sizeof(__pyx_k_main), 0, 0, 1, 1}, {&__pyx_n_s_math, __pyx_k_math, sizeof(__pyx_k_math), 0, 0, 1, 1}, {&__pyx_n_s_min, __pyx_k_min, sizeof(__pyx_k_min), 0, 0, 1, 1}, - {&__pyx_n_s_os, __pyx_k_os, sizeof(__pyx_k_os), 0, 0, 1, 1}, - {&__pyx_n_s_pickle, __pyx_k_pickle, sizeof(__pyx_k_pickle), 0, 0, 1, 1}, {&__pyx_n_s_pop, __pyx_k_pop, sizeof(__pyx_k_pop), 0, 0, 1, 1}, {&__pyx_n_s_print, __pyx_k_print, sizeof(__pyx_k_print), 0, 0, 1, 1}, {&__pyx_n_s_put, __pyx_k_put, sizeof(__pyx_k_put), 0, 0, 1, 1}, @@ -5053,29 +5063,40 @@ static int __Pyx_InitCachedConstants(void) { __Pyx_RefNannyDeclarations __Pyx_RefNannySetupContext("__Pyx_InitCachedConstants", 0); - /* "CAStar.pyx":54 + /* "CAStar/CAStar.pyx":187 + * current = cameFrom[current] + * path.append(current) + * return path[::-1] # <<<<<<<<<<<<<< + * + * + */ + __pyx_slice_ = PySlice_New(Py_None, Py_None, __pyx_int_neg_1); if (unlikely(!__pyx_slice_)) __PYX_ERR(0, 187, __pyx_L1_error) + __Pyx_GOTREF(__pyx_slice_); + __Pyx_GIVEREF(__pyx_slice_); + + /* "CAStar/CAStar.pyx":54 * return zCoord * * def AStarPQ(graph, int start, int target): # Set all g to node_count + 1 # <<<<<<<<<<<<<< * StartTime = time.time() * */ - __pyx_tuple__3 = PyTuple_Pack(26, __pyx_n_s_graph, __pyx_n_s_start, __pyx_n_s_target, __pyx_n_s_StartTime, __pyx_n_s_xSize, __pyx_n_s_ySize, __pyx_n_s_zSize, __pyx_n_s_gNode, __pyx_n_s_fTemp, __pyx_n_s_ClosedSet, __pyx_n_s_OpenSet, __pyx_n_s_cameFrom, __pyx_n_s_g, __pyx_n_s_f, __pyx_n_s_NodeID, __pyx_n_s_current, __pyx_n_s_tScore, __pyx_n_s_xCount, __pyx_n_s_yCount, __pyx_n_s_zCount, __pyx_n_s_FriendList, __pyx_n_s_TargetNode, __pyx_n_s_fp, __pyx_n_s_Found, __pyx_n_s_Node, __pyx_n_s_EndTime); if (unlikely(!__pyx_tuple__3)) __PYX_ERR(0, 54, __pyx_L1_error) - __Pyx_GOTREF(__pyx_tuple__3); - __Pyx_GIVEREF(__pyx_tuple__3); - __pyx_codeobj__4 = (PyObject*)__Pyx_PyCode_New(3, 0, 26, 0, 0, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__3, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_CAStar_pyx, __pyx_n_s_AStarPQ, 54, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__4)) __PYX_ERR(0, 54, __pyx_L1_error) + __pyx_tuple__4 = PyTuple_Pack(26, __pyx_n_s_graph, __pyx_n_s_start, __pyx_n_s_target, __pyx_n_s_StartTime, __pyx_n_s_xSize, __pyx_n_s_ySize, __pyx_n_s_zSize, __pyx_n_s_gNode, __pyx_n_s_fTemp, __pyx_n_s_ClosedSet, __pyx_n_s_OpenSet, __pyx_n_s_cameFrom, __pyx_n_s_g, __pyx_n_s_f, __pyx_n_s_NodeID, __pyx_n_s_current, __pyx_n_s_tScore, __pyx_n_s_xCount, __pyx_n_s_yCount, __pyx_n_s_zCount, __pyx_n_s_FriendList, __pyx_n_s_TargetNode, __pyx_n_s_fp, __pyx_n_s_Found, __pyx_n_s_Node, __pyx_n_s_EndTime); if (unlikely(!__pyx_tuple__4)) __PYX_ERR(0, 54, __pyx_L1_error) + __Pyx_GOTREF(__pyx_tuple__4); + __Pyx_GIVEREF(__pyx_tuple__4); + __pyx_codeobj__5 = (PyObject*)__Pyx_PyCode_New(3, 0, 26, 0, 0, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__4, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_CAStar_pyx, __pyx_n_s_AStarPQ, 54, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__5)) __PYX_ERR(0, 54, __pyx_L1_error) - /* "CAStar.pyx":121 + /* "CAStar/CAStar.pyx":121 * return None * * def AStar2(graph, int start, int target): # Set all g to node_count + 1 # <<<<<<<<<<<<<< * StartTime = time.time() * */ - __pyx_tuple__5 = PyTuple_Pack(24, __pyx_n_s_graph, __pyx_n_s_start, __pyx_n_s_target, __pyx_n_s_StartTime, __pyx_n_s_xSize, __pyx_n_s_ySize, __pyx_n_s_zSize, __pyx_n_s_gNode, __pyx_n_s_ClosedSet, __pyx_n_s_OpenSet, __pyx_n_s_cameFrom, __pyx_n_s_g, __pyx_n_s_f, __pyx_n_s_NodeID, __pyx_n_s_current, __pyx_n_s_tScore, __pyx_n_s_xCount, __pyx_n_s_yCount, __pyx_n_s_zCount, __pyx_n_s_FriendList, __pyx_n_s_TargetNode, __pyx_n_s_Found, __pyx_n_s_Node, __pyx_n_s_EndTime); if (unlikely(!__pyx_tuple__5)) __PYX_ERR(0, 121, __pyx_L1_error) - __Pyx_GOTREF(__pyx_tuple__5); - __Pyx_GIVEREF(__pyx_tuple__5); - __pyx_codeobj__6 = (PyObject*)__Pyx_PyCode_New(3, 0, 24, 0, 0, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__5, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_CAStar_pyx, __pyx_n_s_AStar2, 121, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__6)) __PYX_ERR(0, 121, __pyx_L1_error) + __pyx_tuple__6 = PyTuple_Pack(24, __pyx_n_s_graph, __pyx_n_s_start, __pyx_n_s_target, __pyx_n_s_StartTime, __pyx_n_s_xSize, __pyx_n_s_ySize, __pyx_n_s_zSize, __pyx_n_s_gNode, __pyx_n_s_ClosedSet, __pyx_n_s_OpenSet, __pyx_n_s_cameFrom, __pyx_n_s_g, __pyx_n_s_f, __pyx_n_s_NodeID, __pyx_n_s_current, __pyx_n_s_tScore, __pyx_n_s_xCount, __pyx_n_s_yCount, __pyx_n_s_zCount, __pyx_n_s_FriendList, __pyx_n_s_TargetNode, __pyx_n_s_Found, __pyx_n_s_Node, __pyx_n_s_EndTime); if (unlikely(!__pyx_tuple__6)) __PYX_ERR(0, 121, __pyx_L1_error) + __Pyx_GOTREF(__pyx_tuple__6); + __Pyx_GIVEREF(__pyx_tuple__6); + __pyx_codeobj__7 = (PyObject*)__Pyx_PyCode_New(3, 0, 24, 0, 0, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__6, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_CAStar_pyx, __pyx_n_s_AStar2, 121, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__7)) __PYX_ERR(0, 121, __pyx_L1_error) __Pyx_RefNannyFinishContext(); return 0; __pyx_L1_error:; @@ -5090,6 +5111,7 @@ static int __Pyx_InitGlobals(void) { __pyx_int_1 = PyInt_FromLong(1); if (unlikely(!__pyx_int_1)) __PYX_ERR(0, 1, __pyx_L1_error) __pyx_int_1000 = PyInt_FromLong(1000); if (unlikely(!__pyx_int_1000)) __PYX_ERR(0, 1, __pyx_L1_error) __pyx_int_100000000000000000000 = PyInt_FromString((char *)"100000000000000000000", 0, 0); if (unlikely(!__pyx_int_100000000000000000000)) __PYX_ERR(0, 1, __pyx_L1_error) + __pyx_int_neg_1 = PyInt_FromLong(-1); if (unlikely(!__pyx_int_neg_1)) __PYX_ERR(0, 1, __pyx_L1_error) return 0; __pyx_L1_error:; return -1; @@ -5113,6 +5135,7 @@ PyMODINIT_FUNC PyInit_CAStar(void) PyObject *__pyx_t_8 = NULL; PyObject *__pyx_t_9 = NULL; PyObject *__pyx_t_10 = NULL; + PyObject *__pyx_t_11 = NULL; __Pyx_RefNannyDeclarations #if CYTHON_REFNANNY __Pyx_RefNanny = __Pyx_RefNannyImportAPI("refnanny"); @@ -5170,14 +5193,14 @@ PyMODINIT_FUNC PyInit_CAStar(void) #if PY_MAJOR_VERSION < 3 && (__PYX_DEFAULT_STRING_ENCODING_IS_ASCII || __PYX_DEFAULT_STRING_ENCODING_IS_DEFAULT) if (__Pyx_init_sys_getdefaultencoding_params() < 0) __PYX_ERR(0, 1, __pyx_L1_error) #endif - if (__pyx_module_is_main_CAStar) { + if (__pyx_module_is_main_CAStar__CAStar) { if (PyObject_SetAttrString(__pyx_m, "__name__", __pyx_n_s_main) < 0) __PYX_ERR(0, 1, __pyx_L1_error) } #if PY_MAJOR_VERSION >= 3 { PyObject *modules = PyImport_GetModuleDict(); if (unlikely(!modules)) __PYX_ERR(0, 1, __pyx_L1_error) - if (!PyDict_GetItemString(modules, "CAStar")) { - if (unlikely(PyDict_SetItemString(modules, "CAStar", __pyx_m) < 0)) __PYX_ERR(0, 1, __pyx_L1_error) + if (!PyDict_GetItemString(modules, "CAStar.CAStar")) { + if (unlikely(PyDict_SetItemString(modules, "CAStar.CAStar", __pyx_m) < 0)) __PYX_ERR(0, 1, __pyx_L1_error) } } #endif @@ -5189,9 +5212,9 @@ PyMODINIT_FUNC PyInit_CAStar(void) /*--- Variable export code ---*/ /*--- Function export code ---*/ /*--- Type init code ---*/ - if (PyType_Ready(&__pyx_type_6CAStar___pyx_scope_struct__AStar2) < 0) __PYX_ERR(0, 121, __pyx_L1_error) - __pyx_type_6CAStar___pyx_scope_struct__AStar2.tp_print = 0; - __pyx_ptype_6CAStar___pyx_scope_struct__AStar2 = &__pyx_type_6CAStar___pyx_scope_struct__AStar2; + if (PyType_Ready(&__pyx_type_6CAStar_6CAStar___pyx_scope_struct__AStar2) < 0) __PYX_ERR(0, 121, __pyx_L1_error) + __pyx_type_6CAStar_6CAStar___pyx_scope_struct__AStar2.tp_print = 0; + __pyx_ptype_6CAStar_6CAStar___pyx_scope_struct__AStar2 = &__pyx_type_6CAStar_6CAStar___pyx_scope_struct__AStar2; /*--- Type import code ---*/ /*--- Variable import code ---*/ /*--- Function import code ---*/ @@ -5200,25 +5223,13 @@ PyMODINIT_FUNC PyInit_CAStar(void) if (__Pyx_patch_abc() < 0) __PYX_ERR(0, 1, __pyx_L1_error) #endif - /* "CAStar.pyx":5 + /* "CAStar/CAStar.pyx":5 * * - * import os,pickle,heapq,time,math,hashlib # <<<<<<<<<<<<<< + * import time,math,hashlib # <<<<<<<<<<<<<< * from AATC_Coordinate import * * try: */ - __pyx_t_1 = __Pyx_Import(__pyx_n_s_os, 0, -1); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 5, __pyx_L1_error) - __Pyx_GOTREF(__pyx_t_1); - if (PyDict_SetItem(__pyx_d, __pyx_n_s_os, __pyx_t_1) < 0) __PYX_ERR(0, 5, __pyx_L1_error) - __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; - __pyx_t_1 = __Pyx_Import(__pyx_n_s_pickle, 0, -1); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 5, __pyx_L1_error) - __Pyx_GOTREF(__pyx_t_1); - if (PyDict_SetItem(__pyx_d, __pyx_n_s_pickle, __pyx_t_1) < 0) __PYX_ERR(0, 5, __pyx_L1_error) - __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; - __pyx_t_1 = __Pyx_Import(__pyx_n_s_heapq, 0, -1); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 5, __pyx_L1_error) - __Pyx_GOTREF(__pyx_t_1); - if (PyDict_SetItem(__pyx_d, __pyx_n_s_heapq, __pyx_t_1) < 0) __PYX_ERR(0, 5, __pyx_L1_error) - __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; __pyx_t_1 = __Pyx_Import(__pyx_n_s_time, 0, -1); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 5, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_1); if (PyDict_SetItem(__pyx_d, __pyx_n_s_time, __pyx_t_1) < 0) __PYX_ERR(0, 5, __pyx_L1_error) @@ -5232,26 +5243,26 @@ PyMODINIT_FUNC PyInit_CAStar(void) if (PyDict_SetItem(__pyx_d, __pyx_n_s_hashlib, __pyx_t_1) < 0) __PYX_ERR(0, 5, __pyx_L1_error) __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; - /* "CAStar.pyx":6 + /* "CAStar/CAStar.pyx":6 * - * import os,pickle,heapq,time,math,hashlib + * import time,math,hashlib * from AATC_Coordinate import * # <<<<<<<<<<<<<< * try: * try: */ __pyx_t_1 = PyList_New(1); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 6, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_1); - __Pyx_INCREF(__pyx_n_s_); - __Pyx_GIVEREF(__pyx_n_s_); - PyList_SET_ITEM(__pyx_t_1, 0, __pyx_n_s_); + __Pyx_INCREF(__pyx_n_s__2); + __Pyx_GIVEREF(__pyx_n_s__2); + PyList_SET_ITEM(__pyx_t_1, 0, __pyx_n_s__2); __pyx_t_2 = __Pyx_Import(__pyx_n_s_AATC_Coordinate, __pyx_t_1, -1); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 6, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_2); __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; if (__pyx_import_star(__pyx_t_2) < 0) __PYX_ERR(0, 6, __pyx_L1_error); __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; - /* "CAStar.pyx":7 - * import os,pickle,heapq,time,math,hashlib + /* "CAStar/CAStar.pyx":7 + * import time,math,hashlib * from AATC_Coordinate import * * try: # <<<<<<<<<<<<<< * try: @@ -5266,7 +5277,7 @@ PyMODINIT_FUNC PyInit_CAStar(void) __Pyx_XGOTREF(__pyx_t_5); /*try:*/ { - /* "CAStar.pyx":8 + /* "CAStar/CAStar.pyx":8 * from AATC_Coordinate import * * try: * try: # <<<<<<<<<<<<<< @@ -5282,7 +5293,7 @@ PyMODINIT_FUNC PyInit_CAStar(void) __Pyx_XGOTREF(__pyx_t_8); /*try:*/ { - /* "CAStar.pyx":9 + /* "CAStar/CAStar.pyx":9 * try: * try: * import PriorityQueue.PriorityQueueC as PriorityQueue # <<<<<<<<<<<<<< @@ -5291,16 +5302,16 @@ PyMODINIT_FUNC PyInit_CAStar(void) */ __pyx_t_2 = PyList_New(1); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 9, __pyx_L8_error) __Pyx_GOTREF(__pyx_t_2); - __Pyx_INCREF(__pyx_n_s_); - __Pyx_GIVEREF(__pyx_n_s_); - PyList_SET_ITEM(__pyx_t_2, 0, __pyx_n_s_); + __Pyx_INCREF(__pyx_n_s__2); + __Pyx_GIVEREF(__pyx_n_s__2); + PyList_SET_ITEM(__pyx_t_2, 0, __pyx_n_s__2); __pyx_t_1 = __Pyx_Import(__pyx_n_s_PriorityQueue_PriorityQueueC, __pyx_t_2, -1); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 9, __pyx_L8_error) __Pyx_GOTREF(__pyx_t_1); __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; if (PyDict_SetItem(__pyx_d, __pyx_n_s_PriorityQueue, __pyx_t_1) < 0) __PYX_ERR(0, 9, __pyx_L8_error) __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; - /* "CAStar.pyx":8 + /* "CAStar/CAStar.pyx":8 * from AATC_Coordinate import * * try: * try: # <<<<<<<<<<<<<< @@ -5317,40 +5328,46 @@ PyMODINIT_FUNC PyInit_CAStar(void) __Pyx_XDECREF(__pyx_t_2); __pyx_t_2 = 0; __Pyx_XDECREF(__pyx_t_1); __pyx_t_1 = 0; - /* "CAStar.pyx":10 + /* "CAStar/CAStar.pyx":10 * try: * import PriorityQueue.PriorityQueueC as PriorityQueue * except: # <<<<<<<<<<<<<< * print("PriotityQueueC not available, defaulting to pure python") - * import PriorityQueue.PriorityQueue + * import PriorityQueue.PriorityQueue as PriorityQueue */ /*except:*/ { - __Pyx_AddTraceback("CAStar", __pyx_clineno, __pyx_lineno, __pyx_filename); + __Pyx_AddTraceback("CAStar.CAStar", __pyx_clineno, __pyx_lineno, __pyx_filename); if (__Pyx_GetException(&__pyx_t_1, &__pyx_t_2, &__pyx_t_9) < 0) __PYX_ERR(0, 10, __pyx_L10_except_error) __Pyx_GOTREF(__pyx_t_1); __Pyx_GOTREF(__pyx_t_2); __Pyx_GOTREF(__pyx_t_9); - /* "CAStar.pyx":11 + /* "CAStar/CAStar.pyx":11 * import PriorityQueue.PriorityQueueC as PriorityQueue * except: * print("PriotityQueueC not available, defaulting to pure python") # <<<<<<<<<<<<<< - * import PriorityQueue.PriorityQueue + * import PriorityQueue.PriorityQueue as PriorityQueue * except: */ if (__Pyx_PrintOne(0, __pyx_kp_s_PriotityQueueC_not_available_def) < 0) __PYX_ERR(0, 11, __pyx_L10_except_error) - /* "CAStar.pyx":12 + /* "CAStar/CAStar.pyx":12 * except: * print("PriotityQueueC not available, defaulting to pure python") - * import PriorityQueue.PriorityQueue # <<<<<<<<<<<<<< + * import PriorityQueue.PriorityQueue as PriorityQueue # <<<<<<<<<<<<<< * except: * print("AStarPQ not available") */ - __pyx_t_10 = __Pyx_Import(__pyx_n_s_PriorityQueue_PriorityQueue, 0, -1); if (unlikely(!__pyx_t_10)) __PYX_ERR(0, 12, __pyx_L10_except_error) + __pyx_t_10 = PyList_New(1); if (unlikely(!__pyx_t_10)) __PYX_ERR(0, 12, __pyx_L10_except_error) __Pyx_GOTREF(__pyx_t_10); - if (PyDict_SetItem(__pyx_d, __pyx_n_s_PriorityQueue, __pyx_t_10) < 0) __PYX_ERR(0, 12, __pyx_L10_except_error) + __Pyx_INCREF(__pyx_n_s__2); + __Pyx_GIVEREF(__pyx_n_s__2); + PyList_SET_ITEM(__pyx_t_10, 0, __pyx_n_s__2); + __pyx_t_11 = __Pyx_Import(__pyx_n_s_PriorityQueue_PriorityQueue, __pyx_t_10, -1); if (unlikely(!__pyx_t_11)) __PYX_ERR(0, 12, __pyx_L10_except_error) + __Pyx_GOTREF(__pyx_t_11); __Pyx_DECREF(__pyx_t_10); __pyx_t_10 = 0; + if (PyDict_SetItem(__pyx_d, __pyx_n_s_PriorityQueue, __pyx_t_11) < 0) __PYX_ERR(0, 12, __pyx_L10_except_error) + __Pyx_DECREF(__pyx_t_11); __pyx_t_11 = 0; __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; __Pyx_DECREF(__pyx_t_9); __pyx_t_9 = 0; @@ -5358,7 +5375,7 @@ PyMODINIT_FUNC PyInit_CAStar(void) } __pyx_L10_except_error:; - /* "CAStar.pyx":8 + /* "CAStar/CAStar.pyx":8 * from AATC_Coordinate import * * try: * try: # <<<<<<<<<<<<<< @@ -5380,8 +5397,8 @@ PyMODINIT_FUNC PyInit_CAStar(void) __pyx_L13_try_end:; } - /* "CAStar.pyx":7 - * import os,pickle,heapq,time,math,hashlib + /* "CAStar/CAStar.pyx":7 + * import time,math,hashlib * from AATC_Coordinate import * * try: # <<<<<<<<<<<<<< * try: @@ -5395,26 +5412,27 @@ PyMODINIT_FUNC PyInit_CAStar(void) __pyx_L2_error:; __Pyx_PyThreadState_assign __Pyx_XDECREF(__pyx_t_10); __pyx_t_10 = 0; + __Pyx_XDECREF(__pyx_t_11); __pyx_t_11 = 0; __Pyx_XDECREF(__pyx_t_1); __pyx_t_1 = 0; __Pyx_XDECREF(__pyx_t_2); __pyx_t_2 = 0; __Pyx_XDECREF(__pyx_t_9); __pyx_t_9 = 0; - /* "CAStar.pyx":13 + /* "CAStar/CAStar.pyx":13 * print("PriotityQueueC not available, defaulting to pure python") - * import PriorityQueue.PriorityQueue + * import PriorityQueue.PriorityQueue as PriorityQueue * except: # <<<<<<<<<<<<<< * print("AStarPQ not available") * */ /*except:*/ { - __Pyx_AddTraceback("CAStar", __pyx_clineno, __pyx_lineno, __pyx_filename); + __Pyx_AddTraceback("CAStar.CAStar", __pyx_clineno, __pyx_lineno, __pyx_filename); if (__Pyx_GetException(&__pyx_t_9, &__pyx_t_2, &__pyx_t_1) < 0) __PYX_ERR(0, 13, __pyx_L4_except_error) __Pyx_GOTREF(__pyx_t_9); __Pyx_GOTREF(__pyx_t_2); __Pyx_GOTREF(__pyx_t_1); - /* "CAStar.pyx":14 - * import PriorityQueue.PriorityQueue + /* "CAStar/CAStar.pyx":14 + * import PriorityQueue.PriorityQueue as PriorityQueue * except: * print("AStarPQ not available") # <<<<<<<<<<<<<< * @@ -5428,8 +5446,8 @@ PyMODINIT_FUNC PyInit_CAStar(void) } __pyx_L4_except_error:; - /* "CAStar.pyx":7 - * import os,pickle,heapq,time,math,hashlib + /* "CAStar/CAStar.pyx":7 + * import time,math,hashlib * from AATC_Coordinate import * * try: # <<<<<<<<<<<<<< * try: @@ -5450,7 +5468,7 @@ PyMODINIT_FUNC PyInit_CAStar(void) __pyx_L7_try_end:; } - /* "CAStar.pyx":16 + /* "CAStar/CAStar.pyx":16 * print("AStarPQ not available") * * try: # <<<<<<<<<<<<<< @@ -5466,7 +5484,7 @@ PyMODINIT_FUNC PyInit_CAStar(void) __Pyx_XGOTREF(__pyx_t_3); /*try:*/ { - /* "CAStar.pyx":17 + /* "CAStar/CAStar.pyx":17 * * try: * _ = math.inf # <<<<<<<<<<<<<< @@ -5478,10 +5496,10 @@ PyMODINIT_FUNC PyInit_CAStar(void) __pyx_t_2 = __Pyx_PyObject_GetAttrStr(__pyx_t_1, __pyx_n_s_inf); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 17, __pyx_L18_error) __Pyx_GOTREF(__pyx_t_2); __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; - if (PyDict_SetItem(__pyx_d, __pyx_n_s__2, __pyx_t_2) < 0) __PYX_ERR(0, 17, __pyx_L18_error) + if (PyDict_SetItem(__pyx_d, __pyx_n_s__3, __pyx_t_2) < 0) __PYX_ERR(0, 17, __pyx_L18_error) __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; - /* "CAStar.pyx":16 + /* "CAStar/CAStar.pyx":16 * print("AStarPQ not available") * * try: # <<<<<<<<<<<<<< @@ -5496,11 +5514,12 @@ PyMODINIT_FUNC PyInit_CAStar(void) __pyx_L18_error:; __Pyx_PyThreadState_assign __Pyx_XDECREF(__pyx_t_10); __pyx_t_10 = 0; + __Pyx_XDECREF(__pyx_t_11); __pyx_t_11 = 0; __Pyx_XDECREF(__pyx_t_9); __pyx_t_9 = 0; __Pyx_XDECREF(__pyx_t_1); __pyx_t_1 = 0; __Pyx_XDECREF(__pyx_t_2); __pyx_t_2 = 0; - /* "CAStar.pyx":18 + /* "CAStar/CAStar.pyx":18 * try: * _ = math.inf * except: # <<<<<<<<<<<<<< @@ -5508,13 +5527,13 @@ PyMODINIT_FUNC PyInit_CAStar(void) * math.inf = 10**20 */ /*except:*/ { - __Pyx_AddTraceback("CAStar", __pyx_clineno, __pyx_lineno, __pyx_filename); + __Pyx_AddTraceback("CAStar.CAStar", __pyx_clineno, __pyx_lineno, __pyx_filename); if (__Pyx_GetException(&__pyx_t_2, &__pyx_t_1, &__pyx_t_9) < 0) __PYX_ERR(0, 18, __pyx_L20_except_error) __Pyx_GOTREF(__pyx_t_2); __Pyx_GOTREF(__pyx_t_1); __Pyx_GOTREF(__pyx_t_9); - /* "CAStar.pyx":19 + /* "CAStar/CAStar.pyx":19 * _ = math.inf * except: * print("You do not have math.inf object, Python 3.5 onwards. Will use replacement.") # <<<<<<<<<<<<<< @@ -5523,17 +5542,17 @@ PyMODINIT_FUNC PyInit_CAStar(void) */ if (__Pyx_PrintOne(0, __pyx_kp_s_You_do_not_have_math_inf_object) < 0) __PYX_ERR(0, 19, __pyx_L20_except_error) - /* "CAStar.pyx":20 + /* "CAStar/CAStar.pyx":20 * except: * print("You do not have math.inf object, Python 3.5 onwards. Will use replacement.") * math.inf = 10**20 # <<<<<<<<<<<<<< * * cdef float EstimateDistance(int NodeID, int TargetID, int xCount,int yCount,int zCount, float xSize, float ySize, float zSize): */ - __pyx_t_10 = __Pyx_GetModuleGlobalName(__pyx_n_s_math); if (unlikely(!__pyx_t_10)) __PYX_ERR(0, 20, __pyx_L20_except_error) - __Pyx_GOTREF(__pyx_t_10); - if (__Pyx_PyObject_SetAttrStr(__pyx_t_10, __pyx_n_s_inf, __pyx_int_100000000000000000000) < 0) __PYX_ERR(0, 20, __pyx_L20_except_error) - __Pyx_DECREF(__pyx_t_10); __pyx_t_10 = 0; + __pyx_t_11 = __Pyx_GetModuleGlobalName(__pyx_n_s_math); if (unlikely(!__pyx_t_11)) __PYX_ERR(0, 20, __pyx_L20_except_error) + __Pyx_GOTREF(__pyx_t_11); + if (__Pyx_PyObject_SetAttrStr(__pyx_t_11, __pyx_n_s_inf, __pyx_int_100000000000000000000) < 0) __PYX_ERR(0, 20, __pyx_L20_except_error) + __Pyx_DECREF(__pyx_t_11); __pyx_t_11 = 0; __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; __Pyx_DECREF(__pyx_t_9); __pyx_t_9 = 0; @@ -5541,7 +5560,7 @@ PyMODINIT_FUNC PyInit_CAStar(void) } __pyx_L20_except_error:; - /* "CAStar.pyx":16 + /* "CAStar/CAStar.pyx":16 * print("AStarPQ not available") * * try: # <<<<<<<<<<<<<< @@ -5563,31 +5582,31 @@ PyMODINIT_FUNC PyInit_CAStar(void) __pyx_L23_try_end:; } - /* "CAStar.pyx":54 + /* "CAStar/CAStar.pyx":54 * return zCoord * * def AStarPQ(graph, int start, int target): # Set all g to node_count + 1 # <<<<<<<<<<<<<< * StartTime = time.time() * */ - __pyx_t_9 = PyCFunction_NewEx(&__pyx_mdef_6CAStar_1AStarPQ, NULL, __pyx_n_s_CAStar); if (unlikely(!__pyx_t_9)) __PYX_ERR(0, 54, __pyx_L1_error) + __pyx_t_9 = PyCFunction_NewEx(&__pyx_mdef_6CAStar_6CAStar_1AStarPQ, NULL, __pyx_n_s_CAStar_CAStar); if (unlikely(!__pyx_t_9)) __PYX_ERR(0, 54, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_9); if (PyDict_SetItem(__pyx_d, __pyx_n_s_AStarPQ, __pyx_t_9) < 0) __PYX_ERR(0, 54, __pyx_L1_error) __Pyx_DECREF(__pyx_t_9); __pyx_t_9 = 0; - /* "CAStar.pyx":121 + /* "CAStar/CAStar.pyx":121 * return None * * def AStar2(graph, int start, int target): # Set all g to node_count + 1 # <<<<<<<<<<<<<< * StartTime = time.time() * */ - __pyx_t_9 = PyCFunction_NewEx(&__pyx_mdef_6CAStar_3AStar2, NULL, __pyx_n_s_CAStar); if (unlikely(!__pyx_t_9)) __PYX_ERR(0, 121, __pyx_L1_error) + __pyx_t_9 = PyCFunction_NewEx(&__pyx_mdef_6CAStar_6CAStar_3AStar2, NULL, __pyx_n_s_CAStar_CAStar); if (unlikely(!__pyx_t_9)) __PYX_ERR(0, 121, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_9); if (PyDict_SetItem(__pyx_d, __pyx_n_s_AStar2, __pyx_t_9) < 0) __PYX_ERR(0, 121, __pyx_L1_error) __Pyx_DECREF(__pyx_t_9); __pyx_t_9 = 0; - /* "CAStar.pyx":1 + /* "CAStar/CAStar.pyx":1 * #!python # <<<<<<<<<<<<<< * #cython: boundscheck=False, wraparound=False, infer_types=True,cdivision = True * @@ -5605,13 +5624,14 @@ PyMODINIT_FUNC PyInit_CAStar(void) __Pyx_XDECREF(__pyx_t_2); __Pyx_XDECREF(__pyx_t_9); __Pyx_XDECREF(__pyx_t_10); + __Pyx_XDECREF(__pyx_t_11); if (__pyx_m) { if (__pyx_d) { - __Pyx_AddTraceback("init CAStar", 0, __pyx_lineno, __pyx_filename); + __Pyx_AddTraceback("init CAStar.CAStar", 0, __pyx_lineno, __pyx_filename); } Py_DECREF(__pyx_m); __pyx_m = 0; } else if (!PyErr_Occurred()) { - PyErr_SetString(PyExc_ImportError, "init CAStar"); + PyErr_SetString(PyExc_ImportError, "init CAStar.CAStar"); } __pyx_L0:; __Pyx_RefNannyFinishContext(); diff --git a/CAStar/CAStar.html b/CAStar/CAStar.html index c543840..0d663a8 100644 --- a/CAStar/CAStar.html +++ b/CAStar/CAStar.html @@ -306,20 +306,8 @@
 002: #cython: boundscheck=False, wraparound=False, infer_types=True,cdivision = True
 003: 
 004: 
-
+005: import os,pickle,heapq,time,math,hashlib
-
  __pyx_t_1 = __Pyx_Import(__pyx_n_s_os, 0, -1); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 5, __pyx_L1_error)
-  __Pyx_GOTREF(__pyx_t_1);
-  if (PyDict_SetItem(__pyx_d, __pyx_n_s_os, __pyx_t_1) < 0) __PYX_ERR(0, 5, __pyx_L1_error)
-  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
-  __pyx_t_1 = __Pyx_Import(__pyx_n_s_pickle, 0, -1); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 5, __pyx_L1_error)
-  __Pyx_GOTREF(__pyx_t_1);
-  if (PyDict_SetItem(__pyx_d, __pyx_n_s_pickle, __pyx_t_1) < 0) __PYX_ERR(0, 5, __pyx_L1_error)
-  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
-  __pyx_t_1 = __Pyx_Import(__pyx_n_s_heapq, 0, -1); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 5, __pyx_L1_error)
-  __Pyx_GOTREF(__pyx_t_1);
-  if (PyDict_SetItem(__pyx_d, __pyx_n_s_heapq, __pyx_t_1) < 0) __PYX_ERR(0, 5, __pyx_L1_error)
-  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
-  __pyx_t_1 = __Pyx_Import(__pyx_n_s_time, 0, -1); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 5, __pyx_L1_error)
+
+005: import time,math,hashlib
+
  __pyx_t_1 = __Pyx_Import(__pyx_n_s_time, 0, -1); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 5, __pyx_L1_error)
   __Pyx_GOTREF(__pyx_t_1);
   if (PyDict_SetItem(__pyx_d, __pyx_n_s_time, __pyx_t_1) < 0) __PYX_ERR(0, 5, __pyx_L1_error)
   __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
@@ -334,16 +322,16 @@
 
+006: from AATC_Coordinate import *
  __pyx_t_1 = PyList_New(1); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 6, __pyx_L1_error)
   __Pyx_GOTREF(__pyx_t_1);
-  __Pyx_INCREF(__pyx_n_s_);
-  __Pyx_GIVEREF(__pyx_n_s_);
-  PyList_SET_ITEM(__pyx_t_1, 0, __pyx_n_s_);
+  __Pyx_INCREF(__pyx_n_s__2);
+  __Pyx_GIVEREF(__pyx_n_s__2);
+  PyList_SET_ITEM(__pyx_t_1, 0, __pyx_n_s__2);
   __pyx_t_2 = __Pyx_Import(__pyx_n_s_AATC_Coordinate, __pyx_t_1, -1); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 6, __pyx_L1_error)
   __Pyx_GOTREF(__pyx_t_2);
   __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
   if (__pyx_import_star(__pyx_t_2) < 0) __PYX_ERR(0, 6, __pyx_L1_error);
   __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
-
+007: try:
-
  {
+
+007: try:
+
  {
     /*try:*/ {
 /* … */
     }
@@ -354,6 +342,7 @@
     __pyx_L2_error:;
     __Pyx_PyThreadState_assign
     __Pyx_XDECREF(__pyx_t_10); __pyx_t_10 = 0;
+    __Pyx_XDECREF(__pyx_t_11); __pyx_t_11 = 0;
     __Pyx_XDECREF(__pyx_t_1); __pyx_t_1 = 0;
     __Pyx_XDECREF(__pyx_t_2); __pyx_t_2 = 0;
     __Pyx_XDECREF(__pyx_t_9); __pyx_t_9 = 0;
@@ -403,9 +392,9 @@
 
+009:         import PriorityQueue.PriorityQueueC as PriorityQueue
          __pyx_t_2 = PyList_New(1); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 9, __pyx_L8_error)
           __Pyx_GOTREF(__pyx_t_2);
-          __Pyx_INCREF(__pyx_n_s_);
-          __Pyx_GIVEREF(__pyx_n_s_);
-          PyList_SET_ITEM(__pyx_t_2, 0, __pyx_n_s_);
+          __Pyx_INCREF(__pyx_n_s__2);
+          __Pyx_GIVEREF(__pyx_n_s__2);
+          PyList_SET_ITEM(__pyx_t_2, 0, __pyx_n_s__2);
           __pyx_t_1 = __Pyx_Import(__pyx_n_s_PriorityQueue_PriorityQueueC, __pyx_t_2, -1); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 9, __pyx_L8_error)
           __Pyx_GOTREF(__pyx_t_1);
           __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
@@ -413,18 +402,24 @@
           __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
 
+010:     except:
        /*except:*/ {
-          __Pyx_AddTraceback("CAStar", __pyx_clineno, __pyx_lineno, __pyx_filename);
+          __Pyx_AddTraceback("CAStar.CAStar", __pyx_clineno, __pyx_lineno, __pyx_filename);
           if (__Pyx_GetException(&__pyx_t_1, &__pyx_t_2, &__pyx_t_9) < 0) __PYX_ERR(0, 10, __pyx_L10_except_error)
           __Pyx_GOTREF(__pyx_t_1);
           __Pyx_GOTREF(__pyx_t_2);
           __Pyx_GOTREF(__pyx_t_9);
 
+011:         print("PriotityQueueC not available, defaulting to pure python")
          if (__Pyx_PrintOne(0, __pyx_kp_s_PriotityQueueC_not_available_def) < 0) __PYX_ERR(0, 11, __pyx_L10_except_error)
-
+012:         import PriorityQueue.PriorityQueue
-
          __pyx_t_10 = __Pyx_Import(__pyx_n_s_PriorityQueue_PriorityQueue, 0, -1); if (unlikely(!__pyx_t_10)) __PYX_ERR(0, 12, __pyx_L10_except_error)
+
+012:         import PriorityQueue.PriorityQueue as PriorityQueue
+
          __pyx_t_10 = PyList_New(1); if (unlikely(!__pyx_t_10)) __PYX_ERR(0, 12, __pyx_L10_except_error)
           __Pyx_GOTREF(__pyx_t_10);
-          if (PyDict_SetItem(__pyx_d, __pyx_n_s_PriorityQueue, __pyx_t_10) < 0) __PYX_ERR(0, 12, __pyx_L10_except_error)
+          __Pyx_INCREF(__pyx_n_s__2);
+          __Pyx_GIVEREF(__pyx_n_s__2);
+          PyList_SET_ITEM(__pyx_t_10, 0, __pyx_n_s__2);
+          __pyx_t_11 = __Pyx_Import(__pyx_n_s_PriorityQueue_PriorityQueue, __pyx_t_10, -1); if (unlikely(!__pyx_t_11)) __PYX_ERR(0, 12, __pyx_L10_except_error)
+          __Pyx_GOTREF(__pyx_t_11);
           __Pyx_DECREF(__pyx_t_10); __pyx_t_10 = 0;
+          if (PyDict_SetItem(__pyx_d, __pyx_n_s_PriorityQueue, __pyx_t_11) < 0) __PYX_ERR(0, 12, __pyx_L10_except_error)
+          __Pyx_DECREF(__pyx_t_11); __pyx_t_11 = 0;
           __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
           __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
           __Pyx_DECREF(__pyx_t_9); __pyx_t_9 = 0;
@@ -433,7 +428,7 @@
         __pyx_L10_except_error:;
 
+013: except:
    /*except:*/ {
-      __Pyx_AddTraceback("CAStar", __pyx_clineno, __pyx_lineno, __pyx_filename);
+      __Pyx_AddTraceback("CAStar.CAStar", __pyx_clineno, __pyx_lineno, __pyx_filename);
       if (__Pyx_GetException(&__pyx_t_9, &__pyx_t_2, &__pyx_t_1) < 0) __PYX_ERR(0, 13, __pyx_L4_except_error)
       __Pyx_GOTREF(__pyx_t_9);
       __Pyx_GOTREF(__pyx_t_2);
@@ -447,8 +442,8 @@
     }
     __pyx_L4_except_error:;
 
 015: 
-
+016: try:
-
  {
+
+016: try:
+
  {
     /*try:*/ {
 /* … */
     }
@@ -459,6 +454,7 @@
     __pyx_L18_error:;
     __Pyx_PyThreadState_assign
     __Pyx_XDECREF(__pyx_t_10); __pyx_t_10 = 0;
+    __Pyx_XDECREF(__pyx_t_11); __pyx_t_11 = 0;
     __Pyx_XDECREF(__pyx_t_9); __pyx_t_9 = 0;
     __Pyx_XDECREF(__pyx_t_1); __pyx_t_1 = 0;
     __Pyx_XDECREF(__pyx_t_2); __pyx_t_2 = 0;
@@ -483,11 +479,11 @@
       __pyx_t_2 = __Pyx_PyObject_GetAttrStr(__pyx_t_1, __pyx_n_s_inf); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 17, __pyx_L18_error)
       __Pyx_GOTREF(__pyx_t_2);
       __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
-      if (PyDict_SetItem(__pyx_d, __pyx_n_s__2, __pyx_t_2) < 0) __PYX_ERR(0, 17, __pyx_L18_error)
+      if (PyDict_SetItem(__pyx_d, __pyx_n_s__3, __pyx_t_2) < 0) __PYX_ERR(0, 17, __pyx_L18_error)
       __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
 
+018: except:
    /*except:*/ {
-      __Pyx_AddTraceback("CAStar", __pyx_clineno, __pyx_lineno, __pyx_filename);
+      __Pyx_AddTraceback("CAStar.CAStar", __pyx_clineno, __pyx_lineno, __pyx_filename);
       if (__Pyx_GetException(&__pyx_t_2, &__pyx_t_1, &__pyx_t_9) < 0) __PYX_ERR(0, 18, __pyx_L20_except_error)
       __Pyx_GOTREF(__pyx_t_2);
       __Pyx_GOTREF(__pyx_t_1);
@@ -495,10 +491,10 @@
 
+019:     print("You do not have math.inf object, Python 3.5 onwards. Will use replacement.")
      if (__Pyx_PrintOne(0, __pyx_kp_s_You_do_not_have_math_inf_object) < 0) __PYX_ERR(0, 19, __pyx_L20_except_error)
 
+020:     math.inf = 10**20
-
      __pyx_t_10 = __Pyx_GetModuleGlobalName(__pyx_n_s_math); if (unlikely(!__pyx_t_10)) __PYX_ERR(0, 20, __pyx_L20_except_error)
-      __Pyx_GOTREF(__pyx_t_10);
-      if (__Pyx_PyObject_SetAttrStr(__pyx_t_10, __pyx_n_s_inf, __pyx_int_100000000000000000000) < 0) __PYX_ERR(0, 20, __pyx_L20_except_error)
-      __Pyx_DECREF(__pyx_t_10); __pyx_t_10 = 0;
+
      __pyx_t_11 = __Pyx_GetModuleGlobalName(__pyx_n_s_math); if (unlikely(!__pyx_t_11)) __PYX_ERR(0, 20, __pyx_L20_except_error)
+      __Pyx_GOTREF(__pyx_t_11);
+      if (__Pyx_PyObject_SetAttrStr(__pyx_t_11, __pyx_n_s_inf, __pyx_int_100000000000000000000) < 0) __PYX_ERR(0, 20, __pyx_L20_except_error)
+      __Pyx_DECREF(__pyx_t_11); __pyx_t_11 = 0;
       __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
       __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
       __Pyx_DECREF(__pyx_t_9); __pyx_t_9 = 0;
@@ -507,7 +503,7 @@
     __pyx_L20_except_error:;
 
 021: 
+022: cdef float EstimateDistance(int NodeID, int TargetID, int xCount,int yCount,int zCount, float xSize, float ySize, float zSize):
-
static float __pyx_f_6CAStar_EstimateDistance(int __pyx_v_NodeID, int __pyx_v_TargetID, int __pyx_v_xCount, int __pyx_v_yCount, int __pyx_v_zCount, float __pyx_v_xSize, float __pyx_v_ySize, float __pyx_v_zSize) {
+
static float __pyx_f_6CAStar_6CAStar_EstimateDistance(int __pyx_v_NodeID, int __pyx_v_TargetID, int __pyx_v_xCount, int __pyx_v_yCount, int __pyx_v_zCount, float __pyx_v_xSize, float __pyx_v_ySize, float __pyx_v_zSize) {
   float __pyx_v_x;
   float __pyx_v_y;
   float __pyx_v_z;
@@ -530,16 +526,16 @@
 
 023:     cdef float x,y,z,Nx,Ny,Nz,Tx,Ty,Tz
 024:     cdef float Distance
+025:     Nx,Ny,Nz = GetxCoord(NodeID,xCount,yCount,zCount,xSize,ySize,zSize),GetyCoord(NodeID,xCount,yCount,zCount,xSize,ySize,zSize),GetzCoord(NodeID,xCount,yCount,zCount,xSize,ySize,zSize)
-
  __pyx_t_1 = __pyx_f_6CAStar_GetxCoord(__pyx_v_NodeID, __pyx_v_xCount, __pyx_v_yCount, __pyx_v_zCount, __pyx_v_xSize, __pyx_v_ySize, __pyx_v_zSize);
-  __pyx_t_2 = __pyx_f_6CAStar_GetyCoord(__pyx_v_NodeID, __pyx_v_xCount, __pyx_v_yCount, __pyx_v_zCount, __pyx_v_xSize, __pyx_v_ySize, __pyx_v_zSize);
-  __pyx_t_3 = __pyx_f_6CAStar_GetzCoord(__pyx_v_NodeID, __pyx_v_xCount, __pyx_v_yCount, __pyx_v_zCount, __pyx_v_xSize, __pyx_v_ySize, __pyx_v_zSize);
+
  __pyx_t_1 = __pyx_f_6CAStar_6CAStar_GetxCoord(__pyx_v_NodeID, __pyx_v_xCount, __pyx_v_yCount, __pyx_v_zCount, __pyx_v_xSize, __pyx_v_ySize, __pyx_v_zSize);
+  __pyx_t_2 = __pyx_f_6CAStar_6CAStar_GetyCoord(__pyx_v_NodeID, __pyx_v_xCount, __pyx_v_yCount, __pyx_v_zCount, __pyx_v_xSize, __pyx_v_ySize, __pyx_v_zSize);
+  __pyx_t_3 = __pyx_f_6CAStar_6CAStar_GetzCoord(__pyx_v_NodeID, __pyx_v_xCount, __pyx_v_yCount, __pyx_v_zCount, __pyx_v_xSize, __pyx_v_ySize, __pyx_v_zSize);
   __pyx_v_Nx = __pyx_t_1;
   __pyx_v_Ny = __pyx_t_2;
   __pyx_v_Nz = __pyx_t_3;
 
+026:     Tx,Ty,Tz = GetxCoord(TargetID,xCount,yCount,zCount,xSize,ySize,zSize),GetyCoord(TargetID,xCount,yCount,zCount,xSize,ySize,zSize),GetzCoord(TargetID,xCount,yCount,zCount,xSize,ySize,zSize)
-
  __pyx_t_3 = __pyx_f_6CAStar_GetxCoord(__pyx_v_TargetID, __pyx_v_xCount, __pyx_v_yCount, __pyx_v_zCount, __pyx_v_xSize, __pyx_v_ySize, __pyx_v_zSize);
-  __pyx_t_2 = __pyx_f_6CAStar_GetyCoord(__pyx_v_TargetID, __pyx_v_xCount, __pyx_v_yCount, __pyx_v_zCount, __pyx_v_xSize, __pyx_v_ySize, __pyx_v_zSize);
-  __pyx_t_1 = __pyx_f_6CAStar_GetzCoord(__pyx_v_TargetID, __pyx_v_xCount, __pyx_v_yCount, __pyx_v_zCount, __pyx_v_xSize, __pyx_v_ySize, __pyx_v_zSize);
+
  __pyx_t_3 = __pyx_f_6CAStar_6CAStar_GetxCoord(__pyx_v_TargetID, __pyx_v_xCount, __pyx_v_yCount, __pyx_v_zCount, __pyx_v_xSize, __pyx_v_ySize, __pyx_v_zSize);
+  __pyx_t_2 = __pyx_f_6CAStar_6CAStar_GetyCoord(__pyx_v_TargetID, __pyx_v_xCount, __pyx_v_yCount, __pyx_v_zCount, __pyx_v_xSize, __pyx_v_ySize, __pyx_v_zSize);
+  __pyx_t_1 = __pyx_f_6CAStar_6CAStar_GetzCoord(__pyx_v_TargetID, __pyx_v_xCount, __pyx_v_yCount, __pyx_v_zCount, __pyx_v_xSize, __pyx_v_ySize, __pyx_v_zSize);
   __pyx_v_Tx = __pyx_t_3;
   __pyx_v_Ty = __pyx_t_2;
   __pyx_v_Tz = __pyx_t_1;
@@ -577,7 +573,7 @@
   goto __pyx_L0;
 
 038: 
+039: cdef float GetxCoord(int ID, int xCount, int yCount, int zCount, float xSize, float ySize,float zSize):
-
static float __pyx_f_6CAStar_GetxCoord(int __pyx_v_ID, CYTHON_UNUSED int __pyx_v_xCount, int __pyx_v_yCount, int __pyx_v_zCount, float __pyx_v_xSize, CYTHON_UNUSED float __pyx_v_ySize, CYTHON_UNUSED float __pyx_v_zSize) {
+
static float __pyx_f_6CAStar_6CAStar_GetxCoord(int __pyx_v_ID, CYTHON_UNUSED int __pyx_v_xCount, int __pyx_v_yCount, int __pyx_v_zCount, float __pyx_v_xSize, CYTHON_UNUSED float __pyx_v_ySize, CYTHON_UNUSED float __pyx_v_zSize) {
   float __pyx_v_xCoord;
   float __pyx_r;
   __Pyx_RefNannyDeclarations
@@ -596,7 +592,7 @@
   goto __pyx_L0;
 
 043: 
+044: cdef float GetyCoord(int ID, int xCount, int yCount, int zCount, float xSize, float ySize,float zSize):
-
static float __pyx_f_6CAStar_GetyCoord(int __pyx_v_ID, CYTHON_UNUSED int __pyx_v_xCount, int __pyx_v_yCount, int __pyx_v_zCount, CYTHON_UNUSED float __pyx_v_xSize, float __pyx_v_ySize, CYTHON_UNUSED float __pyx_v_zSize) {
+
static float __pyx_f_6CAStar_6CAStar_GetyCoord(int __pyx_v_ID, CYTHON_UNUSED int __pyx_v_xCount, int __pyx_v_yCount, int __pyx_v_zCount, CYTHON_UNUSED float __pyx_v_xSize, float __pyx_v_ySize, CYTHON_UNUSED float __pyx_v_zSize) {
   float __pyx_v_yCoord;
   float __pyx_r;
   __Pyx_RefNannyDeclarations
@@ -615,7 +611,7 @@
   goto __pyx_L0;
 
 048: 
+049: cdef float GetzCoord(int ID, int xCount, int yCount, int zCount, float xSize, float ySize,float zSize):
-
static float __pyx_f_6CAStar_GetzCoord(int __pyx_v_ID, CYTHON_UNUSED int __pyx_v_xCount, CYTHON_UNUSED int __pyx_v_yCount, int __pyx_v_zCount, CYTHON_UNUSED float __pyx_v_xSize, CYTHON_UNUSED float __pyx_v_ySize, float __pyx_v_zSize) {
+
static float __pyx_f_6CAStar_6CAStar_GetzCoord(int __pyx_v_ID, CYTHON_UNUSED int __pyx_v_xCount, CYTHON_UNUSED int __pyx_v_yCount, int __pyx_v_zCount, CYTHON_UNUSED float __pyx_v_xSize, CYTHON_UNUSED float __pyx_v_ySize, float __pyx_v_zSize) {
   float __pyx_v_zCoord;
   float __pyx_r;
   __Pyx_RefNannyDeclarations
@@ -635,9 +631,9 @@
 
 053: 
+054: def AStarPQ(graph, int start, int target):   # Set all g to node_count + 1
/* Python wrapper */
-static PyObject *__pyx_pw_6CAStar_1AStarPQ(PyObject *__pyx_self, PyObject *__pyx_args, PyObject *__pyx_kwds); /*proto*/
-static PyMethodDef __pyx_mdef_6CAStar_1AStarPQ = {"AStarPQ", (PyCFunction)__pyx_pw_6CAStar_1AStarPQ, METH_VARARGS|METH_KEYWORDS, 0};
-static PyObject *__pyx_pw_6CAStar_1AStarPQ(PyObject *__pyx_self, PyObject *__pyx_args, PyObject *__pyx_kwds) {
+static PyObject *__pyx_pw_6CAStar_6CAStar_1AStarPQ(PyObject *__pyx_self, PyObject *__pyx_args, PyObject *__pyx_kwds); /*proto*/
+static PyMethodDef __pyx_mdef_6CAStar_6CAStar_1AStarPQ = {"AStarPQ", (PyCFunction)__pyx_pw_6CAStar_6CAStar_1AStarPQ, METH_VARARGS|METH_KEYWORDS, 0};
+static PyObject *__pyx_pw_6CAStar_6CAStar_1AStarPQ(PyObject *__pyx_self, PyObject *__pyx_args, PyObject *__pyx_kwds) {
   PyObject *__pyx_v_graph = 0;
   int __pyx_v_start;
   int __pyx_v_target;
@@ -696,18 +692,18 @@
   __pyx_L5_argtuple_error:;
   __Pyx_RaiseArgtupleInvalid("AStarPQ", 1, 3, 3, PyTuple_GET_SIZE(__pyx_args)); __PYX_ERR(0, 54, __pyx_L3_error)
   __pyx_L3_error:;
-  __Pyx_AddTraceback("CAStar.AStarPQ", __pyx_clineno, __pyx_lineno, __pyx_filename);
+  __Pyx_AddTraceback("CAStar.CAStar.AStarPQ", __pyx_clineno, __pyx_lineno, __pyx_filename);
   __Pyx_RefNannyFinishContext();
   return NULL;
   __pyx_L4_argument_unpacking_done:;
-  __pyx_r = __pyx_pf_6CAStar_AStarPQ(__pyx_self, __pyx_v_graph, __pyx_v_start, __pyx_v_target);
+  __pyx_r = __pyx_pf_6CAStar_6CAStar_AStarPQ(__pyx_self, __pyx_v_graph, __pyx_v_start, __pyx_v_target);
 
   /* function exit code */
   __Pyx_RefNannyFinishContext();
   return __pyx_r;
 }
 
-static PyObject *__pyx_pf_6CAStar_AStarPQ(CYTHON_UNUSED PyObject *__pyx_self, PyObject *__pyx_v_graph, int __pyx_v_start, int __pyx_v_target) {
+static PyObject *__pyx_pf_6CAStar_6CAStar_AStarPQ(CYTHON_UNUSED PyObject *__pyx_self, PyObject *__pyx_v_graph, int __pyx_v_start, int __pyx_v_target) {
   PyObject *__pyx_v_StartTime = NULL;
   float __pyx_v_xSize;
   float __pyx_v_ySize;
@@ -741,8 +737,8 @@
   __Pyx_XDECREF(__pyx_t_3);
   __Pyx_XDECREF(__pyx_t_4);
   __Pyx_XDECREF(__pyx_t_5);
-  __Pyx_XDECREF(__pyx_t_15);
-  __Pyx_AddTraceback("CAStar.AStarPQ", __pyx_clineno, __pyx_lineno, __pyx_filename);
+  __Pyx_XDECREF(__pyx_t_14);
+  __Pyx_AddTraceback("CAStar.CAStar.AStarPQ", __pyx_clineno, __pyx_lineno, __pyx_filename);
   __pyx_r = NULL;
   __pyx_L0:;
   __Pyx_XDECREF(__pyx_v_StartTime);
@@ -761,15 +757,15 @@
   return __pyx_r;
 }
 /* … */
-  __pyx_tuple__3 = PyTuple_Pack(26, __pyx_n_s_graph, __pyx_n_s_start, __pyx_n_s_target, __pyx_n_s_StartTime, __pyx_n_s_xSize, __pyx_n_s_ySize, __pyx_n_s_zSize, __pyx_n_s_gNode, __pyx_n_s_fTemp, __pyx_n_s_ClosedSet, __pyx_n_s_OpenSet, __pyx_n_s_cameFrom, __pyx_n_s_g, __pyx_n_s_f, __pyx_n_s_NodeID, __pyx_n_s_current, __pyx_n_s_tScore, __pyx_n_s_xCount, __pyx_n_s_yCount, __pyx_n_s_zCount, __pyx_n_s_FriendList, __pyx_n_s_TargetNode, __pyx_n_s_fp, __pyx_n_s_Found, __pyx_n_s_Node, __pyx_n_s_EndTime); if (unlikely(!__pyx_tuple__3)) __PYX_ERR(0, 54, __pyx_L1_error)
-  __Pyx_GOTREF(__pyx_tuple__3);
-  __Pyx_GIVEREF(__pyx_tuple__3);
+  __pyx_tuple__4 = PyTuple_Pack(26, __pyx_n_s_graph, __pyx_n_s_start, __pyx_n_s_target, __pyx_n_s_StartTime, __pyx_n_s_xSize, __pyx_n_s_ySize, __pyx_n_s_zSize, __pyx_n_s_gNode, __pyx_n_s_fTemp, __pyx_n_s_ClosedSet, __pyx_n_s_OpenSet, __pyx_n_s_cameFrom, __pyx_n_s_g, __pyx_n_s_f, __pyx_n_s_NodeID, __pyx_n_s_current, __pyx_n_s_tScore, __pyx_n_s_xCount, __pyx_n_s_yCount, __pyx_n_s_zCount, __pyx_n_s_FriendList, __pyx_n_s_TargetNode, __pyx_n_s_fp, __pyx_n_s_Found, __pyx_n_s_Node, __pyx_n_s_EndTime); if (unlikely(!__pyx_tuple__4)) __PYX_ERR(0, 54, __pyx_L1_error)
+  __Pyx_GOTREF(__pyx_tuple__4);
+  __Pyx_GIVEREF(__pyx_tuple__4);
 /* … */
-  __pyx_t_9 = PyCFunction_NewEx(&__pyx_mdef_6CAStar_1AStarPQ, NULL, __pyx_n_s_CAStar); if (unlikely(!__pyx_t_9)) __PYX_ERR(0, 54, __pyx_L1_error)
+  __pyx_t_9 = PyCFunction_NewEx(&__pyx_mdef_6CAStar_6CAStar_1AStarPQ, NULL, __pyx_n_s_CAStar_CAStar); if (unlikely(!__pyx_t_9)) __PYX_ERR(0, 54, __pyx_L1_error)
   __Pyx_GOTREF(__pyx_t_9);
   if (PyDict_SetItem(__pyx_d, __pyx_n_s_AStarPQ, __pyx_t_9) < 0) __PYX_ERR(0, 54, __pyx_L1_error)
   __Pyx_DECREF(__pyx_t_9); __pyx_t_9 = 0;
-  __pyx_codeobj__4 = (PyObject*)__Pyx_PyCode_New(3, 0, 26, 0, 0, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__3, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_CAStar_pyx, __pyx_n_s_AStarPQ, 54, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__4)) __PYX_ERR(0, 54, __pyx_L1_error)
+  __pyx_codeobj__5 = (PyObject*)__Pyx_PyCode_New(3, 0, 26, 0, 0, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__4, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_CAStar_pyx, __pyx_n_s_AStarPQ, 54, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__5)) __PYX_ERR(0, 54, __pyx_L1_error)
 
+055:     StartTime = time.time()
  __pyx_t_2 = __Pyx_GetModuleGlobalName(__pyx_n_s_time); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 55, __pyx_L1_error)
   __Pyx_GOTREF(__pyx_t_2);
@@ -953,7 +949,7 @@
   if (unlikely(PyDict_SetItem(__pyx_v_g, __pyx_t_3, __pyx_int_0) < 0)) __PYX_ERR(0, 75, __pyx_L1_error)
   __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
 
+076:     f[start] = EstimateDistance(start,target,xCount,yCount,zCount,xSize,ySize,zSize)
-
  __pyx_t_3 = PyFloat_FromDouble(__pyx_f_6CAStar_EstimateDistance(__pyx_v_start, __pyx_v_target, __pyx_v_xCount, __pyx_v_yCount, __pyx_v_zCount, __pyx_v_xSize, __pyx_v_ySize, __pyx_v_zSize)); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 76, __pyx_L1_error)
+
  __pyx_t_3 = PyFloat_FromDouble(__pyx_f_6CAStar_6CAStar_EstimateDistance(__pyx_v_start, __pyx_v_target, __pyx_v_xCount, __pyx_v_yCount, __pyx_v_zCount, __pyx_v_xSize, __pyx_v_ySize, __pyx_v_zSize)); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 76, __pyx_L1_error)
   __Pyx_GOTREF(__pyx_t_3);
   __pyx_t_5 = __Pyx_PyInt_From_int(__pyx_v_start); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 76, __pyx_L1_error)
   __Pyx_GOTREF(__pyx_t_5);
@@ -963,7 +959,7 @@
 
+077:     fp.put((EstimateDistance(start,target,xCount,yCount,zCount,xSize,ySize,zSize),start))
  __pyx_t_5 = __Pyx_PyObject_GetAttrStr(__pyx_v_fp, __pyx_n_s_put); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 77, __pyx_L1_error)
   __Pyx_GOTREF(__pyx_t_5);
-  __pyx_t_1 = PyFloat_FromDouble(__pyx_f_6CAStar_EstimateDistance(__pyx_v_start, __pyx_v_target, __pyx_v_xCount, __pyx_v_yCount, __pyx_v_zCount, __pyx_v_xSize, __pyx_v_ySize, __pyx_v_zSize)); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 77, __pyx_L1_error)
+  __pyx_t_1 = PyFloat_FromDouble(__pyx_f_6CAStar_6CAStar_EstimateDistance(__pyx_v_start, __pyx_v_target, __pyx_v_xCount, __pyx_v_yCount, __pyx_v_zCount, __pyx_v_xSize, __pyx_v_ySize, __pyx_v_zSize)); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 77, __pyx_L1_error)
   __Pyx_GOTREF(__pyx_t_1);
   __pyx_t_2 = __Pyx_PyInt_From_int(__pyx_v_start); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 77, __pyx_L1_error)
   __Pyx_GOTREF(__pyx_t_2);
@@ -1107,638 +1103,656 @@
     if (unlikely(PyDict_SetItem(__pyx_v_ClosedSet, __pyx_t_5, __pyx_int_1) < 0)) __PYX_ERR(0, 87, __pyx_L1_error)
     __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
 
 088: 
-
+089:         FriendList = graph.GetNode(current).Friends
-
    __pyx_t_3 = __Pyx_PyObject_GetAttrStr(__pyx_v_graph, __pyx_n_s_GetNode); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 89, __pyx_L1_error)
-    __Pyx_GOTREF(__pyx_t_3);
-    __pyx_t_2 = __Pyx_PyInt_From_int(__pyx_v_current); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 89, __pyx_L1_error)
+
+089:         FriendList = graph.GetNode(current).Get_Friends()
+
    __pyx_t_2 = __Pyx_PyObject_GetAttrStr(__pyx_v_graph, __pyx_n_s_GetNode); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 89, __pyx_L1_error)
     __Pyx_GOTREF(__pyx_t_2);
-    __pyx_t_1 = NULL;
-    if (CYTHON_UNPACK_METHODS && likely(PyMethod_Check(__pyx_t_3))) {
-      __pyx_t_1 = PyMethod_GET_SELF(__pyx_t_3);
-      if (likely(__pyx_t_1)) {
-        PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_3);
-        __Pyx_INCREF(__pyx_t_1);
+    __pyx_t_1 = __Pyx_PyInt_From_int(__pyx_v_current); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 89, __pyx_L1_error)
+    __Pyx_GOTREF(__pyx_t_1);
+    __pyx_t_4 = NULL;
+    if (CYTHON_UNPACK_METHODS && likely(PyMethod_Check(__pyx_t_2))) {
+      __pyx_t_4 = PyMethod_GET_SELF(__pyx_t_2);
+      if (likely(__pyx_t_4)) {
+        PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_2);
+        __Pyx_INCREF(__pyx_t_4);
         __Pyx_INCREF(function);
-        __Pyx_DECREF_SET(__pyx_t_3, function);
+        __Pyx_DECREF_SET(__pyx_t_2, function);
       }
     }
-    if (!__pyx_t_1) {
-      __pyx_t_5 = __Pyx_PyObject_CallOneArg(__pyx_t_3, __pyx_t_2); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 89, __pyx_L1_error)
-      __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
-      __Pyx_GOTREF(__pyx_t_5);
+    if (!__pyx_t_4) {
+      __pyx_t_3 = __Pyx_PyObject_CallOneArg(__pyx_t_2, __pyx_t_1); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 89, __pyx_L1_error)
+      __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
+      __Pyx_GOTREF(__pyx_t_3);
     } else {
       #if CYTHON_FAST_PYCALL
-      if (PyFunction_Check(__pyx_t_3)) {
-        PyObject *__pyx_temp[2] = {__pyx_t_1, __pyx_t_2};
-        __pyx_t_5 = __Pyx_PyFunction_FastCall(__pyx_t_3, __pyx_temp+1-1, 1+1); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 89, __pyx_L1_error)
-        __Pyx_XDECREF(__pyx_t_1); __pyx_t_1 = 0;
-        __Pyx_GOTREF(__pyx_t_5);
-        __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
+      if (PyFunction_Check(__pyx_t_2)) {
+        PyObject *__pyx_temp[2] = {__pyx_t_4, __pyx_t_1};
+        __pyx_t_3 = __Pyx_PyFunction_FastCall(__pyx_t_2, __pyx_temp+1-1, 1+1); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 89, __pyx_L1_error)
+        __Pyx_XDECREF(__pyx_t_4); __pyx_t_4 = 0;
+        __Pyx_GOTREF(__pyx_t_3);
+        __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
       } else
       #endif
       #if CYTHON_FAST_PYCCALL
-      if (__Pyx_PyFastCFunction_Check(__pyx_t_3)) {
-        PyObject *__pyx_temp[2] = {__pyx_t_1, __pyx_t_2};
-        __pyx_t_5 = __Pyx_PyCFunction_FastCall(__pyx_t_3, __pyx_temp+1-1, 1+1); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 89, __pyx_L1_error)
-        __Pyx_XDECREF(__pyx_t_1); __pyx_t_1 = 0;
-        __Pyx_GOTREF(__pyx_t_5);
-        __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
+      if (__Pyx_PyFastCFunction_Check(__pyx_t_2)) {
+        PyObject *__pyx_temp[2] = {__pyx_t_4, __pyx_t_1};
+        __pyx_t_3 = __Pyx_PyCFunction_FastCall(__pyx_t_2, __pyx_temp+1-1, 1+1); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 89, __pyx_L1_error)
+        __Pyx_XDECREF(__pyx_t_4); __pyx_t_4 = 0;
+        __Pyx_GOTREF(__pyx_t_3);
+        __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
       } else
       #endif
       {
-        __pyx_t_4 = PyTuple_New(1+1); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 89, __pyx_L1_error)
-        __Pyx_GOTREF(__pyx_t_4);
-        __Pyx_GIVEREF(__pyx_t_1); PyTuple_SET_ITEM(__pyx_t_4, 0, __pyx_t_1); __pyx_t_1 = NULL;
-        __Pyx_GIVEREF(__pyx_t_2);
-        PyTuple_SET_ITEM(__pyx_t_4, 0+1, __pyx_t_2);
-        __pyx_t_2 = 0;
-        __pyx_t_5 = __Pyx_PyObject_Call(__pyx_t_3, __pyx_t_4, NULL); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 89, __pyx_L1_error)
-        __Pyx_GOTREF(__pyx_t_5);
-        __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
+        __pyx_t_14 = PyTuple_New(1+1); if (unlikely(!__pyx_t_14)) __PYX_ERR(0, 89, __pyx_L1_error)
+        __Pyx_GOTREF(__pyx_t_14);
+        __Pyx_GIVEREF(__pyx_t_4); PyTuple_SET_ITEM(__pyx_t_14, 0, __pyx_t_4); __pyx_t_4 = NULL;
+        __Pyx_GIVEREF(__pyx_t_1);
+        PyTuple_SET_ITEM(__pyx_t_14, 0+1, __pyx_t_1);
+        __pyx_t_1 = 0;
+        __pyx_t_3 = __Pyx_PyObject_Call(__pyx_t_2, __pyx_t_14, NULL); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 89, __pyx_L1_error)
+        __Pyx_GOTREF(__pyx_t_3);
+        __Pyx_DECREF(__pyx_t_14); __pyx_t_14 = 0;
       }
     }
+    __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
+    __pyx_t_2 = __Pyx_PyObject_GetAttrStr(__pyx_t_3, __pyx_n_s_Get_Friends); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 89, __pyx_L1_error)
+    __Pyx_GOTREF(__pyx_t_2);
     __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
-    __pyx_t_3 = __Pyx_PyObject_GetAttrStr(__pyx_t_5, __pyx_n_s_Friends); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 89, __pyx_L1_error)
-    __Pyx_GOTREF(__pyx_t_3);
-    __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
-    if (!(likely(PyList_CheckExact(__pyx_t_3))||((__pyx_t_3) == Py_None)||(PyErr_Format(PyExc_TypeError, "Expected %.16s, got %.200s", "list", Py_TYPE(__pyx_t_3)->tp_name), 0))) __PYX_ERR(0, 89, __pyx_L1_error)
-    __Pyx_XDECREF_SET(__pyx_v_FriendList, ((PyObject*)__pyx_t_3));
-    __pyx_t_3 = 0;
+    __pyx_t_3 = NULL;
+    if (CYTHON_UNPACK_METHODS && likely(PyMethod_Check(__pyx_t_2))) {
+      __pyx_t_3 = PyMethod_GET_SELF(__pyx_t_2);
+      if (likely(__pyx_t_3)) {
+        PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_2);
+        __Pyx_INCREF(__pyx_t_3);
+        __Pyx_INCREF(function);
+        __Pyx_DECREF_SET(__pyx_t_2, function);
+      }
+    }
+    if (__pyx_t_3) {
+      __pyx_t_5 = __Pyx_PyObject_CallOneArg(__pyx_t_2, __pyx_t_3); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 89, __pyx_L1_error)
+      __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
+    } else {
+      __pyx_t_5 = __Pyx_PyObject_CallNoArg(__pyx_t_2); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 89, __pyx_L1_error)
+    }
+    __Pyx_GOTREF(__pyx_t_5);
+    __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
+    if (!(likely(PyList_CheckExact(__pyx_t_5))||((__pyx_t_5) == Py_None)||(PyErr_Format(PyExc_TypeError, "Expected %.16s, got %.200s", "list", Py_TYPE(__pyx_t_5)->tp_name), 0))) __PYX_ERR(0, 89, __pyx_L1_error)
+    __Pyx_XDECREF_SET(__pyx_v_FriendList, ((PyObject*)__pyx_t_5));
+    __pyx_t_5 = 0;
 
+090:         for NodeID in FriendList:
    if (unlikely(__pyx_v_FriendList == Py_None)) {
       PyErr_SetString(PyExc_TypeError, "'NoneType' object is not iterable");
       __PYX_ERR(0, 90, __pyx_L1_error)
     }
-    __pyx_t_3 = __pyx_v_FriendList; __Pyx_INCREF(__pyx_t_3); __pyx_t_12 = 0;
+    __pyx_t_5 = __pyx_v_FriendList; __Pyx_INCREF(__pyx_t_5); __pyx_t_12 = 0;
     for (;;) {
-      if (__pyx_t_12 >= PyList_GET_SIZE(__pyx_t_3)) break;
+      if (__pyx_t_12 >= PyList_GET_SIZE(__pyx_t_5)) break;
       #if CYTHON_ASSUME_SAFE_MACROS && !CYTHON_AVOID_BORROWED_REFS
-      __pyx_t_5 = PyList_GET_ITEM(__pyx_t_3, __pyx_t_12); __Pyx_INCREF(__pyx_t_5); __pyx_t_12++; if (unlikely(0 < 0)) __PYX_ERR(0, 90, __pyx_L1_error)
+      __pyx_t_2 = PyList_GET_ITEM(__pyx_t_5, __pyx_t_12); __Pyx_INCREF(__pyx_t_2); __pyx_t_12++; if (unlikely(0 < 0)) __PYX_ERR(0, 90, __pyx_L1_error)
       #else
-      __pyx_t_5 = PySequence_ITEM(__pyx_t_3, __pyx_t_12); __pyx_t_12++; if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 90, __pyx_L1_error)
-      __Pyx_GOTREF(__pyx_t_5);
+      __pyx_t_2 = PySequence_ITEM(__pyx_t_5, __pyx_t_12); __pyx_t_12++; if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 90, __pyx_L1_error)
+      __Pyx_GOTREF(__pyx_t_2);
       #endif
-      __pyx_t_11 = __Pyx_PyInt_As_int(__pyx_t_5); if (unlikely((__pyx_t_11 == (int)-1) && PyErr_Occurred())) __PYX_ERR(0, 90, __pyx_L1_error)
-      __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
+      __pyx_t_11 = __Pyx_PyInt_As_int(__pyx_t_2); if (unlikely((__pyx_t_11 == (int)-1) && PyErr_Occurred())) __PYX_ERR(0, 90, __pyx_L1_error)
+      __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
       __pyx_v_NodeID = __pyx_t_11;
 /* … */
       __pyx_L6_continue:;
     }
-    __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
+    __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
 
+091:             if NodeID in ClosedSet:
-
      __pyx_t_5 = __Pyx_PyInt_From_int(__pyx_v_NodeID); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 91, __pyx_L1_error)
-      __Pyx_GOTREF(__pyx_t_5);
-      __pyx_t_13 = (__Pyx_PyDict_ContainsTF(__pyx_t_5, __pyx_v_ClosedSet, Py_EQ)); if (unlikely(__pyx_t_13 < 0)) __PYX_ERR(0, 91, __pyx_L1_error)
-      __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
-      __pyx_t_14 = (__pyx_t_13 != 0);
-      if (__pyx_t_14) {
+
      __pyx_t_2 = __Pyx_PyInt_From_int(__pyx_v_NodeID); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 91, __pyx_L1_error)
+      __Pyx_GOTREF(__pyx_t_2);
+      __pyx_t_13 = (__Pyx_PyDict_ContainsTF(__pyx_t_2, __pyx_v_ClosedSet, Py_EQ)); if (unlikely(__pyx_t_13 < 0)) __PYX_ERR(0, 91, __pyx_L1_error)
+      __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
+      __pyx_t_15 = (__pyx_t_13 != 0);
+      if (__pyx_t_15) {
 /* … */
       }
 
+092:                 continue
        goto __pyx_L6_continue;
 
+093:             if NodeID not in OpenSet:
-
      __pyx_t_5 = __Pyx_PyInt_From_int(__pyx_v_NodeID); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 93, __pyx_L1_error)
-      __Pyx_GOTREF(__pyx_t_5);
-      __pyx_t_14 = (__Pyx_PyDict_ContainsTF(__pyx_t_5, __pyx_v_OpenSet, Py_NE)); if (unlikely(__pyx_t_14 < 0)) __PYX_ERR(0, 93, __pyx_L1_error)
-      __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
-      __pyx_t_13 = (__pyx_t_14 != 0);
+
      __pyx_t_2 = __Pyx_PyInt_From_int(__pyx_v_NodeID); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 93, __pyx_L1_error)
+      __Pyx_GOTREF(__pyx_t_2);
+      __pyx_t_15 = (__Pyx_PyDict_ContainsTF(__pyx_t_2, __pyx_v_OpenSet, Py_NE)); if (unlikely(__pyx_t_15 < 0)) __PYX_ERR(0, 93, __pyx_L1_error)
+      __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
+      __pyx_t_13 = (__pyx_t_15 != 0);
       if (__pyx_t_13) {
 /* … */
       }
 
+094:                 OpenSet[NodeID] = 1
-
        __pyx_t_5 = __Pyx_PyInt_From_int(__pyx_v_NodeID); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 94, __pyx_L1_error)
-        __Pyx_GOTREF(__pyx_t_5);
-        if (unlikely(PyDict_SetItem(__pyx_v_OpenSet, __pyx_t_5, __pyx_int_1) < 0)) __PYX_ERR(0, 94, __pyx_L1_error)
-        __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
+
        __pyx_t_2 = __Pyx_PyInt_From_int(__pyx_v_NodeID); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 94, __pyx_L1_error)
+        __Pyx_GOTREF(__pyx_t_2);
+        if (unlikely(PyDict_SetItem(__pyx_v_OpenSet, __pyx_t_2, __pyx_int_1) < 0)) __PYX_ERR(0, 94, __pyx_L1_error)
+        __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
 
+095:                 g[NodeID] = math.inf
-
        __pyx_t_5 = __Pyx_GetModuleGlobalName(__pyx_n_s_math); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 95, __pyx_L1_error)
-        __Pyx_GOTREF(__pyx_t_5);
-        __pyx_t_4 = __Pyx_PyObject_GetAttrStr(__pyx_t_5, __pyx_n_s_inf); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 95, __pyx_L1_error)
-        __Pyx_GOTREF(__pyx_t_4);
-        __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
-        __pyx_t_5 = __Pyx_PyInt_From_int(__pyx_v_NodeID); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 95, __pyx_L1_error)
-        __Pyx_GOTREF(__pyx_t_5);
-        if (unlikely(PyDict_SetItem(__pyx_v_g, __pyx_t_5, __pyx_t_4) < 0)) __PYX_ERR(0, 95, __pyx_L1_error)
-        __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
-        __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
-
+096:                 f[NodeID] = math.inf
-
        __pyx_t_4 = __Pyx_GetModuleGlobalName(__pyx_n_s_math); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 96, __pyx_L1_error)
-        __Pyx_GOTREF(__pyx_t_4);
-        __pyx_t_5 = __Pyx_PyObject_GetAttrStr(__pyx_t_4, __pyx_n_s_inf); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 96, __pyx_L1_error)
-        __Pyx_GOTREF(__pyx_t_5);
-        __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
-        __pyx_t_4 = __Pyx_PyInt_From_int(__pyx_v_NodeID); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 96, __pyx_L1_error)
-        __Pyx_GOTREF(__pyx_t_4);
-        if (unlikely(PyDict_SetItem(__pyx_v_f, __pyx_t_4, __pyx_t_5) < 0)) __PYX_ERR(0, 96, __pyx_L1_error)
-        __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
-        __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
-
+097:                 fp.put((math.inf,NodeID))
-
        __pyx_t_4 = __Pyx_PyObject_GetAttrStr(__pyx_v_fp, __pyx_n_s_put); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 97, __pyx_L1_error)
-        __Pyx_GOTREF(__pyx_t_4);
-        __pyx_t_2 = __Pyx_GetModuleGlobalName(__pyx_n_s_math); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 97, __pyx_L1_error)
+
        __pyx_t_2 = __Pyx_GetModuleGlobalName(__pyx_n_s_math); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 95, __pyx_L1_error)
         __Pyx_GOTREF(__pyx_t_2);
-        __pyx_t_1 = __Pyx_PyObject_GetAttrStr(__pyx_t_2, __pyx_n_s_inf); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 97, __pyx_L1_error)
-        __Pyx_GOTREF(__pyx_t_1);
+        __pyx_t_3 = __Pyx_PyObject_GetAttrStr(__pyx_t_2, __pyx_n_s_inf); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 95, __pyx_L1_error)
+        __Pyx_GOTREF(__pyx_t_3);
         __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
-        __pyx_t_2 = __Pyx_PyInt_From_int(__pyx_v_NodeID); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 97, __pyx_L1_error)
+        __pyx_t_2 = __Pyx_PyInt_From_int(__pyx_v_NodeID); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 95, __pyx_L1_error)
         __Pyx_GOTREF(__pyx_t_2);
-        __pyx_t_15 = PyTuple_New(2); if (unlikely(!__pyx_t_15)) __PYX_ERR(0, 97, __pyx_L1_error)
-        __Pyx_GOTREF(__pyx_t_15);
+        if (unlikely(PyDict_SetItem(__pyx_v_g, __pyx_t_2, __pyx_t_3) < 0)) __PYX_ERR(0, 95, __pyx_L1_error)
+        __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
+        __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
+
+096:                 f[NodeID] = math.inf
+
        __pyx_t_3 = __Pyx_GetModuleGlobalName(__pyx_n_s_math); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 96, __pyx_L1_error)
+        __Pyx_GOTREF(__pyx_t_3);
+        __pyx_t_2 = __Pyx_PyObject_GetAttrStr(__pyx_t_3, __pyx_n_s_inf); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 96, __pyx_L1_error)
+        __Pyx_GOTREF(__pyx_t_2);
+        __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
+        __pyx_t_3 = __Pyx_PyInt_From_int(__pyx_v_NodeID); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 96, __pyx_L1_error)
+        __Pyx_GOTREF(__pyx_t_3);
+        if (unlikely(PyDict_SetItem(__pyx_v_f, __pyx_t_3, __pyx_t_2) < 0)) __PYX_ERR(0, 96, __pyx_L1_error)
+        __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
+        __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
+
+097:                 fp.put((math.inf,NodeID))
+
        __pyx_t_3 = __Pyx_PyObject_GetAttrStr(__pyx_v_fp, __pyx_n_s_put); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 97, __pyx_L1_error)
+        __Pyx_GOTREF(__pyx_t_3);
+        __pyx_t_14 = __Pyx_GetModuleGlobalName(__pyx_n_s_math); if (unlikely(!__pyx_t_14)) __PYX_ERR(0, 97, __pyx_L1_error)
+        __Pyx_GOTREF(__pyx_t_14);
+        __pyx_t_1 = __Pyx_PyObject_GetAttrStr(__pyx_t_14, __pyx_n_s_inf); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 97, __pyx_L1_error)
+        __Pyx_GOTREF(__pyx_t_1);
+        __Pyx_DECREF(__pyx_t_14); __pyx_t_14 = 0;
+        __pyx_t_14 = __Pyx_PyInt_From_int(__pyx_v_NodeID); if (unlikely(!__pyx_t_14)) __PYX_ERR(0, 97, __pyx_L1_error)
+        __Pyx_GOTREF(__pyx_t_14);
+        __pyx_t_4 = PyTuple_New(2); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 97, __pyx_L1_error)
+        __Pyx_GOTREF(__pyx_t_4);
         __Pyx_GIVEREF(__pyx_t_1);
-        PyTuple_SET_ITEM(__pyx_t_15, 0, __pyx_t_1);
-        __Pyx_GIVEREF(__pyx_t_2);
-        PyTuple_SET_ITEM(__pyx_t_15, 1, __pyx_t_2);
+        PyTuple_SET_ITEM(__pyx_t_4, 0, __pyx_t_1);
+        __Pyx_GIVEREF(__pyx_t_14);
+        PyTuple_SET_ITEM(__pyx_t_4, 1, __pyx_t_14);
         __pyx_t_1 = 0;
-        __pyx_t_2 = 0;
-        __pyx_t_2 = NULL;
-        if (CYTHON_UNPACK_METHODS && likely(PyMethod_Check(__pyx_t_4))) {
-          __pyx_t_2 = PyMethod_GET_SELF(__pyx_t_4);
-          if (likely(__pyx_t_2)) {
-            PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_4);
-            __Pyx_INCREF(__pyx_t_2);
+        __pyx_t_14 = 0;
+        __pyx_t_14 = NULL;
+        if (CYTHON_UNPACK_METHODS && likely(PyMethod_Check(__pyx_t_3))) {
+          __pyx_t_14 = PyMethod_GET_SELF(__pyx_t_3);
+          if (likely(__pyx_t_14)) {
+            PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_3);
+            __Pyx_INCREF(__pyx_t_14);
             __Pyx_INCREF(function);
-            __Pyx_DECREF_SET(__pyx_t_4, function);
+            __Pyx_DECREF_SET(__pyx_t_3, function);
           }
         }
-        if (!__pyx_t_2) {
-          __pyx_t_5 = __Pyx_PyObject_CallOneArg(__pyx_t_4, __pyx_t_15); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 97, __pyx_L1_error)
-          __Pyx_DECREF(__pyx_t_15); __pyx_t_15 = 0;
-          __Pyx_GOTREF(__pyx_t_5);
+        if (!__pyx_t_14) {
+          __pyx_t_2 = __Pyx_PyObject_CallOneArg(__pyx_t_3, __pyx_t_4); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 97, __pyx_L1_error)
+          __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
+          __Pyx_GOTREF(__pyx_t_2);
         } else {
           #if CYTHON_FAST_PYCALL
-          if (PyFunction_Check(__pyx_t_4)) {
-            PyObject *__pyx_temp[2] = {__pyx_t_2, __pyx_t_15};
-            __pyx_t_5 = __Pyx_PyFunction_FastCall(__pyx_t_4, __pyx_temp+1-1, 1+1); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 97, __pyx_L1_error)
-            __Pyx_XDECREF(__pyx_t_2); __pyx_t_2 = 0;
-            __Pyx_GOTREF(__pyx_t_5);
-            __Pyx_DECREF(__pyx_t_15); __pyx_t_15 = 0;
+          if (PyFunction_Check(__pyx_t_3)) {
+            PyObject *__pyx_temp[2] = {__pyx_t_14, __pyx_t_4};
+            __pyx_t_2 = __Pyx_PyFunction_FastCall(__pyx_t_3, __pyx_temp+1-1, 1+1); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 97, __pyx_L1_error)
+            __Pyx_XDECREF(__pyx_t_14); __pyx_t_14 = 0;
+            __Pyx_GOTREF(__pyx_t_2);
+            __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
           } else
           #endif
           #if CYTHON_FAST_PYCCALL
-          if (__Pyx_PyFastCFunction_Check(__pyx_t_4)) {
-            PyObject *__pyx_temp[2] = {__pyx_t_2, __pyx_t_15};
-            __pyx_t_5 = __Pyx_PyCFunction_FastCall(__pyx_t_4, __pyx_temp+1-1, 1+1); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 97, __pyx_L1_error)
-            __Pyx_XDECREF(__pyx_t_2); __pyx_t_2 = 0;
-            __Pyx_GOTREF(__pyx_t_5);
-            __Pyx_DECREF(__pyx_t_15); __pyx_t_15 = 0;
+          if (__Pyx_PyFastCFunction_Check(__pyx_t_3)) {
+            PyObject *__pyx_temp[2] = {__pyx_t_14, __pyx_t_4};
+            __pyx_t_2 = __Pyx_PyCFunction_FastCall(__pyx_t_3, __pyx_temp+1-1, 1+1); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 97, __pyx_L1_error)
+            __Pyx_XDECREF(__pyx_t_14); __pyx_t_14 = 0;
+            __Pyx_GOTREF(__pyx_t_2);
+            __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
           } else
           #endif
           {
             __pyx_t_1 = PyTuple_New(1+1); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 97, __pyx_L1_error)
             __Pyx_GOTREF(__pyx_t_1);
-            __Pyx_GIVEREF(__pyx_t_2); PyTuple_SET_ITEM(__pyx_t_1, 0, __pyx_t_2); __pyx_t_2 = NULL;
-            __Pyx_GIVEREF(__pyx_t_15);
-            PyTuple_SET_ITEM(__pyx_t_1, 0+1, __pyx_t_15);
-            __pyx_t_15 = 0;
-            __pyx_t_5 = __Pyx_PyObject_Call(__pyx_t_4, __pyx_t_1, NULL); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 97, __pyx_L1_error)
-            __Pyx_GOTREF(__pyx_t_5);
+            __Pyx_GIVEREF(__pyx_t_14); PyTuple_SET_ITEM(__pyx_t_1, 0, __pyx_t_14); __pyx_t_14 = NULL;
+            __Pyx_GIVEREF(__pyx_t_4);
+            PyTuple_SET_ITEM(__pyx_t_1, 0+1, __pyx_t_4);
+            __pyx_t_4 = 0;
+            __pyx_t_2 = __Pyx_PyObject_Call(__pyx_t_3, __pyx_t_1, NULL); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 97, __pyx_L1_error)
+            __Pyx_GOTREF(__pyx_t_2);
             __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
           }
         }
-        __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
-        __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
+        __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
+        __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
 
 098: 
+099:             Node = graph.GetNode(NodeID)
-
      __pyx_t_4 = __Pyx_PyObject_GetAttrStr(__pyx_v_graph, __pyx_n_s_GetNode); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 99, __pyx_L1_error)
-      __Pyx_GOTREF(__pyx_t_4);
+
      __pyx_t_3 = __Pyx_PyObject_GetAttrStr(__pyx_v_graph, __pyx_n_s_GetNode); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 99, __pyx_L1_error)
+      __Pyx_GOTREF(__pyx_t_3);
       __pyx_t_1 = __Pyx_PyInt_From_int(__pyx_v_NodeID); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 99, __pyx_L1_error)
       __Pyx_GOTREF(__pyx_t_1);
-      __pyx_t_15 = NULL;
-      if (CYTHON_UNPACK_METHODS && likely(PyMethod_Check(__pyx_t_4))) {
-        __pyx_t_15 = PyMethod_GET_SELF(__pyx_t_4);
-        if (likely(__pyx_t_15)) {
-          PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_4);
-          __Pyx_INCREF(__pyx_t_15);
+      __pyx_t_4 = NULL;
+      if (CYTHON_UNPACK_METHODS && likely(PyMethod_Check(__pyx_t_3))) {
+        __pyx_t_4 = PyMethod_GET_SELF(__pyx_t_3);
+        if (likely(__pyx_t_4)) {
+          PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_3);
+          __Pyx_INCREF(__pyx_t_4);
           __Pyx_INCREF(function);
-          __Pyx_DECREF_SET(__pyx_t_4, function);
+          __Pyx_DECREF_SET(__pyx_t_3, function);
         }
       }
-      if (!__pyx_t_15) {
-        __pyx_t_5 = __Pyx_PyObject_CallOneArg(__pyx_t_4, __pyx_t_1); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 99, __pyx_L1_error)
+      if (!__pyx_t_4) {
+        __pyx_t_2 = __Pyx_PyObject_CallOneArg(__pyx_t_3, __pyx_t_1); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 99, __pyx_L1_error)
         __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
-        __Pyx_GOTREF(__pyx_t_5);
+        __Pyx_GOTREF(__pyx_t_2);
       } else {
         #if CYTHON_FAST_PYCALL
-        if (PyFunction_Check(__pyx_t_4)) {
-          PyObject *__pyx_temp[2] = {__pyx_t_15, __pyx_t_1};
-          __pyx_t_5 = __Pyx_PyFunction_FastCall(__pyx_t_4, __pyx_temp+1-1, 1+1); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 99, __pyx_L1_error)
-          __Pyx_XDECREF(__pyx_t_15); __pyx_t_15 = 0;
-          __Pyx_GOTREF(__pyx_t_5);
+        if (PyFunction_Check(__pyx_t_3)) {
+          PyObject *__pyx_temp[2] = {__pyx_t_4, __pyx_t_1};
+          __pyx_t_2 = __Pyx_PyFunction_FastCall(__pyx_t_3, __pyx_temp+1-1, 1+1); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 99, __pyx_L1_error)
+          __Pyx_XDECREF(__pyx_t_4); __pyx_t_4 = 0;
+          __Pyx_GOTREF(__pyx_t_2);
           __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
         } else
         #endif
         #if CYTHON_FAST_PYCCALL
-        if (__Pyx_PyFastCFunction_Check(__pyx_t_4)) {
-          PyObject *__pyx_temp[2] = {__pyx_t_15, __pyx_t_1};
-          __pyx_t_5 = __Pyx_PyCFunction_FastCall(__pyx_t_4, __pyx_temp+1-1, 1+1); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 99, __pyx_L1_error)
-          __Pyx_XDECREF(__pyx_t_15); __pyx_t_15 = 0;
-          __Pyx_GOTREF(__pyx_t_5);
+        if (__Pyx_PyFastCFunction_Check(__pyx_t_3)) {
+          PyObject *__pyx_temp[2] = {__pyx_t_4, __pyx_t_1};
+          __pyx_t_2 = __Pyx_PyCFunction_FastCall(__pyx_t_3, __pyx_temp+1-1, 1+1); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 99, __pyx_L1_error)
+          __Pyx_XDECREF(__pyx_t_4); __pyx_t_4 = 0;
+          __Pyx_GOTREF(__pyx_t_2);
           __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
         } else
         #endif
         {
-          __pyx_t_2 = PyTuple_New(1+1); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 99, __pyx_L1_error)
-          __Pyx_GOTREF(__pyx_t_2);
-          __Pyx_GIVEREF(__pyx_t_15); PyTuple_SET_ITEM(__pyx_t_2, 0, __pyx_t_15); __pyx_t_15 = NULL;
+          __pyx_t_14 = PyTuple_New(1+1); if (unlikely(!__pyx_t_14)) __PYX_ERR(0, 99, __pyx_L1_error)
+          __Pyx_GOTREF(__pyx_t_14);
+          __Pyx_GIVEREF(__pyx_t_4); PyTuple_SET_ITEM(__pyx_t_14, 0, __pyx_t_4); __pyx_t_4 = NULL;
           __Pyx_GIVEREF(__pyx_t_1);
-          PyTuple_SET_ITEM(__pyx_t_2, 0+1, __pyx_t_1);
+          PyTuple_SET_ITEM(__pyx_t_14, 0+1, __pyx_t_1);
           __pyx_t_1 = 0;
-          __pyx_t_5 = __Pyx_PyObject_Call(__pyx_t_4, __pyx_t_2, NULL); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 99, __pyx_L1_error)
-          __Pyx_GOTREF(__pyx_t_5);
-          __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
+          __pyx_t_2 = __Pyx_PyObject_Call(__pyx_t_3, __pyx_t_14, NULL); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 99, __pyx_L1_error)
+          __Pyx_GOTREF(__pyx_t_2);
+          __Pyx_DECREF(__pyx_t_14); __pyx_t_14 = 0;
         }
       }
-      __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
-      __Pyx_XDECREF_SET(__pyx_v_Node, __pyx_t_5);
-      __pyx_t_5 = 0;
+      __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
+      __Pyx_XDECREF_SET(__pyx_v_Node, __pyx_t_2);
+      __pyx_t_2 = 0;
 
+100:             tScore = g[current]+ Node.Get_Cost()
-
      __pyx_t_5 = __Pyx_PyInt_From_int(__pyx_v_current); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 100, __pyx_L1_error)
-      __Pyx_GOTREF(__pyx_t_5);
-      __pyx_t_4 = __Pyx_PyDict_GetItem(__pyx_v_g, __pyx_t_5); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 100, __pyx_L1_error)
-      __Pyx_GOTREF(__pyx_t_4);
-      __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
-      __pyx_t_2 = __Pyx_PyObject_GetAttrStr(__pyx_v_Node, __pyx_n_s_Get_Cost); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 100, __pyx_L1_error)
+
      __pyx_t_2 = __Pyx_PyInt_From_int(__pyx_v_current); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 100, __pyx_L1_error)
       __Pyx_GOTREF(__pyx_t_2);
+      __pyx_t_3 = __Pyx_PyDict_GetItem(__pyx_v_g, __pyx_t_2); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 100, __pyx_L1_error)
+      __Pyx_GOTREF(__pyx_t_3);
+      __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
+      __pyx_t_14 = __Pyx_PyObject_GetAttrStr(__pyx_v_Node, __pyx_n_s_Get_Cost); if (unlikely(!__pyx_t_14)) __PYX_ERR(0, 100, __pyx_L1_error)
+      __Pyx_GOTREF(__pyx_t_14);
       __pyx_t_1 = NULL;
-      if (CYTHON_UNPACK_METHODS && likely(PyMethod_Check(__pyx_t_2))) {
-        __pyx_t_1 = PyMethod_GET_SELF(__pyx_t_2);
+      if (CYTHON_UNPACK_METHODS && likely(PyMethod_Check(__pyx_t_14))) {
+        __pyx_t_1 = PyMethod_GET_SELF(__pyx_t_14);
         if (likely(__pyx_t_1)) {
-          PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_2);
+          PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_14);
           __Pyx_INCREF(__pyx_t_1);
           __Pyx_INCREF(function);
-          __Pyx_DECREF_SET(__pyx_t_2, function);
+          __Pyx_DECREF_SET(__pyx_t_14, function);
         }
       }
       if (__pyx_t_1) {
-        __pyx_t_5 = __Pyx_PyObject_CallOneArg(__pyx_t_2, __pyx_t_1); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 100, __pyx_L1_error)
+        __pyx_t_2 = __Pyx_PyObject_CallOneArg(__pyx_t_14, __pyx_t_1); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 100, __pyx_L1_error)
         __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
       } else {
-        __pyx_t_5 = __Pyx_PyObject_CallNoArg(__pyx_t_2); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 100, __pyx_L1_error)
+        __pyx_t_2 = __Pyx_PyObject_CallNoArg(__pyx_t_14); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 100, __pyx_L1_error)
       }
-      __Pyx_GOTREF(__pyx_t_5);
-      __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
-      __pyx_t_2 = PyNumber_Add(__pyx_t_4, __pyx_t_5); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 100, __pyx_L1_error)
       __Pyx_GOTREF(__pyx_t_2);
-      __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
-      __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
-      __pyx_t_11 = __Pyx_PyInt_As_int(__pyx_t_2); if (unlikely((__pyx_t_11 == (int)-1) && PyErr_Occurred())) __PYX_ERR(0, 100, __pyx_L1_error)
+      __Pyx_DECREF(__pyx_t_14); __pyx_t_14 = 0;
+      __pyx_t_14 = PyNumber_Add(__pyx_t_3, __pyx_t_2); if (unlikely(!__pyx_t_14)) __PYX_ERR(0, 100, __pyx_L1_error)
+      __Pyx_GOTREF(__pyx_t_14);
+      __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
       __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
+      __pyx_t_11 = __Pyx_PyInt_As_int(__pyx_t_14); if (unlikely((__pyx_t_11 == (int)-1) && PyErr_Occurred())) __PYX_ERR(0, 100, __pyx_L1_error)
+      __Pyx_DECREF(__pyx_t_14); __pyx_t_14 = 0;
       __pyx_v_tScore = __pyx_t_11;
 
+101:             if tScore >= g[NodeID]:
-
      __pyx_t_2 = __Pyx_PyInt_From_int(__pyx_v_tScore); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 101, __pyx_L1_error)
+
      __pyx_t_14 = __Pyx_PyInt_From_int(__pyx_v_tScore); if (unlikely(!__pyx_t_14)) __PYX_ERR(0, 101, __pyx_L1_error)
+      __Pyx_GOTREF(__pyx_t_14);
+      __pyx_t_2 = __Pyx_PyInt_From_int(__pyx_v_NodeID); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 101, __pyx_L1_error)
       __Pyx_GOTREF(__pyx_t_2);
-      __pyx_t_5 = __Pyx_PyInt_From_int(__pyx_v_NodeID); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 101, __pyx_L1_error)
-      __Pyx_GOTREF(__pyx_t_5);
-      __pyx_t_4 = __Pyx_PyDict_GetItem(__pyx_v_g, __pyx_t_5); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 101, __pyx_L1_error)
-      __Pyx_GOTREF(__pyx_t_4);
-      __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
-      __pyx_t_5 = PyObject_RichCompare(__pyx_t_2, __pyx_t_4, Py_GE); __Pyx_XGOTREF(__pyx_t_5); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 101, __pyx_L1_error)
+      __pyx_t_3 = __Pyx_PyDict_GetItem(__pyx_v_g, __pyx_t_2); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 101, __pyx_L1_error)
+      __Pyx_GOTREF(__pyx_t_3);
+      __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
+      __pyx_t_2 = PyObject_RichCompare(__pyx_t_14, __pyx_t_3, Py_GE); __Pyx_XGOTREF(__pyx_t_2); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 101, __pyx_L1_error)
+      __Pyx_DECREF(__pyx_t_14); __pyx_t_14 = 0;
+      __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
+      __pyx_t_13 = __Pyx_PyObject_IsTrue(__pyx_t_2); if (unlikely(__pyx_t_13 < 0)) __PYX_ERR(0, 101, __pyx_L1_error)
       __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
-      __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
-      __pyx_t_13 = __Pyx_PyObject_IsTrue(__pyx_t_5); if (unlikely(__pyx_t_13 < 0)) __PYX_ERR(0, 101, __pyx_L1_error)
-      __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
       if (__pyx_t_13) {
 /* … */
       }
 
+102:                 continue
        goto __pyx_L6_continue;
 
+103:             cameFrom[NodeID] = current
-
      __pyx_t_5 = __Pyx_PyInt_From_int(__pyx_v_current); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 103, __pyx_L1_error)
-      __Pyx_GOTREF(__pyx_t_5);
-      __pyx_t_4 = __Pyx_PyInt_From_int(__pyx_v_NodeID); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 103, __pyx_L1_error)
-      __Pyx_GOTREF(__pyx_t_4);
-      if (unlikely(PyDict_SetItem(__pyx_v_cameFrom, __pyx_t_4, __pyx_t_5) < 0)) __PYX_ERR(0, 103, __pyx_L1_error)
-      __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
-      __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
-
+104:             g[NodeID] = tScore
-
      __pyx_t_5 = __Pyx_PyInt_From_int(__pyx_v_tScore); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 104, __pyx_L1_error)
-      __Pyx_GOTREF(__pyx_t_5);
-      __pyx_t_4 = __Pyx_PyInt_From_int(__pyx_v_NodeID); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 104, __pyx_L1_error)
-      __Pyx_GOTREF(__pyx_t_4);
-      if (unlikely(PyDict_SetItem(__pyx_v_g, __pyx_t_4, __pyx_t_5) < 0)) __PYX_ERR(0, 104, __pyx_L1_error)
-      __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
-      __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
-
+105:             fp.remove((f[NodeID],NodeID))
-
      __pyx_t_4 = __Pyx_PyObject_GetAttrStr(__pyx_v_fp, __pyx_n_s_remove); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 105, __pyx_L1_error)
-      __Pyx_GOTREF(__pyx_t_4);
-      __pyx_t_2 = __Pyx_PyInt_From_int(__pyx_v_NodeID); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 105, __pyx_L1_error)
+
      __pyx_t_2 = __Pyx_PyInt_From_int(__pyx_v_current); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 103, __pyx_L1_error)
       __Pyx_GOTREF(__pyx_t_2);
-      __pyx_t_1 = __Pyx_PyDict_GetItem(__pyx_v_f, __pyx_t_2); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 105, __pyx_L1_error)
-      __Pyx_GOTREF(__pyx_t_1);
+      __pyx_t_3 = __Pyx_PyInt_From_int(__pyx_v_NodeID); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 103, __pyx_L1_error)
+      __Pyx_GOTREF(__pyx_t_3);
+      if (unlikely(PyDict_SetItem(__pyx_v_cameFrom, __pyx_t_3, __pyx_t_2) < 0)) __PYX_ERR(0, 103, __pyx_L1_error)
+      __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
       __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
-      __pyx_t_2 = __Pyx_PyInt_From_int(__pyx_v_NodeID); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 105, __pyx_L1_error)
+
+104:             g[NodeID] = tScore
+
      __pyx_t_2 = __Pyx_PyInt_From_int(__pyx_v_tScore); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 104, __pyx_L1_error)
       __Pyx_GOTREF(__pyx_t_2);
-      __pyx_t_15 = PyTuple_New(2); if (unlikely(!__pyx_t_15)) __PYX_ERR(0, 105, __pyx_L1_error)
-      __Pyx_GOTREF(__pyx_t_15);
+      __pyx_t_3 = __Pyx_PyInt_From_int(__pyx_v_NodeID); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 104, __pyx_L1_error)
+      __Pyx_GOTREF(__pyx_t_3);
+      if (unlikely(PyDict_SetItem(__pyx_v_g, __pyx_t_3, __pyx_t_2) < 0)) __PYX_ERR(0, 104, __pyx_L1_error)
+      __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
+      __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
+
+105:             fp.remove((f[NodeID],NodeID))
+
      __pyx_t_3 = __Pyx_PyObject_GetAttrStr(__pyx_v_fp, __pyx_n_s_remove); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 105, __pyx_L1_error)
+      __Pyx_GOTREF(__pyx_t_3);
+      __pyx_t_14 = __Pyx_PyInt_From_int(__pyx_v_NodeID); if (unlikely(!__pyx_t_14)) __PYX_ERR(0, 105, __pyx_L1_error)
+      __Pyx_GOTREF(__pyx_t_14);
+      __pyx_t_1 = __Pyx_PyDict_GetItem(__pyx_v_f, __pyx_t_14); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 105, __pyx_L1_error)
+      __Pyx_GOTREF(__pyx_t_1);
+      __Pyx_DECREF(__pyx_t_14); __pyx_t_14 = 0;
+      __pyx_t_14 = __Pyx_PyInt_From_int(__pyx_v_NodeID); if (unlikely(!__pyx_t_14)) __PYX_ERR(0, 105, __pyx_L1_error)
+      __Pyx_GOTREF(__pyx_t_14);
+      __pyx_t_4 = PyTuple_New(2); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 105, __pyx_L1_error)
+      __Pyx_GOTREF(__pyx_t_4);
       __Pyx_GIVEREF(__pyx_t_1);
-      PyTuple_SET_ITEM(__pyx_t_15, 0, __pyx_t_1);
-      __Pyx_GIVEREF(__pyx_t_2);
-      PyTuple_SET_ITEM(__pyx_t_15, 1, __pyx_t_2);
+      PyTuple_SET_ITEM(__pyx_t_4, 0, __pyx_t_1);
+      __Pyx_GIVEREF(__pyx_t_14);
+      PyTuple_SET_ITEM(__pyx_t_4, 1, __pyx_t_14);
       __pyx_t_1 = 0;
-      __pyx_t_2 = 0;
-      __pyx_t_2 = NULL;
-      if (CYTHON_UNPACK_METHODS && likely(PyMethod_Check(__pyx_t_4))) {
-        __pyx_t_2 = PyMethod_GET_SELF(__pyx_t_4);
-        if (likely(__pyx_t_2)) {
-          PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_4);
-          __Pyx_INCREF(__pyx_t_2);
+      __pyx_t_14 = 0;
+      __pyx_t_14 = NULL;
+      if (CYTHON_UNPACK_METHODS && likely(PyMethod_Check(__pyx_t_3))) {
+        __pyx_t_14 = PyMethod_GET_SELF(__pyx_t_3);
+        if (likely(__pyx_t_14)) {
+          PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_3);
+          __Pyx_INCREF(__pyx_t_14);
           __Pyx_INCREF(function);
-          __Pyx_DECREF_SET(__pyx_t_4, function);
+          __Pyx_DECREF_SET(__pyx_t_3, function);
         }
       }
-      if (!__pyx_t_2) {
-        __pyx_t_5 = __Pyx_PyObject_CallOneArg(__pyx_t_4, __pyx_t_15); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 105, __pyx_L1_error)
-        __Pyx_DECREF(__pyx_t_15); __pyx_t_15 = 0;
-        __Pyx_GOTREF(__pyx_t_5);
+      if (!__pyx_t_14) {
+        __pyx_t_2 = __Pyx_PyObject_CallOneArg(__pyx_t_3, __pyx_t_4); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 105, __pyx_L1_error)
+        __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
+        __Pyx_GOTREF(__pyx_t_2);
       } else {
         #if CYTHON_FAST_PYCALL
-        if (PyFunction_Check(__pyx_t_4)) {
-          PyObject *__pyx_temp[2] = {__pyx_t_2, __pyx_t_15};
-          __pyx_t_5 = __Pyx_PyFunction_FastCall(__pyx_t_4, __pyx_temp+1-1, 1+1); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 105, __pyx_L1_error)
-          __Pyx_XDECREF(__pyx_t_2); __pyx_t_2 = 0;
-          __Pyx_GOTREF(__pyx_t_5);
-          __Pyx_DECREF(__pyx_t_15); __pyx_t_15 = 0;
+        if (PyFunction_Check(__pyx_t_3)) {
+          PyObject *__pyx_temp[2] = {__pyx_t_14, __pyx_t_4};
+          __pyx_t_2 = __Pyx_PyFunction_FastCall(__pyx_t_3, __pyx_temp+1-1, 1+1); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 105, __pyx_L1_error)
+          __Pyx_XDECREF(__pyx_t_14); __pyx_t_14 = 0;
+          __Pyx_GOTREF(__pyx_t_2);
+          __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
         } else
         #endif
         #if CYTHON_FAST_PYCCALL
-        if (__Pyx_PyFastCFunction_Check(__pyx_t_4)) {
-          PyObject *__pyx_temp[2] = {__pyx_t_2, __pyx_t_15};
-          __pyx_t_5 = __Pyx_PyCFunction_FastCall(__pyx_t_4, __pyx_temp+1-1, 1+1); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 105, __pyx_L1_error)
-          __Pyx_XDECREF(__pyx_t_2); __pyx_t_2 = 0;
-          __Pyx_GOTREF(__pyx_t_5);
-          __Pyx_DECREF(__pyx_t_15); __pyx_t_15 = 0;
+        if (__Pyx_PyFastCFunction_Check(__pyx_t_3)) {
+          PyObject *__pyx_temp[2] = {__pyx_t_14, __pyx_t_4};
+          __pyx_t_2 = __Pyx_PyCFunction_FastCall(__pyx_t_3, __pyx_temp+1-1, 1+1); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 105, __pyx_L1_error)
+          __Pyx_XDECREF(__pyx_t_14); __pyx_t_14 = 0;
+          __Pyx_GOTREF(__pyx_t_2);
+          __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
         } else
         #endif
         {
           __pyx_t_1 = PyTuple_New(1+1); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 105, __pyx_L1_error)
           __Pyx_GOTREF(__pyx_t_1);
-          __Pyx_GIVEREF(__pyx_t_2); PyTuple_SET_ITEM(__pyx_t_1, 0, __pyx_t_2); __pyx_t_2 = NULL;
-          __Pyx_GIVEREF(__pyx_t_15);
-          PyTuple_SET_ITEM(__pyx_t_1, 0+1, __pyx_t_15);
-          __pyx_t_15 = 0;
-          __pyx_t_5 = __Pyx_PyObject_Call(__pyx_t_4, __pyx_t_1, NULL); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 105, __pyx_L1_error)
-          __Pyx_GOTREF(__pyx_t_5);
+          __Pyx_GIVEREF(__pyx_t_14); PyTuple_SET_ITEM(__pyx_t_1, 0, __pyx_t_14); __pyx_t_14 = NULL;
+          __Pyx_GIVEREF(__pyx_t_4);
+          PyTuple_SET_ITEM(__pyx_t_1, 0+1, __pyx_t_4);
+          __pyx_t_4 = 0;
+          __pyx_t_2 = __Pyx_PyObject_Call(__pyx_t_3, __pyx_t_1, NULL); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 105, __pyx_L1_error)
+          __Pyx_GOTREF(__pyx_t_2);
           __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
         }
       }
-      __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
-      __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
+      __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
+      __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
 
+106:             fTemp = g[NodeID] + EstimateDistance(NodeID,target,xCount,yCount,zCount,xSize,ySize,zSize)
-
      __pyx_t_5 = __Pyx_PyInt_From_int(__pyx_v_NodeID); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 106, __pyx_L1_error)
-      __Pyx_GOTREF(__pyx_t_5);
-      __pyx_t_4 = __Pyx_PyDict_GetItem(__pyx_v_g, __pyx_t_5); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 106, __pyx_L1_error)
-      __Pyx_GOTREF(__pyx_t_4);
-      __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
-      __pyx_t_5 = PyFloat_FromDouble(__pyx_f_6CAStar_EstimateDistance(__pyx_v_NodeID, __pyx_v_target, __pyx_v_xCount, __pyx_v_yCount, __pyx_v_zCount, __pyx_v_xSize, __pyx_v_ySize, __pyx_v_zSize)); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 106, __pyx_L1_error)
-      __Pyx_GOTREF(__pyx_t_5);
-      __pyx_t_1 = PyNumber_Add(__pyx_t_4, __pyx_t_5); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 106, __pyx_L1_error)
+
      __pyx_t_2 = __Pyx_PyInt_From_int(__pyx_v_NodeID); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 106, __pyx_L1_error)
+      __Pyx_GOTREF(__pyx_t_2);
+      __pyx_t_3 = __Pyx_PyDict_GetItem(__pyx_v_g, __pyx_t_2); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 106, __pyx_L1_error)
+      __Pyx_GOTREF(__pyx_t_3);
+      __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
+      __pyx_t_2 = PyFloat_FromDouble(__pyx_f_6CAStar_6CAStar_EstimateDistance(__pyx_v_NodeID, __pyx_v_target, __pyx_v_xCount, __pyx_v_yCount, __pyx_v_zCount, __pyx_v_xSize, __pyx_v_ySize, __pyx_v_zSize)); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 106, __pyx_L1_error)
+      __Pyx_GOTREF(__pyx_t_2);
+      __pyx_t_1 = PyNumber_Add(__pyx_t_3, __pyx_t_2); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 106, __pyx_L1_error)
       __Pyx_GOTREF(__pyx_t_1);
-      __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
-      __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
+      __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
+      __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
       __pyx_t_8 = __pyx_PyFloat_AsFloat(__pyx_t_1); if (unlikely((__pyx_t_8 == (float)-1) && PyErr_Occurred())) __PYX_ERR(0, 106, __pyx_L1_error)
       __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
       __pyx_v_fTemp = __pyx_t_8;
 
+107:             f[NodeID] = fTemp
      __pyx_t_1 = PyFloat_FromDouble(__pyx_v_fTemp); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 107, __pyx_L1_error)
       __Pyx_GOTREF(__pyx_t_1);
-      __pyx_t_5 = __Pyx_PyInt_From_int(__pyx_v_NodeID); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 107, __pyx_L1_error)
-      __Pyx_GOTREF(__pyx_t_5);
-      if (unlikely(PyDict_SetItem(__pyx_v_f, __pyx_t_5, __pyx_t_1) < 0)) __PYX_ERR(0, 107, __pyx_L1_error)
-      __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
+      __pyx_t_2 = __Pyx_PyInt_From_int(__pyx_v_NodeID); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 107, __pyx_L1_error)
+      __Pyx_GOTREF(__pyx_t_2);
+      if (unlikely(PyDict_SetItem(__pyx_v_f, __pyx_t_2, __pyx_t_1) < 0)) __PYX_ERR(0, 107, __pyx_L1_error)
+      __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
       __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
 
+108:             fp.put((fTemp,NodeID))
-
      __pyx_t_5 = __Pyx_PyObject_GetAttrStr(__pyx_v_fp, __pyx_n_s_put); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 108, __pyx_L1_error)
-      __Pyx_GOTREF(__pyx_t_5);
-      __pyx_t_4 = PyFloat_FromDouble(__pyx_v_fTemp); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 108, __pyx_L1_error)
-      __Pyx_GOTREF(__pyx_t_4);
-      __pyx_t_15 = __Pyx_PyInt_From_int(__pyx_v_NodeID); if (unlikely(!__pyx_t_15)) __PYX_ERR(0, 108, __pyx_L1_error)
-      __Pyx_GOTREF(__pyx_t_15);
-      __pyx_t_2 = PyTuple_New(2); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 108, __pyx_L1_error)
+
      __pyx_t_2 = __Pyx_PyObject_GetAttrStr(__pyx_v_fp, __pyx_n_s_put); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 108, __pyx_L1_error)
       __Pyx_GOTREF(__pyx_t_2);
+      __pyx_t_3 = PyFloat_FromDouble(__pyx_v_fTemp); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 108, __pyx_L1_error)
+      __Pyx_GOTREF(__pyx_t_3);
+      __pyx_t_4 = __Pyx_PyInt_From_int(__pyx_v_NodeID); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 108, __pyx_L1_error)
+      __Pyx_GOTREF(__pyx_t_4);
+      __pyx_t_14 = PyTuple_New(2); if (unlikely(!__pyx_t_14)) __PYX_ERR(0, 108, __pyx_L1_error)
+      __Pyx_GOTREF(__pyx_t_14);
+      __Pyx_GIVEREF(__pyx_t_3);
+      PyTuple_SET_ITEM(__pyx_t_14, 0, __pyx_t_3);
       __Pyx_GIVEREF(__pyx_t_4);
-      PyTuple_SET_ITEM(__pyx_t_2, 0, __pyx_t_4);
-      __Pyx_GIVEREF(__pyx_t_15);
-      PyTuple_SET_ITEM(__pyx_t_2, 1, __pyx_t_15);
+      PyTuple_SET_ITEM(__pyx_t_14, 1, __pyx_t_4);
+      __pyx_t_3 = 0;
       __pyx_t_4 = 0;
-      __pyx_t_15 = 0;
-      __pyx_t_15 = NULL;
-      if (CYTHON_UNPACK_METHODS && likely(PyMethod_Check(__pyx_t_5))) {
-        __pyx_t_15 = PyMethod_GET_SELF(__pyx_t_5);
-        if (likely(__pyx_t_15)) {
-          PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_5);
-          __Pyx_INCREF(__pyx_t_15);
+      __pyx_t_4 = NULL;
+      if (CYTHON_UNPACK_METHODS && likely(PyMethod_Check(__pyx_t_2))) {
+        __pyx_t_4 = PyMethod_GET_SELF(__pyx_t_2);
+        if (likely(__pyx_t_4)) {
+          PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_2);
+          __Pyx_INCREF(__pyx_t_4);
           __Pyx_INCREF(function);
-          __Pyx_DECREF_SET(__pyx_t_5, function);
+          __Pyx_DECREF_SET(__pyx_t_2, function);
         }
       }
-      if (!__pyx_t_15) {
-        __pyx_t_1 = __Pyx_PyObject_CallOneArg(__pyx_t_5, __pyx_t_2); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 108, __pyx_L1_error)
-        __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
+      if (!__pyx_t_4) {
+        __pyx_t_1 = __Pyx_PyObject_CallOneArg(__pyx_t_2, __pyx_t_14); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 108, __pyx_L1_error)
+        __Pyx_DECREF(__pyx_t_14); __pyx_t_14 = 0;
         __Pyx_GOTREF(__pyx_t_1);
       } else {
         #if CYTHON_FAST_PYCALL
-        if (PyFunction_Check(__pyx_t_5)) {
-          PyObject *__pyx_temp[2] = {__pyx_t_15, __pyx_t_2};
-          __pyx_t_1 = __Pyx_PyFunction_FastCall(__pyx_t_5, __pyx_temp+1-1, 1+1); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 108, __pyx_L1_error)
-          __Pyx_XDECREF(__pyx_t_15); __pyx_t_15 = 0;
+        if (PyFunction_Check(__pyx_t_2)) {
+          PyObject *__pyx_temp[2] = {__pyx_t_4, __pyx_t_14};
+          __pyx_t_1 = __Pyx_PyFunction_FastCall(__pyx_t_2, __pyx_temp+1-1, 1+1); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 108, __pyx_L1_error)
+          __Pyx_XDECREF(__pyx_t_4); __pyx_t_4 = 0;
           __Pyx_GOTREF(__pyx_t_1);
-          __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
+          __Pyx_DECREF(__pyx_t_14); __pyx_t_14 = 0;
         } else
         #endif
         #if CYTHON_FAST_PYCCALL
-        if (__Pyx_PyFastCFunction_Check(__pyx_t_5)) {
-          PyObject *__pyx_temp[2] = {__pyx_t_15, __pyx_t_2};
-          __pyx_t_1 = __Pyx_PyCFunction_FastCall(__pyx_t_5, __pyx_temp+1-1, 1+1); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 108, __pyx_L1_error)
-          __Pyx_XDECREF(__pyx_t_15); __pyx_t_15 = 0;
+        if (__Pyx_PyFastCFunction_Check(__pyx_t_2)) {
+          PyObject *__pyx_temp[2] = {__pyx_t_4, __pyx_t_14};
+          __pyx_t_1 = __Pyx_PyCFunction_FastCall(__pyx_t_2, __pyx_temp+1-1, 1+1); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 108, __pyx_L1_error)
+          __Pyx_XDECREF(__pyx_t_4); __pyx_t_4 = 0;
           __Pyx_GOTREF(__pyx_t_1);
-          __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
+          __Pyx_DECREF(__pyx_t_14); __pyx_t_14 = 0;
         } else
         #endif
         {
-          __pyx_t_4 = PyTuple_New(1+1); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 108, __pyx_L1_error)
-          __Pyx_GOTREF(__pyx_t_4);
-          __Pyx_GIVEREF(__pyx_t_15); PyTuple_SET_ITEM(__pyx_t_4, 0, __pyx_t_15); __pyx_t_15 = NULL;
-          __Pyx_GIVEREF(__pyx_t_2);
-          PyTuple_SET_ITEM(__pyx_t_4, 0+1, __pyx_t_2);
-          __pyx_t_2 = 0;
-          __pyx_t_1 = __Pyx_PyObject_Call(__pyx_t_5, __pyx_t_4, NULL); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 108, __pyx_L1_error)
+          __pyx_t_3 = PyTuple_New(1+1); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 108, __pyx_L1_error)
+          __Pyx_GOTREF(__pyx_t_3);
+          __Pyx_GIVEREF(__pyx_t_4); PyTuple_SET_ITEM(__pyx_t_3, 0, __pyx_t_4); __pyx_t_4 = NULL;
+          __Pyx_GIVEREF(__pyx_t_14);
+          PyTuple_SET_ITEM(__pyx_t_3, 0+1, __pyx_t_14);
+          __pyx_t_14 = 0;
+          __pyx_t_1 = __Pyx_PyObject_Call(__pyx_t_2, __pyx_t_3, NULL); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 108, __pyx_L1_error)
           __Pyx_GOTREF(__pyx_t_1);
-          __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
+          __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
         }
       }
-      __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
+      __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
       __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
 
 109: 
+110:         f.pop(current) #These values will not be refered to again since the current NodeID has been moved to the closed set . This therefore reduces memory usage very slightly
    __pyx_t_1 = __Pyx_PyObject_GetAttrStr(__pyx_v_f, __pyx_n_s_pop); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 110, __pyx_L1_error)
     __Pyx_GOTREF(__pyx_t_1);
-    __pyx_t_5 = __Pyx_PyInt_From_int(__pyx_v_current); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 110, __pyx_L1_error)
-    __Pyx_GOTREF(__pyx_t_5);
-    __pyx_t_4 = NULL;
+    __pyx_t_2 = __Pyx_PyInt_From_int(__pyx_v_current); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 110, __pyx_L1_error)
+    __Pyx_GOTREF(__pyx_t_2);
+    __pyx_t_3 = NULL;
     if (CYTHON_UNPACK_METHODS && likely(PyMethod_Check(__pyx_t_1))) {
-      __pyx_t_4 = PyMethod_GET_SELF(__pyx_t_1);
-      if (likely(__pyx_t_4)) {
+      __pyx_t_3 = PyMethod_GET_SELF(__pyx_t_1);
+      if (likely(__pyx_t_3)) {
         PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_1);
-        __Pyx_INCREF(__pyx_t_4);
+        __Pyx_INCREF(__pyx_t_3);
         __Pyx_INCREF(function);
         __Pyx_DECREF_SET(__pyx_t_1, function);
       }
     }
-    if (!__pyx_t_4) {
-      __pyx_t_3 = __Pyx_PyObject_CallOneArg(__pyx_t_1, __pyx_t_5); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 110, __pyx_L1_error)
-      __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
-      __Pyx_GOTREF(__pyx_t_3);
+    if (!__pyx_t_3) {
+      __pyx_t_5 = __Pyx_PyObject_CallOneArg(__pyx_t_1, __pyx_t_2); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 110, __pyx_L1_error)
+      __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
+      __Pyx_GOTREF(__pyx_t_5);
     } else {
       #if CYTHON_FAST_PYCALL
       if (PyFunction_Check(__pyx_t_1)) {
-        PyObject *__pyx_temp[2] = {__pyx_t_4, __pyx_t_5};
-        __pyx_t_3 = __Pyx_PyFunction_FastCall(__pyx_t_1, __pyx_temp+1-1, 1+1); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 110, __pyx_L1_error)
-        __Pyx_XDECREF(__pyx_t_4); __pyx_t_4 = 0;
-        __Pyx_GOTREF(__pyx_t_3);
-        __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
+        PyObject *__pyx_temp[2] = {__pyx_t_3, __pyx_t_2};
+        __pyx_t_5 = __Pyx_PyFunction_FastCall(__pyx_t_1, __pyx_temp+1-1, 1+1); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 110, __pyx_L1_error)
+        __Pyx_XDECREF(__pyx_t_3); __pyx_t_3 = 0;
+        __Pyx_GOTREF(__pyx_t_5);
+        __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
       } else
       #endif
       #if CYTHON_FAST_PYCCALL
       if (__Pyx_PyFastCFunction_Check(__pyx_t_1)) {
-        PyObject *__pyx_temp[2] = {__pyx_t_4, __pyx_t_5};
-        __pyx_t_3 = __Pyx_PyCFunction_FastCall(__pyx_t_1, __pyx_temp+1-1, 1+1); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 110, __pyx_L1_error)
-        __Pyx_XDECREF(__pyx_t_4); __pyx_t_4 = 0;
-        __Pyx_GOTREF(__pyx_t_3);
-        __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
+        PyObject *__pyx_temp[2] = {__pyx_t_3, __pyx_t_2};
+        __pyx_t_5 = __Pyx_PyCFunction_FastCall(__pyx_t_1, __pyx_temp+1-1, 1+1); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 110, __pyx_L1_error)
+        __Pyx_XDECREF(__pyx_t_3); __pyx_t_3 = 0;
+        __Pyx_GOTREF(__pyx_t_5);
+        __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
       } else
       #endif
       {
-        __pyx_t_2 = PyTuple_New(1+1); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 110, __pyx_L1_error)
-        __Pyx_GOTREF(__pyx_t_2);
-        __Pyx_GIVEREF(__pyx_t_4); PyTuple_SET_ITEM(__pyx_t_2, 0, __pyx_t_4); __pyx_t_4 = NULL;
-        __Pyx_GIVEREF(__pyx_t_5);
-        PyTuple_SET_ITEM(__pyx_t_2, 0+1, __pyx_t_5);
-        __pyx_t_5 = 0;
-        __pyx_t_3 = __Pyx_PyObject_Call(__pyx_t_1, __pyx_t_2, NULL); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 110, __pyx_L1_error)
-        __Pyx_GOTREF(__pyx_t_3);
-        __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
+        __pyx_t_14 = PyTuple_New(1+1); if (unlikely(!__pyx_t_14)) __PYX_ERR(0, 110, __pyx_L1_error)
+        __Pyx_GOTREF(__pyx_t_14);
+        __Pyx_GIVEREF(__pyx_t_3); PyTuple_SET_ITEM(__pyx_t_14, 0, __pyx_t_3); __pyx_t_3 = NULL;
+        __Pyx_GIVEREF(__pyx_t_2);
+        PyTuple_SET_ITEM(__pyx_t_14, 0+1, __pyx_t_2);
+        __pyx_t_2 = 0;
+        __pyx_t_5 = __Pyx_PyObject_Call(__pyx_t_1, __pyx_t_14, NULL); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 110, __pyx_L1_error)
+        __Pyx_GOTREF(__pyx_t_5);
+        __Pyx_DECREF(__pyx_t_14); __pyx_t_14 = 0;
       }
     }
     __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
-    __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
+    __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
 
+111:         g.pop(current)
    __pyx_t_1 = __Pyx_PyObject_GetAttrStr(__pyx_v_g, __pyx_n_s_pop); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 111, __pyx_L1_error)
     __Pyx_GOTREF(__pyx_t_1);
-    __pyx_t_2 = __Pyx_PyInt_From_int(__pyx_v_current); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 111, __pyx_L1_error)
-    __Pyx_GOTREF(__pyx_t_2);
-    __pyx_t_5 = NULL;
+    __pyx_t_14 = __Pyx_PyInt_From_int(__pyx_v_current); if (unlikely(!__pyx_t_14)) __PYX_ERR(0, 111, __pyx_L1_error)
+    __Pyx_GOTREF(__pyx_t_14);
+    __pyx_t_2 = NULL;
     if (CYTHON_UNPACK_METHODS && likely(PyMethod_Check(__pyx_t_1))) {
-      __pyx_t_5 = PyMethod_GET_SELF(__pyx_t_1);
-      if (likely(__pyx_t_5)) {
+      __pyx_t_2 = PyMethod_GET_SELF(__pyx_t_1);
+      if (likely(__pyx_t_2)) {
         PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_1);
-        __Pyx_INCREF(__pyx_t_5);
+        __Pyx_INCREF(__pyx_t_2);
         __Pyx_INCREF(function);
         __Pyx_DECREF_SET(__pyx_t_1, function);
       }
     }
-    if (!__pyx_t_5) {
-      __pyx_t_3 = __Pyx_PyObject_CallOneArg(__pyx_t_1, __pyx_t_2); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 111, __pyx_L1_error)
-      __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
-      __Pyx_GOTREF(__pyx_t_3);
+    if (!__pyx_t_2) {
+      __pyx_t_5 = __Pyx_PyObject_CallOneArg(__pyx_t_1, __pyx_t_14); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 111, __pyx_L1_error)
+      __Pyx_DECREF(__pyx_t_14); __pyx_t_14 = 0;
+      __Pyx_GOTREF(__pyx_t_5);
     } else {
       #if CYTHON_FAST_PYCALL
       if (PyFunction_Check(__pyx_t_1)) {
-        PyObject *__pyx_temp[2] = {__pyx_t_5, __pyx_t_2};
-        __pyx_t_3 = __Pyx_PyFunction_FastCall(__pyx_t_1, __pyx_temp+1-1, 1+1); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 111, __pyx_L1_error)
-        __Pyx_XDECREF(__pyx_t_5); __pyx_t_5 = 0;
-        __Pyx_GOTREF(__pyx_t_3);
-        __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
+        PyObject *__pyx_temp[2] = {__pyx_t_2, __pyx_t_14};
+        __pyx_t_5 = __Pyx_PyFunction_FastCall(__pyx_t_1, __pyx_temp+1-1, 1+1); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 111, __pyx_L1_error)
+        __Pyx_XDECREF(__pyx_t_2); __pyx_t_2 = 0;
+        __Pyx_GOTREF(__pyx_t_5);
+        __Pyx_DECREF(__pyx_t_14); __pyx_t_14 = 0;
       } else
       #endif
       #if CYTHON_FAST_PYCCALL
       if (__Pyx_PyFastCFunction_Check(__pyx_t_1)) {
-        PyObject *__pyx_temp[2] = {__pyx_t_5, __pyx_t_2};
-        __pyx_t_3 = __Pyx_PyCFunction_FastCall(__pyx_t_1, __pyx_temp+1-1, 1+1); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 111, __pyx_L1_error)
-        __Pyx_XDECREF(__pyx_t_5); __pyx_t_5 = 0;
-        __Pyx_GOTREF(__pyx_t_3);
-        __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
+        PyObject *__pyx_temp[2] = {__pyx_t_2, __pyx_t_14};
+        __pyx_t_5 = __Pyx_PyCFunction_FastCall(__pyx_t_1, __pyx_temp+1-1, 1+1); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 111, __pyx_L1_error)
+        __Pyx_XDECREF(__pyx_t_2); __pyx_t_2 = 0;
+        __Pyx_GOTREF(__pyx_t_5);
+        __Pyx_DECREF(__pyx_t_14); __pyx_t_14 = 0;
       } else
       #endif
       {
-        __pyx_t_4 = PyTuple_New(1+1); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 111, __pyx_L1_error)
-        __Pyx_GOTREF(__pyx_t_4);
-        __Pyx_GIVEREF(__pyx_t_5); PyTuple_SET_ITEM(__pyx_t_4, 0, __pyx_t_5); __pyx_t_5 = NULL;
-        __Pyx_GIVEREF(__pyx_t_2);
-        PyTuple_SET_ITEM(__pyx_t_4, 0+1, __pyx_t_2);
-        __pyx_t_2 = 0;
-        __pyx_t_3 = __Pyx_PyObject_Call(__pyx_t_1, __pyx_t_4, NULL); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 111, __pyx_L1_error)
+        __pyx_t_3 = PyTuple_New(1+1); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 111, __pyx_L1_error)
         __Pyx_GOTREF(__pyx_t_3);
-        __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
+        __Pyx_GIVEREF(__pyx_t_2); PyTuple_SET_ITEM(__pyx_t_3, 0, __pyx_t_2); __pyx_t_2 = NULL;
+        __Pyx_GIVEREF(__pyx_t_14);
+        PyTuple_SET_ITEM(__pyx_t_3, 0+1, __pyx_t_14);
+        __pyx_t_14 = 0;
+        __pyx_t_5 = __Pyx_PyObject_Call(__pyx_t_1, __pyx_t_3, NULL); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 111, __pyx_L1_error)
+        __Pyx_GOTREF(__pyx_t_5);
+        __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
       }
     }
     __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
-    __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
+    __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
   }
   __pyx_L4_break:;
 
+112:     EndTime = time.time()
  __pyx_t_1 = __Pyx_GetModuleGlobalName(__pyx_n_s_time); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 112, __pyx_L1_error)
   __Pyx_GOTREF(__pyx_t_1);
-  __pyx_t_4 = __Pyx_PyObject_GetAttrStr(__pyx_t_1, __pyx_n_s_time); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 112, __pyx_L1_error)
-  __Pyx_GOTREF(__pyx_t_4);
+  __pyx_t_3 = __Pyx_PyObject_GetAttrStr(__pyx_t_1, __pyx_n_s_time); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 112, __pyx_L1_error)
+  __Pyx_GOTREF(__pyx_t_3);
   __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
   __pyx_t_1 = NULL;
-  if (CYTHON_UNPACK_METHODS && unlikely(PyMethod_Check(__pyx_t_4))) {
-    __pyx_t_1 = PyMethod_GET_SELF(__pyx_t_4);
+  if (CYTHON_UNPACK_METHODS && unlikely(PyMethod_Check(__pyx_t_3))) {
+    __pyx_t_1 = PyMethod_GET_SELF(__pyx_t_3);
     if (likely(__pyx_t_1)) {
-      PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_4);
+      PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_3);
       __Pyx_INCREF(__pyx_t_1);
       __Pyx_INCREF(function);
-      __Pyx_DECREF_SET(__pyx_t_4, function);
+      __Pyx_DECREF_SET(__pyx_t_3, function);
     }
   }
   if (__pyx_t_1) {
-    __pyx_t_3 = __Pyx_PyObject_CallOneArg(__pyx_t_4, __pyx_t_1); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 112, __pyx_L1_error)
+    __pyx_t_5 = __Pyx_PyObject_CallOneArg(__pyx_t_3, __pyx_t_1); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 112, __pyx_L1_error)
     __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
   } else {
-    __pyx_t_3 = __Pyx_PyObject_CallNoArg(__pyx_t_4); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 112, __pyx_L1_error)
+    __pyx_t_5 = __Pyx_PyObject_CallNoArg(__pyx_t_3); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 112, __pyx_L1_error)
   }
-  __Pyx_GOTREF(__pyx_t_3);
-  __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
-  __pyx_v_EndTime = __pyx_t_3;
-  __pyx_t_3 = 0;
+  __Pyx_GOTREF(__pyx_t_5);
+  __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
+  __pyx_v_EndTime = __pyx_t_5;
+  __pyx_t_5 = 0;
 
+113:     print("[A* Time] "+str((EndTime-StartTime)*1000)+" Milliseconds."+" Total Expanded:"+str(len(cameFrom)))
-
  __pyx_t_3 = PyNumber_Subtract(__pyx_v_EndTime, __pyx_v_StartTime); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 113, __pyx_L1_error)
+
  __pyx_t_5 = PyNumber_Subtract(__pyx_v_EndTime, __pyx_v_StartTime); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 113, __pyx_L1_error)
+  __Pyx_GOTREF(__pyx_t_5);
+  __pyx_t_3 = PyNumber_Multiply(__pyx_t_5, __pyx_int_1000); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 113, __pyx_L1_error)
   __Pyx_GOTREF(__pyx_t_3);
-  __pyx_t_4 = PyNumber_Multiply(__pyx_t_3, __pyx_int_1000); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 113, __pyx_L1_error)
-  __Pyx_GOTREF(__pyx_t_4);
-  __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
-  __pyx_t_3 = PyTuple_New(1); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 113, __pyx_L1_error)
+  __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
+  __pyx_t_5 = PyTuple_New(1); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 113, __pyx_L1_error)
+  __Pyx_GOTREF(__pyx_t_5);
+  __Pyx_GIVEREF(__pyx_t_3);
+  PyTuple_SET_ITEM(__pyx_t_5, 0, __pyx_t_3);
+  __pyx_t_3 = 0;
+  __pyx_t_3 = __Pyx_PyObject_Call(((PyObject *)(&PyString_Type)), __pyx_t_5, NULL); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 113, __pyx_L1_error)
   __Pyx_GOTREF(__pyx_t_3);
-  __Pyx_GIVEREF(__pyx_t_4);
-  PyTuple_SET_ITEM(__pyx_t_3, 0, __pyx_t_4);
-  __pyx_t_4 = 0;
-  __pyx_t_4 = __Pyx_PyObject_Call(((PyObject *)(&PyString_Type)), __pyx_t_3, NULL); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 113, __pyx_L1_error)
-  __Pyx_GOTREF(__pyx_t_4);
+  __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
+  __pyx_t_5 = PyNumber_Add(__pyx_kp_s_A_Time, __pyx_t_3); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 113, __pyx_L1_error)
+  __Pyx_GOTREF(__pyx_t_5);
   __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
-  __pyx_t_3 = PyNumber_Add(__pyx_kp_s_A_Time, __pyx_t_4); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 113, __pyx_L1_error)
+  __pyx_t_3 = PyNumber_Add(__pyx_t_5, __pyx_kp_s_Milliseconds); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 113, __pyx_L1_error)
   __Pyx_GOTREF(__pyx_t_3);
-  __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
-  __pyx_t_4 = PyNumber_Add(__pyx_t_3, __pyx_kp_s_Milliseconds); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 113, __pyx_L1_error)
-  __Pyx_GOTREF(__pyx_t_4);
+  __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
+  __pyx_t_5 = PyNumber_Add(__pyx_t_3, __pyx_kp_s_Total_Expanded); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 113, __pyx_L1_error)
+  __Pyx_GOTREF(__pyx_t_5);
   __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
-  __pyx_t_3 = PyNumber_Add(__pyx_t_4, __pyx_kp_s_Total_Expanded); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 113, __pyx_L1_error)
-  __Pyx_GOTREF(__pyx_t_3);
-  __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
   __pyx_t_12 = PyDict_Size(__pyx_v_cameFrom); if (unlikely(__pyx_t_12 == -1)) __PYX_ERR(0, 113, __pyx_L1_error)
-  __pyx_t_4 = PyInt_FromSsize_t(__pyx_t_12); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 113, __pyx_L1_error)
-  __Pyx_GOTREF(__pyx_t_4);
+  __pyx_t_3 = PyInt_FromSsize_t(__pyx_t_12); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 113, __pyx_L1_error)
+  __Pyx_GOTREF(__pyx_t_3);
   __pyx_t_1 = PyTuple_New(1); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 113, __pyx_L1_error)
   __Pyx_GOTREF(__pyx_t_1);
-  __Pyx_GIVEREF(__pyx_t_4);
-  PyTuple_SET_ITEM(__pyx_t_1, 0, __pyx_t_4);
-  __pyx_t_4 = 0;
-  __pyx_t_4 = __Pyx_PyObject_Call(((PyObject *)(&PyString_Type)), __pyx_t_1, NULL); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 113, __pyx_L1_error)
-  __Pyx_GOTREF(__pyx_t_4);
+  __Pyx_GIVEREF(__pyx_t_3);
+  PyTuple_SET_ITEM(__pyx_t_1, 0, __pyx_t_3);
+  __pyx_t_3 = 0;
+  __pyx_t_3 = __Pyx_PyObject_Call(((PyObject *)(&PyString_Type)), __pyx_t_1, NULL); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 113, __pyx_L1_error)
+  __Pyx_GOTREF(__pyx_t_3);
   __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
-  __pyx_t_1 = PyNumber_Add(__pyx_t_3, __pyx_t_4); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 113, __pyx_L1_error)
+  __pyx_t_1 = PyNumber_Add(__pyx_t_5, __pyx_t_3); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 113, __pyx_L1_error)
   __Pyx_GOTREF(__pyx_t_1);
+  __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
   __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
-  __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
   if (__Pyx_PrintOne(0, __pyx_t_1) < 0) __PYX_ERR(0, 113, __pyx_L1_error)
   __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
 
+114:     if Found:
@@ -1748,7 +1762,7 @@ }
+115:         return FindPath(cameFrom,current)
    __Pyx_XDECREF(__pyx_r);
-    __pyx_t_1 = __pyx_f_6CAStar_FindPath(__pyx_v_cameFrom, __pyx_v_current); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 115, __pyx_L1_error)
+    __pyx_t_1 = __pyx_f_6CAStar_6CAStar_FindPath(__pyx_v_cameFrom, __pyx_v_current); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 115, __pyx_L1_error)
     __Pyx_GOTREF(__pyx_t_1);
     __pyx_r = __pyx_t_1;
     __pyx_t_1 = 0;
@@ -1758,29 +1772,29 @@
 
  /*else*/ {
     __pyx_t_1 = __Pyx_PyInt_From_int(__pyx_v_start); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 117, __pyx_L1_error)
     __Pyx_GOTREF(__pyx_t_1);
-    __pyx_t_4 = __Pyx_PyInt_From_int(__pyx_v_target); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 117, __pyx_L1_error)
-    __Pyx_GOTREF(__pyx_t_4);
-    __pyx_t_3 = PyTuple_New(4); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 117, __pyx_L1_error)
+    __pyx_t_3 = __Pyx_PyInt_From_int(__pyx_v_target); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 117, __pyx_L1_error)
     __Pyx_GOTREF(__pyx_t_3);
+    __pyx_t_5 = PyTuple_New(4); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 117, __pyx_L1_error)
+    __Pyx_GOTREF(__pyx_t_5);
     __Pyx_INCREF(__pyx_kp_s_A_Search_FAILED_Start);
     __Pyx_GIVEREF(__pyx_kp_s_A_Search_FAILED_Start);
-    PyTuple_SET_ITEM(__pyx_t_3, 0, __pyx_kp_s_A_Search_FAILED_Start);
+    PyTuple_SET_ITEM(__pyx_t_5, 0, __pyx_kp_s_A_Search_FAILED_Start);
     __Pyx_GIVEREF(__pyx_t_1);
-    PyTuple_SET_ITEM(__pyx_t_3, 1, __pyx_t_1);
+    PyTuple_SET_ITEM(__pyx_t_5, 1, __pyx_t_1);
     __Pyx_INCREF(__pyx_kp_s_Target);
     __Pyx_GIVEREF(__pyx_kp_s_Target);
-    PyTuple_SET_ITEM(__pyx_t_3, 2, __pyx_kp_s_Target);
-    __Pyx_GIVEREF(__pyx_t_4);
-    PyTuple_SET_ITEM(__pyx_t_3, 3, __pyx_t_4);
+    PyTuple_SET_ITEM(__pyx_t_5, 2, __pyx_kp_s_Target);
+    __Pyx_GIVEREF(__pyx_t_3);
+    PyTuple_SET_ITEM(__pyx_t_5, 3, __pyx_t_3);
     __pyx_t_1 = 0;
-    __pyx_t_4 = 0;
-    if (__Pyx_PrintOne(0, __pyx_t_3) < 0) __PYX_ERR(0, 117, __pyx_L1_error)
-    __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
+    __pyx_t_3 = 0;
+    if (__Pyx_PrintOne(0, __pyx_t_5) < 0) __PYX_ERR(0, 117, __pyx_L1_error)
+    __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
 
+118:         print(FindPath(cameFrom,current))
-
    __pyx_t_3 = __pyx_f_6CAStar_FindPath(__pyx_v_cameFrom, __pyx_v_current); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 118, __pyx_L1_error)
-    __Pyx_GOTREF(__pyx_t_3);
-    if (__Pyx_PrintOne(0, __pyx_t_3) < 0) __PYX_ERR(0, 118, __pyx_L1_error)
-    __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
+
    __pyx_t_5 = __pyx_f_6CAStar_6CAStar_FindPath(__pyx_v_cameFrom, __pyx_v_current); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 118, __pyx_L1_error)
+    __Pyx_GOTREF(__pyx_t_5);
+    if (__Pyx_PrintOne(0, __pyx_t_5) < 0) __PYX_ERR(0, 118, __pyx_L1_error)
+    __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
 
+119:         return None
    __Pyx_XDECREF(__pyx_r);
     __Pyx_INCREF(Py_None);
@@ -1790,9 +1804,9 @@
 
 120: 
+121: def AStar2(graph, int start, int target):   # Set all g to node_count + 1
/* Python wrapper */
-static PyObject *__pyx_pw_6CAStar_3AStar2(PyObject *__pyx_self, PyObject *__pyx_args, PyObject *__pyx_kwds); /*proto*/
-static PyMethodDef __pyx_mdef_6CAStar_3AStar2 = {"AStar2", (PyCFunction)__pyx_pw_6CAStar_3AStar2, METH_VARARGS|METH_KEYWORDS, 0};
-static PyObject *__pyx_pw_6CAStar_3AStar2(PyObject *__pyx_self, PyObject *__pyx_args, PyObject *__pyx_kwds) {
+static PyObject *__pyx_pw_6CAStar_6CAStar_3AStar2(PyObject *__pyx_self, PyObject *__pyx_args, PyObject *__pyx_kwds); /*proto*/
+static PyMethodDef __pyx_mdef_6CAStar_6CAStar_3AStar2 = {"AStar2", (PyCFunction)__pyx_pw_6CAStar_6CAStar_3AStar2, METH_VARARGS|METH_KEYWORDS, 0};
+static PyObject *__pyx_pw_6CAStar_6CAStar_3AStar2(PyObject *__pyx_self, PyObject *__pyx_args, PyObject *__pyx_kwds) {
   PyObject *__pyx_v_graph = 0;
   int __pyx_v_start;
   int __pyx_v_target;
@@ -1851,19 +1865,19 @@
   __pyx_L5_argtuple_error:;
   __Pyx_RaiseArgtupleInvalid("AStar2", 1, 3, 3, PyTuple_GET_SIZE(__pyx_args)); __PYX_ERR(0, 121, __pyx_L3_error)
   __pyx_L3_error:;
-  __Pyx_AddTraceback("CAStar.AStar2", __pyx_clineno, __pyx_lineno, __pyx_filename);
+  __Pyx_AddTraceback("CAStar.CAStar.AStar2", __pyx_clineno, __pyx_lineno, __pyx_filename);
   __Pyx_RefNannyFinishContext();
   return NULL;
   __pyx_L4_argument_unpacking_done:;
-  __pyx_r = __pyx_pf_6CAStar_2AStar2(__pyx_self, __pyx_v_graph, __pyx_v_start, __pyx_v_target);
+  __pyx_r = __pyx_pf_6CAStar_6CAStar_2AStar2(__pyx_self, __pyx_v_graph, __pyx_v_start, __pyx_v_target);
 
   /* function exit code */
   __Pyx_RefNannyFinishContext();
   return __pyx_r;
 }
 /* … */
-static PyObject *__pyx_pf_6CAStar_2AStar2(CYTHON_UNUSED PyObject *__pyx_self, PyObject *__pyx_v_graph, int __pyx_v_start, int __pyx_v_target) {
-  struct __pyx_obj_6CAStar___pyx_scope_struct__AStar2 *__pyx_cur_scope;
+static PyObject *__pyx_pf_6CAStar_6CAStar_2AStar2(CYTHON_UNUSED PyObject *__pyx_self, PyObject *__pyx_v_graph, int __pyx_v_start, int __pyx_v_target) {
+  struct __pyx_obj_6CAStar_6CAStar___pyx_scope_struct__AStar2 *__pyx_cur_scope;
   PyObject *__pyx_v_StartTime = NULL;
   float __pyx_v_xSize;
   float __pyx_v_ySize;
@@ -1886,9 +1900,9 @@
   PyObject *__pyx_r = NULL;
   __Pyx_RefNannyDeclarations
   __Pyx_RefNannySetupContext("AStar2", 0);
-  __pyx_cur_scope = (struct __pyx_obj_6CAStar___pyx_scope_struct__AStar2 *)__pyx_tp_new_6CAStar___pyx_scope_struct__AStar2(__pyx_ptype_6CAStar___pyx_scope_struct__AStar2, __pyx_empty_tuple, NULL);
+  __pyx_cur_scope = (struct __pyx_obj_6CAStar_6CAStar___pyx_scope_struct__AStar2 *)__pyx_tp_new_6CAStar_6CAStar___pyx_scope_struct__AStar2(__pyx_ptype_6CAStar_6CAStar___pyx_scope_struct__AStar2, __pyx_empty_tuple, NULL);
   if (unlikely(!__pyx_cur_scope)) {
-    __pyx_cur_scope = ((struct __pyx_obj_6CAStar___pyx_scope_struct__AStar2 *)Py_None);
+    __pyx_cur_scope = ((struct __pyx_obj_6CAStar_6CAStar___pyx_scope_struct__AStar2 *)Py_None);
     __Pyx_INCREF(Py_None);
     __PYX_ERR(0, 121, __pyx_L1_error)
   } else {
@@ -1903,7 +1917,7 @@
   __Pyx_XDECREF(__pyx_t_4);
   __Pyx_XDECREF(__pyx_t_5);
   __Pyx_XDECREF(__pyx_t_14);
-  __Pyx_AddTraceback("CAStar.AStar2", __pyx_clineno, __pyx_lineno, __pyx_filename);
+  __Pyx_AddTraceback("CAStar.CAStar.AStar2", __pyx_clineno, __pyx_lineno, __pyx_filename);
   __pyx_r = NULL;
   __pyx_L0:;
   __Pyx_XDECREF(__pyx_v_StartTime);
@@ -1921,11 +1935,11 @@
   return __pyx_r;
 }
 /* … */
-  __pyx_tuple__5 = PyTuple_Pack(24, __pyx_n_s_graph, __pyx_n_s_start, __pyx_n_s_target, __pyx_n_s_StartTime, __pyx_n_s_xSize, __pyx_n_s_ySize, __pyx_n_s_zSize, __pyx_n_s_gNode, __pyx_n_s_ClosedSet, __pyx_n_s_OpenSet, __pyx_n_s_cameFrom, __pyx_n_s_g, __pyx_n_s_f, __pyx_n_s_NodeID, __pyx_n_s_current, __pyx_n_s_tScore, __pyx_n_s_xCount, __pyx_n_s_yCount, __pyx_n_s_zCount, __pyx_n_s_FriendList, __pyx_n_s_TargetNode, __pyx_n_s_Found, __pyx_n_s_Node, __pyx_n_s_EndTime); if (unlikely(!__pyx_tuple__5)) __PYX_ERR(0, 121, __pyx_L1_error)
-  __Pyx_GOTREF(__pyx_tuple__5);
-  __Pyx_GIVEREF(__pyx_tuple__5);
+  __pyx_tuple__6 = PyTuple_Pack(24, __pyx_n_s_graph, __pyx_n_s_start, __pyx_n_s_target, __pyx_n_s_StartTime, __pyx_n_s_xSize, __pyx_n_s_ySize, __pyx_n_s_zSize, __pyx_n_s_gNode, __pyx_n_s_ClosedSet, __pyx_n_s_OpenSet, __pyx_n_s_cameFrom, __pyx_n_s_g, __pyx_n_s_f, __pyx_n_s_NodeID, __pyx_n_s_current, __pyx_n_s_tScore, __pyx_n_s_xCount, __pyx_n_s_yCount, __pyx_n_s_zCount, __pyx_n_s_FriendList, __pyx_n_s_TargetNode, __pyx_n_s_Found, __pyx_n_s_Node, __pyx_n_s_EndTime); if (unlikely(!__pyx_tuple__6)) __PYX_ERR(0, 121, __pyx_L1_error)
+  __Pyx_GOTREF(__pyx_tuple__6);
+  __Pyx_GIVEREF(__pyx_tuple__6);
 /* … */
-  __pyx_t_9 = PyCFunction_NewEx(&__pyx_mdef_6CAStar_3AStar2, NULL, __pyx_n_s_CAStar); if (unlikely(!__pyx_t_9)) __PYX_ERR(0, 121, __pyx_L1_error)
+  __pyx_t_9 = PyCFunction_NewEx(&__pyx_mdef_6CAStar_6CAStar_3AStar2, NULL, __pyx_n_s_CAStar_CAStar); if (unlikely(!__pyx_t_9)) __PYX_ERR(0, 121, __pyx_L1_error)
   __Pyx_GOTREF(__pyx_t_9);
   if (PyDict_SetItem(__pyx_d, __pyx_n_s_AStar2, __pyx_t_9) < 0) __PYX_ERR(0, 121, __pyx_L1_error)
   __Pyx_DECREF(__pyx_t_9); __pyx_t_9 = 0;
@@ -2087,7 +2101,7 @@
   if (unlikely(PyDict_SetItem(__pyx_v_g, __pyx_t_3, __pyx_int_0) < 0)) __PYX_ERR(0, 141, __pyx_L1_error)
   __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
 
+142:     f[start] = EstimateDistance(start,target,xCount,yCount,zCount,xSize,ySize,zSize)
-
  __pyx_t_3 = PyFloat_FromDouble(__pyx_f_6CAStar_EstimateDistance(__pyx_v_start, __pyx_v_target, __pyx_v_xCount, __pyx_v_yCount, __pyx_v_zCount, __pyx_v_xSize, __pyx_v_ySize, __pyx_v_zSize)); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 142, __pyx_L1_error)
+
  __pyx_t_3 = PyFloat_FromDouble(__pyx_f_6CAStar_6CAStar_EstimateDistance(__pyx_v_start, __pyx_v_target, __pyx_v_xCount, __pyx_v_yCount, __pyx_v_zCount, __pyx_v_xSize, __pyx_v_ySize, __pyx_v_zSize)); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 142, __pyx_L1_error)
   __Pyx_GOTREF(__pyx_t_3);
   __pyx_t_1 = __Pyx_PyInt_From_int(__pyx_v_start); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 142, __pyx_L1_error)
   __Pyx_GOTREF(__pyx_t_1);
@@ -2103,9 +2117,9 @@
     if (!__pyx_t_13) break;
 
+145:         current = min(f, key = lambda n:f[n])  #Faster (106 vs 62 ms) and doesnt require OpenList to be made
/* Python wrapper */
-static PyObject *__pyx_pw_6CAStar_6AStar2_lambda(PyObject *__pyx_self, PyObject *__pyx_v_n); /*proto*/
-static PyMethodDef __pyx_mdef_6CAStar_6AStar2_lambda = {"lambda", (PyCFunction)__pyx_pw_6CAStar_6AStar2_lambda, METH_O, 0};
-static PyObject *__pyx_pw_6CAStar_6AStar2_lambda(PyObject *__pyx_self, PyObject *__pyx_v_n) {
+static PyObject *__pyx_pw_6CAStar_6CAStar_6AStar2_lambda(PyObject *__pyx_self, PyObject *__pyx_v_n); /*proto*/
+static PyMethodDef __pyx_mdef_6CAStar_6CAStar_6AStar2_lambda = {"lambda", (PyCFunction)__pyx_pw_6CAStar_6CAStar_6AStar2_lambda, METH_O, 0};
+static PyObject *__pyx_pw_6CAStar_6CAStar_6AStar2_lambda(PyObject *__pyx_self, PyObject *__pyx_v_n) {
   PyObject *__pyx_r = 0;
   __Pyx_RefNannyDeclarations
   __Pyx_RefNannySetupContext("lambda (wrapper)", 0);
@@ -2117,12 +2131,12 @@
 }
 
 static PyObject *__pyx_lambda_funcdef_lambda(PyObject *__pyx_self, PyObject *__pyx_v_n) {
-  struct __pyx_obj_6CAStar___pyx_scope_struct__AStar2 *__pyx_cur_scope;
-  struct __pyx_obj_6CAStar___pyx_scope_struct__AStar2 *__pyx_outer_scope;
+  struct __pyx_obj_6CAStar_6CAStar___pyx_scope_struct__AStar2 *__pyx_cur_scope;
+  struct __pyx_obj_6CAStar_6CAStar___pyx_scope_struct__AStar2 *__pyx_outer_scope;
   PyObject *__pyx_r = NULL;
   __Pyx_RefNannyDeclarations
   __Pyx_RefNannySetupContext("lambda", 0);
-  __pyx_outer_scope = (struct __pyx_obj_6CAStar___pyx_scope_struct__AStar2 *) __Pyx_CyFunction_GetClosure(__pyx_self);
+  __pyx_outer_scope = (struct __pyx_obj_6CAStar_6CAStar___pyx_scope_struct__AStar2 *) __Pyx_CyFunction_GetClosure(__pyx_self);
   __pyx_cur_scope = __pyx_outer_scope;
   __Pyx_XDECREF(__pyx_r);
   if (unlikely(!__pyx_cur_scope->__pyx_v_f)) { __Pyx_RaiseClosureNameError("f"); __PYX_ERR(0, 145, __pyx_L1_error) }
@@ -2139,7 +2153,7 @@
   /* function exit code */
   __pyx_L1_error:;
   __Pyx_XDECREF(__pyx_t_1);
-  __Pyx_AddTraceback("CAStar.AStar2.lambda", __pyx_clineno, __pyx_lineno, __pyx_filename);
+  __Pyx_AddTraceback("CAStar.CAStar.AStar2.lambda", __pyx_clineno, __pyx_lineno, __pyx_filename);
   __pyx_r = NULL;
   __pyx_L0:;
   __Pyx_XGIVEREF(__pyx_r);
@@ -2154,7 +2168,7 @@
     PyTuple_SET_ITEM(__pyx_t_3, 0, __pyx_cur_scope->__pyx_v_f);
     __pyx_t_1 = PyDict_New(); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 145, __pyx_L1_error)
     __Pyx_GOTREF(__pyx_t_1);
-    __pyx_t_5 = __Pyx_CyFunction_NewEx(&__pyx_mdef_6CAStar_6AStar2_lambda, 0, __pyx_n_s_AStar2_locals_lambda, ((PyObject*)__pyx_cur_scope), __pyx_n_s_CAStar, __pyx_d, NULL); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 145, __pyx_L1_error)
+    __pyx_t_5 = __Pyx_CyFunction_NewEx(&__pyx_mdef_6CAStar_6CAStar_6AStar2_lambda, 0, __pyx_n_s_AStar2_locals_lambda, ((PyObject*)__pyx_cur_scope), __pyx_n_s_CAStar_CAStar, __pyx_d, NULL); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 145, __pyx_L1_error)
     __Pyx_GOTREF(__pyx_t_5);
     if (PyDict_SetItem(__pyx_t_1, __pyx_n_s_key, __pyx_t_5) < 0) __PYX_ERR(0, 145, __pyx_L1_error)
     __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
@@ -2503,7 +2517,7 @@
       __pyx_t_1 = __Pyx_PyDict_GetItem(__pyx_v_g, __pyx_t_4); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 168, __pyx_L1_error)
       __Pyx_GOTREF(__pyx_t_1);
       __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
-      __pyx_t_4 = PyFloat_FromDouble(__pyx_f_6CAStar_EstimateDistance(__pyx_v_NodeID, __pyx_v_target, __pyx_v_xCount, __pyx_v_yCount, __pyx_v_zCount, __pyx_v_xSize, __pyx_v_ySize, __pyx_v_zSize)); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 168, __pyx_L1_error)
+      __pyx_t_4 = PyFloat_FromDouble(__pyx_f_6CAStar_6CAStar_EstimateDistance(__pyx_v_NodeID, __pyx_v_target, __pyx_v_xCount, __pyx_v_yCount, __pyx_v_zCount, __pyx_v_xSize, __pyx_v_ySize, __pyx_v_zSize)); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 168, __pyx_L1_error)
       __Pyx_GOTREF(__pyx_t_4);
       __pyx_t_2 = PyNumber_Add(__pyx_t_1, __pyx_t_4); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 168, __pyx_L1_error)
       __Pyx_GOTREF(__pyx_t_2);
@@ -2693,7 +2707,7 @@
   }
 
+174:         return FindPath(cameFrom,current)
    __Pyx_XDECREF(__pyx_r);
-    __pyx_t_2 = __pyx_f_6CAStar_FindPath(__pyx_v_cameFrom, __pyx_v_current); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 174, __pyx_L1_error)
+    __pyx_t_2 = __pyx_f_6CAStar_6CAStar_FindPath(__pyx_v_cameFrom, __pyx_v_current); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 174, __pyx_L1_error)
     __Pyx_GOTREF(__pyx_t_2);
     __pyx_r = __pyx_t_2;
     __pyx_t_2 = 0;
@@ -2722,7 +2736,7 @@
     if (__Pyx_PrintOne(0, __pyx_t_5) < 0) __PYX_ERR(0, 176, __pyx_L1_error)
     __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
 
+177:         print(FindPath(cameFrom,current))
-
    __pyx_t_5 = __pyx_f_6CAStar_FindPath(__pyx_v_cameFrom, __pyx_v_current); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 177, __pyx_L1_error)
+
    __pyx_t_5 = __pyx_f_6CAStar_6CAStar_FindPath(__pyx_v_cameFrom, __pyx_v_current); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 177, __pyx_L1_error)
     __Pyx_GOTREF(__pyx_t_5);
     if (__Pyx_PrintOne(0, __pyx_t_5) < 0) __PYX_ERR(0, 177, __pyx_L1_error)
     __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
@@ -2735,7 +2749,7 @@
 
 179: 
 180: 
+181: cdef FindPath(dict cameFrom, int current):
-
static PyObject *__pyx_f_6CAStar_FindPath(PyObject *__pyx_v_cameFrom, int __pyx_v_current) {
+
static PyObject *__pyx_f_6CAStar_6CAStar_FindPath(PyObject *__pyx_v_cameFrom, int __pyx_v_current) {
   PyObject *__pyx_v_path = 0;
   PyObject *__pyx_r = NULL;
   __Pyx_RefNannyDeclarations
@@ -2745,7 +2759,7 @@
   __pyx_L1_error:;
   __Pyx_XDECREF(__pyx_t_1);
   __Pyx_XDECREF(__pyx_t_2);
-  __Pyx_AddTraceback("CAStar.FindPath", __pyx_clineno, __pyx_lineno, __pyx_filename);
+  __Pyx_AddTraceback("CAStar.CAStar.FindPath", __pyx_clineno, __pyx_lineno, __pyx_filename);
   __pyx_r = 0;
   __pyx_L0:;
   __Pyx_XDECREF(__pyx_v_path);
@@ -2795,11 +2809,17 @@
     __pyx_t_6 = __Pyx_PyList_Append(__pyx_v_path, __pyx_t_1); if (unlikely(__pyx_t_6 == -1)) __PYX_ERR(0, 186, __pyx_L1_error)
     __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
   }
-
+187:     return path
-
  __Pyx_XDECREF(__pyx_r);
-  __Pyx_INCREF(__pyx_v_path);
-  __pyx_r = __pyx_v_path;
+
+187:     return path[::-1]
+
  __Pyx_XDECREF(__pyx_r);
+  __pyx_t_1 = PyObject_GetItem(__pyx_v_path, __pyx_slice_); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 187, __pyx_L1_error)
+  __Pyx_GOTREF(__pyx_t_1);
+  __pyx_r = __pyx_t_1;
+  __pyx_t_1 = 0;
   goto __pyx_L0;
+/* … */
+  __pyx_slice_ = PySlice_New(Py_None, Py_None, __pyx_int_neg_1); if (unlikely(!__pyx_slice_)) __PYX_ERR(0, 187, __pyx_L1_error)
+  __Pyx_GOTREF(__pyx_slice_);
+  __Pyx_GIVEREF(__pyx_slice_);
 
 188: 
 189: 
 190: 
diff --git a/CAStar/CAStar.pyx b/CAStar/CAStar.pyx index 4b59077..31a4328 100644 --- a/CAStar/CAStar.pyx +++ b/CAStar/CAStar.pyx @@ -2,14 +2,14 @@ #cython: boundscheck=False, wraparound=False, infer_types=True,cdivision = True -import os,pickle,heapq,time,math,hashlib +import time,math,hashlib from AATC_Coordinate import * try: try: import PriorityQueue.PriorityQueueC as PriorityQueue except: print("PriotityQueueC not available, defaulting to pure python") - import PriorityQueue.PriorityQueue + import PriorityQueue.PriorityQueue as PriorityQueue except: print("AStarPQ not available") @@ -86,7 +86,7 @@ def AStarPQ(graph, int start, int target): # Set all g to node_count + 1 OpenSet.pop(current) ClosedSet[current] = 1 - FriendList = graph.GetNode(current).Friends + FriendList = graph.GetNode(current).Get_Friends() for NodeID in FriendList: if NodeID in ClosedSet: continue @@ -184,7 +184,7 @@ cdef FindPath(dict cameFrom, int current): while current in cameFrom: current = cameFrom[current] path.append(current) - return path + return path[::-1] diff --git a/CAStar/CAStar.so b/CAStar/CAStar.so index 170cd4be509ec258b82473c31dd7fae6b72b5d76..8df8716b297c4b10beafe1b30c518c8185edc4cc 100644 GIT binary patch literal 122796 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 literal 119216 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 Jh7|)b0|3)59-#mL literal 0 HcmV?d00001 diff --git a/PriorityQueue/CAStar.so b/PriorityQueue/CAStar.so new file mode 100644 index 0000000000000000000000000000000000000000..0301528842cf61905f41e4a81945e373001acbca GIT binary patch literal 58300 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 PQ%ZAE?Lc-E12F>tNmm~C literal 0 HcmV?d00001 diff --git a/PriorityQueue/__pycache__/PriorityQueue.cpython-33.pyc b/PriorityQueue/__pycache__/PriorityQueue.cpython-33.pyc new file mode 100644 index 0000000000000000000000000000000000000000..20f6517988ce25784437c94215a048a2d6c1e81a GIT binary patch literal 2075 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 H7>F4FYY!Yz literal 0 HcmV?d00001 diff --git a/PriorityQueue/__pycache__/__init__.cpython-34.pyc b/PriorityQueue/__pycache__/__init__.cpython-34.pyc new file mode 100644 index 0000000000000000000000000000000000000000..7498fbce020c565b2d8b8a38fabfd03918bbd05e GIT binary patch literal 141 zcmaFI!^_36;#4F95IhDEFu(|8H~?`m3y?@*UT=>Px# literal 0 HcmV?d00001 diff --git a/PriorityQueue/__pycache__/__init__.cpython-35.pyc b/PriorityQueue/__pycache__/__init__.cpython-35.pyc new file mode 100644 index 0000000000000000000000000000000000000000..6e0327bc19d5a126d4d8c6d5ff5459e2a1f1f52d GIT binary patch literal 129 zcmWgR<>mS?^Hd}Q5IhDEFu(|8H~?`m3y?@*Ug{naVnAl2p)q77+?f49Dul(1xTbY1T$zd`mJOr0tq9CUsn3LsVSL>`URQ# zp}|f@`jM%LMGA&S`p)^e1*IjKdFlEAMVa|UnI)BhrKzQ<`tk9Zd6^~g@p=W7w>WHa Q^HWN5Qtd!y76UN@0DMj%F8}}l literal 0 HcmV?d00001