diff --git a/devkit/__pycache__/sensor_server.cpython-314.pyc b/devkit/__pycache__/sensor_server.cpython-314.pyc
new file mode 100644
index 0000000..24298b4
Binary files /dev/null and b/devkit/__pycache__/sensor_server.cpython-314.pyc differ
diff --git a/devkit/__pycache__/sensor_stream_pb2.cpython-314.pyc b/devkit/__pycache__/sensor_stream_pb2.cpython-314.pyc
new file mode 100644
index 0000000..2951bd6
Binary files /dev/null and b/devkit/__pycache__/sensor_stream_pb2.cpython-314.pyc differ
diff --git a/devkit/__pycache__/sensor_stream_pb2_grpc.cpython-314.pyc b/devkit/__pycache__/sensor_stream_pb2_grpc.cpython-314.pyc
new file mode 100644
index 0000000..dd315f9
Binary files /dev/null and b/devkit/__pycache__/sensor_stream_pb2_grpc.cpython-314.pyc differ
diff --git a/devkit/build/je-skin-devkit-server/Analysis-00.toc b/devkit/build/je-skin-devkit-server/Analysis-00.toc
new file mode 100644
index 0000000..ec5a73c
--- /dev/null
+++ b/devkit/build/je-skin-devkit-server/Analysis-00.toc
@@ -0,0 +1,2192 @@
+(['D:\\JE-Skin\\devkit\\sensor_server.py'],
+ ['D:\\JE-Skin\\devkit'],
+ ['grpc', 'openpyxl', 'numpy'],
+ [('C:\\Python314\\Lib\\site-packages\\numpy\\_pyinstaller', 0),
+ ('C:\\Python314\\Lib\\site-packages\\_pyinstaller_hooks_contrib\\stdhooks',
+ -1000),
+ ('C:\\Python314\\Lib\\site-packages\\_pyinstaller_hooks_contrib', -1000)],
+ {},
+ [],
+ [],
+ False,
+ {},
+ 0,
+ [],
+ [('sensor_stream_pb2.py', 'D:\\JE-Skin\\devkit\\sensor_stream_pb2.py', 'DATA'),
+ ('sensor_stream_pb2_grpc.py',
+ 'D:\\JE-Skin\\devkit\\sensor_stream_pb2_grpc.py',
+ 'DATA')],
+ '3.14.3 (tags/v3.14.3:323c59a, Feb 3 2026, 16:04:56) [MSC v.1944 64 bit '
+ '(AMD64)]',
+ [('pyi_rth_inspect',
+ 'C:\\Python314\\Lib\\site-packages\\PyInstaller\\hooks\\rthooks\\pyi_rth_inspect.py',
+ 'PYSOURCE'),
+ ('pyi_rth_pkgutil',
+ 'C:\\Python314\\Lib\\site-packages\\PyInstaller\\hooks\\rthooks\\pyi_rth_pkgutil.py',
+ 'PYSOURCE'),
+ ('pyi_rth_multiprocessing',
+ 'C:\\Python314\\Lib\\site-packages\\PyInstaller\\hooks\\rthooks\\pyi_rth_multiprocessing.py',
+ 'PYSOURCE'),
+ ('sensor_server', 'D:\\JE-Skin\\devkit\\sensor_server.py', 'PYSOURCE')],
+ [('subprocess', 'C:\\Python314\\Lib\\subprocess.py', 'PYMODULE'),
+ ('selectors', 'C:\\Python314\\Lib\\selectors.py', 'PYMODULE'),
+ ('contextlib', 'C:\\Python314\\Lib\\contextlib.py', 'PYMODULE'),
+ ('multiprocessing.spawn',
+ 'C:\\Python314\\Lib\\multiprocessing\\spawn.py',
+ 'PYMODULE'),
+ ('multiprocessing.resource_tracker',
+ 'C:\\Python314\\Lib\\multiprocessing\\resource_tracker.py',
+ 'PYMODULE'),
+ ('json', 'C:\\Python314\\Lib\\json\\__init__.py', 'PYMODULE'),
+ ('json.encoder', 'C:\\Python314\\Lib\\json\\encoder.py', 'PYMODULE'),
+ ('json.decoder', 'C:\\Python314\\Lib\\json\\decoder.py', 'PYMODULE'),
+ ('json.scanner', 'C:\\Python314\\Lib\\json\\scanner.py', 'PYMODULE'),
+ ('base64', 'C:\\Python314\\Lib\\base64.py', 'PYMODULE'),
+ ('getopt', 'C:\\Python314\\Lib\\getopt.py', 'PYMODULE'),
+ ('gettext', 'C:\\Python314\\Lib\\gettext.py', 'PYMODULE'),
+ ('copy', 'C:\\Python314\\Lib\\copy.py', 'PYMODULE'),
+ ('struct', 'C:\\Python314\\Lib\\struct.py', 'PYMODULE'),
+ ('multiprocessing.util',
+ 'C:\\Python314\\Lib\\multiprocessing\\util.py',
+ 'PYMODULE'),
+ ('multiprocessing.forkserver',
+ 'C:\\Python314\\Lib\\multiprocessing\\forkserver.py',
+ 'PYMODULE'),
+ ('multiprocessing.connection',
+ 'C:\\Python314\\Lib\\multiprocessing\\connection.py',
+ 'PYMODULE'),
+ ('multiprocessing.resource_sharer',
+ 'C:\\Python314\\Lib\\multiprocessing\\resource_sharer.py',
+ 'PYMODULE'),
+ ('xmlrpc.client', 'C:\\Python314\\Lib\\xmlrpc\\client.py', 'PYMODULE'),
+ ('xmlrpc', 'C:\\Python314\\Lib\\xmlrpc\\__init__.py', 'PYMODULE'),
+ ('gzip', 'C:\\Python314\\Lib\\gzip.py', 'PYMODULE'),
+ ('compression._common._streams',
+ 'C:\\Python314\\Lib\\compression\\_common\\_streams.py',
+ 'PYMODULE'),
+ ('compression._common',
+ 'C:\\Python314\\Lib\\compression\\_common\\__init__.py',
+ 'PYMODULE'),
+ ('compression', 'C:\\Python314\\Lib\\compression\\__init__.py', 'PYMODULE'),
+ ('compression.zstd',
+ 'C:\\Python314\\Lib\\compression\\zstd\\__init__.py',
+ 'PYMODULE'),
+ ('compression.zstd._zstdfile',
+ 'C:\\Python314\\Lib\\compression\\zstd\\_zstdfile.py',
+ 'PYMODULE'),
+ ('xml.parsers.expat',
+ 'C:\\Python314\\Lib\\xml\\parsers\\expat.py',
+ 'PYMODULE'),
+ ('xml.parsers', 'C:\\Python314\\Lib\\xml\\parsers\\__init__.py', 'PYMODULE'),
+ ('xml', 'C:\\Python314\\Lib\\xml\\__init__.py', 'PYMODULE'),
+ ('xml.sax.expatreader',
+ 'C:\\Python314\\Lib\\xml\\sax\\expatreader.py',
+ 'PYMODULE'),
+ ('xml.sax.saxutils', 'C:\\Python314\\Lib\\xml\\sax\\saxutils.py', 'PYMODULE'),
+ ('urllib.request', 'C:\\Python314\\Lib\\urllib\\request.py', 'PYMODULE'),
+ ('ipaddress', 'C:\\Python314\\Lib\\ipaddress.py', 'PYMODULE'),
+ ('fnmatch', 'C:\\Python314\\Lib\\fnmatch.py', 'PYMODULE'),
+ ('ftplib', 'C:\\Python314\\Lib\\ftplib.py', 'PYMODULE'),
+ ('netrc', 'C:\\Python314\\Lib\\netrc.py', 'PYMODULE'),
+ ('mimetypes', 'C:\\Python314\\Lib\\mimetypes.py', 'PYMODULE'),
+ ('email.utils', 'C:\\Python314\\Lib\\email\\utils.py', 'PYMODULE'),
+ ('random', 'C:\\Python314\\Lib\\random.py', 'PYMODULE'),
+ ('email.charset', 'C:\\Python314\\Lib\\email\\charset.py', 'PYMODULE'),
+ ('email.encoders', 'C:\\Python314\\Lib\\email\\encoders.py', 'PYMODULE'),
+ ('quopri', 'C:\\Python314\\Lib\\quopri.py', 'PYMODULE'),
+ ('email.errors', 'C:\\Python314\\Lib\\email\\errors.py', 'PYMODULE'),
+ ('email.quoprimime', 'C:\\Python314\\Lib\\email\\quoprimime.py', 'PYMODULE'),
+ ('email.base64mime', 'C:\\Python314\\Lib\\email\\base64mime.py', 'PYMODULE'),
+ ('email._parseaddr', 'C:\\Python314\\Lib\\email\\_parseaddr.py', 'PYMODULE'),
+ ('calendar', 'C:\\Python314\\Lib\\calendar.py', 'PYMODULE'),
+ ('_colorize', 'C:\\Python314\\Lib\\_colorize.py', 'PYMODULE'),
+ ('typing', 'C:\\Python314\\Lib\\typing.py', 'PYMODULE'),
+ ('inspect', 'C:\\Python314\\Lib\\inspect.py', 'PYMODULE'),
+ ('importlib', 'C:\\Python314\\Lib\\importlib\\__init__.py', 'PYMODULE'),
+ ('importlib._bootstrap_external',
+ 'C:\\Python314\\Lib\\importlib\\_bootstrap_external.py',
+ 'PYMODULE'),
+ ('importlib.metadata',
+ 'C:\\Python314\\Lib\\importlib\\metadata\\__init__.py',
+ 'PYMODULE'),
+ ('importlib.metadata._adapters',
+ 'C:\\Python314\\Lib\\importlib\\metadata\\_adapters.py',
+ 'PYMODULE'),
+ ('importlib.metadata._text',
+ 'C:\\Python314\\Lib\\importlib\\metadata\\_text.py',
+ 'PYMODULE'),
+ ('email.message', 'C:\\Python314\\Lib\\email\\message.py', 'PYMODULE'),
+ ('email.policy', 'C:\\Python314\\Lib\\email\\policy.py', 'PYMODULE'),
+ ('email.contentmanager',
+ 'C:\\Python314\\Lib\\email\\contentmanager.py',
+ 'PYMODULE'),
+ ('email.headerregistry',
+ 'C:\\Python314\\Lib\\email\\headerregistry.py',
+ 'PYMODULE'),
+ ('email._header_value_parser',
+ 'C:\\Python314\\Lib\\email\\_header_value_parser.py',
+ 'PYMODULE'),
+ ('email.iterators', 'C:\\Python314\\Lib\\email\\iterators.py', 'PYMODULE'),
+ ('email.generator', 'C:\\Python314\\Lib\\email\\generator.py', 'PYMODULE'),
+ ('email._encoded_words',
+ 'C:\\Python314\\Lib\\email\\_encoded_words.py',
+ 'PYMODULE'),
+ ('email._policybase',
+ 'C:\\Python314\\Lib\\email\\_policybase.py',
+ 'PYMODULE'),
+ ('email.header', 'C:\\Python314\\Lib\\email\\header.py', 'PYMODULE'),
+ ('importlib.abc', 'C:\\Python314\\Lib\\importlib\\abc.py', 'PYMODULE'),
+ ('importlib._abc', 'C:\\Python314\\Lib\\importlib\\_abc.py', 'PYMODULE'),
+ ('importlib.metadata._itertools',
+ 'C:\\Python314\\Lib\\importlib\\metadata\\_itertools.py',
+ 'PYMODULE'),
+ ('importlib.metadata._functools',
+ 'C:\\Python314\\Lib\\importlib\\metadata\\_functools.py',
+ 'PYMODULE'),
+ ('importlib.metadata._collections',
+ 'C:\\Python314\\Lib\\importlib\\metadata\\_collections.py',
+ 'PYMODULE'),
+ ('importlib.metadata._meta',
+ 'C:\\Python314\\Lib\\importlib\\metadata\\_meta.py',
+ 'PYMODULE'),
+ ('textwrap', 'C:\\Python314\\Lib\\textwrap.py', 'PYMODULE'),
+ ('zipfile', 'C:\\Python314\\Lib\\zipfile\\__init__.py', 'PYMODULE'),
+ ('zipfile._path',
+ 'C:\\Python314\\Lib\\zipfile\\_path\\__init__.py',
+ 'PYMODULE'),
+ ('zipfile._path.glob',
+ 'C:\\Python314\\Lib\\zipfile\\_path\\glob.py',
+ 'PYMODULE'),
+ ('py_compile', 'C:\\Python314\\Lib\\py_compile.py', 'PYMODULE'),
+ ('lzma', 'C:\\Python314\\Lib\\lzma.py', 'PYMODULE'),
+ ('bz2', 'C:\\Python314\\Lib\\bz2.py', 'PYMODULE'),
+ ('importlib.util', 'C:\\Python314\\Lib\\importlib\\util.py', 'PYMODULE'),
+ ('importlib.readers',
+ 'C:\\Python314\\Lib\\importlib\\readers.py',
+ 'PYMODULE'),
+ ('importlib.resources.readers',
+ 'C:\\Python314\\Lib\\importlib\\resources\\readers.py',
+ 'PYMODULE'),
+ ('importlib.resources._itertools',
+ 'C:\\Python314\\Lib\\importlib\\resources\\_itertools.py',
+ 'PYMODULE'),
+ ('importlib.resources.abc',
+ 'C:\\Python314\\Lib\\importlib\\resources\\abc.py',
+ 'PYMODULE'),
+ ('importlib.resources',
+ 'C:\\Python314\\Lib\\importlib\\resources\\__init__.py',
+ 'PYMODULE'),
+ ('importlib.resources._functional',
+ 'C:\\Python314\\Lib\\importlib\\resources\\_functional.py',
+ 'PYMODULE'),
+ ('importlib.resources._common',
+ 'C:\\Python314\\Lib\\importlib\\resources\\_common.py',
+ 'PYMODULE'),
+ ('importlib.resources._adapters',
+ 'C:\\Python314\\Lib\\importlib\\resources\\_adapters.py',
+ 'PYMODULE'),
+ ('importlib._bootstrap',
+ 'C:\\Python314\\Lib\\importlib\\_bootstrap.py',
+ 'PYMODULE'),
+ ('token', 'C:\\Python314\\Lib\\token.py', 'PYMODULE'),
+ ('tokenize', 'C:\\Python314\\Lib\\tokenize.py', 'PYMODULE'),
+ ('importlib.machinery',
+ 'C:\\Python314\\Lib\\importlib\\machinery.py',
+ 'PYMODULE'),
+ ('dis', 'C:\\Python314\\Lib\\dis.py', 'PYMODULE'),
+ ('opcode', 'C:\\Python314\\Lib\\opcode.py', 'PYMODULE'),
+ ('_opcode_metadata', 'C:\\Python314\\Lib\\_opcode_metadata.py', 'PYMODULE'),
+ ('ast', 'C:\\Python314\\Lib\\ast.py', 'PYMODULE'),
+ ('_ast_unparse', 'C:\\Python314\\Lib\\_ast_unparse.py', 'PYMODULE'),
+ ('annotationlib', 'C:\\Python314\\Lib\\annotationlib.py', 'PYMODULE'),
+ ('dataclasses', 'C:\\Python314\\Lib\\dataclasses.py', 'PYMODULE'),
+ ('http.cookiejar', 'C:\\Python314\\Lib\\http\\cookiejar.py', 'PYMODULE'),
+ ('http', 'C:\\Python314\\Lib\\http\\__init__.py', 'PYMODULE'),
+ ('urllib', 'C:\\Python314\\Lib\\urllib\\__init__.py', 'PYMODULE'),
+ ('ssl', 'C:\\Python314\\Lib\\ssl.py', 'PYMODULE'),
+ ('urllib.response', 'C:\\Python314\\Lib\\urllib\\response.py', 'PYMODULE'),
+ ('urllib.error', 'C:\\Python314\\Lib\\urllib\\error.py', 'PYMODULE'),
+ ('string', 'C:\\Python314\\Lib\\string\\__init__.py', 'PYMODULE'),
+ ('hashlib', 'C:\\Python314\\Lib\\hashlib.py', 'PYMODULE'),
+ ('email', 'C:\\Python314\\Lib\\email\\__init__.py', 'PYMODULE'),
+ ('email.parser', 'C:\\Python314\\Lib\\email\\parser.py', 'PYMODULE'),
+ ('email.feedparser', 'C:\\Python314\\Lib\\email\\feedparser.py', 'PYMODULE'),
+ ('bisect', 'C:\\Python314\\Lib\\bisect.py', 'PYMODULE'),
+ ('xml.sax', 'C:\\Python314\\Lib\\xml\\sax\\__init__.py', 'PYMODULE'),
+ ('xml.sax.handler', 'C:\\Python314\\Lib\\xml\\sax\\handler.py', 'PYMODULE'),
+ ('xml.sax._exceptions',
+ 'C:\\Python314\\Lib\\xml\\sax\\_exceptions.py',
+ 'PYMODULE'),
+ ('xml.sax.xmlreader',
+ 'C:\\Python314\\Lib\\xml\\sax\\xmlreader.py',
+ 'PYMODULE'),
+ ('urllib.parse', 'C:\\Python314\\Lib\\urllib\\parse.py', 'PYMODULE'),
+ ('http.client', 'C:\\Python314\\Lib\\http\\client.py', 'PYMODULE'),
+ ('decimal', 'C:\\Python314\\Lib\\decimal.py', 'PYMODULE'),
+ ('_pydecimal', 'C:\\Python314\\Lib\\_pydecimal.py', 'PYMODULE'),
+ ('contextvars', 'C:\\Python314\\Lib\\contextvars.py', 'PYMODULE'),
+ ('numbers', 'C:\\Python314\\Lib\\numbers.py', 'PYMODULE'),
+ ('datetime', 'C:\\Python314\\Lib\\datetime.py', 'PYMODULE'),
+ ('_pydatetime', 'C:\\Python314\\Lib\\_pydatetime.py', 'PYMODULE'),
+ ('_strptime', 'C:\\Python314\\Lib\\_strptime.py', 'PYMODULE'),
+ ('hmac', 'C:\\Python314\\Lib\\hmac.py', 'PYMODULE'),
+ ('socket', 'C:\\Python314\\Lib\\socket.py', 'PYMODULE'),
+ ('tempfile', 'C:\\Python314\\Lib\\tempfile.py', 'PYMODULE'),
+ ('shutil', 'C:\\Python314\\Lib\\shutil.py', 'PYMODULE'),
+ ('tarfile', 'C:\\Python314\\Lib\\tarfile.py', 'PYMODULE'),
+ ('logging', 'C:\\Python314\\Lib\\logging\\__init__.py', 'PYMODULE'),
+ ('pickle', 'C:\\Python314\\Lib\\pickle.py', 'PYMODULE'),
+ ('pprint', 'C:\\Python314\\Lib\\pprint.py', 'PYMODULE'),
+ ('_compat_pickle', 'C:\\Python314\\Lib\\_compat_pickle.py', 'PYMODULE'),
+ ('multiprocessing.context',
+ 'C:\\Python314\\Lib\\multiprocessing\\context.py',
+ 'PYMODULE'),
+ ('multiprocessing.popen_spawn_win32',
+ 'C:\\Python314\\Lib\\multiprocessing\\popen_spawn_win32.py',
+ 'PYMODULE'),
+ ('multiprocessing.popen_forkserver',
+ 'C:\\Python314\\Lib\\multiprocessing\\popen_forkserver.py',
+ 'PYMODULE'),
+ ('multiprocessing.popen_spawn_posix',
+ 'C:\\Python314\\Lib\\multiprocessing\\popen_spawn_posix.py',
+ 'PYMODULE'),
+ ('multiprocessing.popen_fork',
+ 'C:\\Python314\\Lib\\multiprocessing\\popen_fork.py',
+ 'PYMODULE'),
+ ('multiprocessing.sharedctypes',
+ 'C:\\Python314\\Lib\\multiprocessing\\sharedctypes.py',
+ 'PYMODULE'),
+ ('multiprocessing.heap',
+ 'C:\\Python314\\Lib\\multiprocessing\\heap.py',
+ 'PYMODULE'),
+ ('ctypes', 'C:\\Python314\\Lib\\ctypes\\__init__.py', 'PYMODULE'),
+ ('ctypes.util', 'C:\\Python314\\Lib\\ctypes\\util.py', 'PYMODULE'),
+ ('ctypes._aix', 'C:\\Python314\\Lib\\ctypes\\_aix.py', 'PYMODULE'),
+ ('ctypes.macholib.dyld',
+ 'C:\\Python314\\Lib\\ctypes\\macholib\\dyld.py',
+ 'PYMODULE'),
+ ('ctypes.macholib',
+ 'C:\\Python314\\Lib\\ctypes\\macholib\\__init__.py',
+ 'PYMODULE'),
+ ('ctypes.macholib.dylib',
+ 'C:\\Python314\\Lib\\ctypes\\macholib\\dylib.py',
+ 'PYMODULE'),
+ ('ctypes.macholib.framework',
+ 'C:\\Python314\\Lib\\ctypes\\macholib\\framework.py',
+ 'PYMODULE'),
+ ('ctypes.wintypes', 'C:\\Python314\\Lib\\ctypes\\wintypes.py', 'PYMODULE'),
+ ('ctypes._endian', 'C:\\Python314\\Lib\\ctypes\\_endian.py', 'PYMODULE'),
+ ('ctypes._layout', 'C:\\Python314\\Lib\\ctypes\\_layout.py', 'PYMODULE'),
+ ('sysconfig', 'C:\\Python314\\Lib\\sysconfig\\__init__.py', 'PYMODULE'),
+ ('_aix_support', 'C:\\Python314\\Lib\\_aix_support.py', 'PYMODULE'),
+ ('multiprocessing.pool',
+ 'C:\\Python314\\Lib\\multiprocessing\\pool.py',
+ 'PYMODULE'),
+ ('multiprocessing.dummy',
+ 'C:\\Python314\\Lib\\multiprocessing\\dummy\\__init__.py',
+ 'PYMODULE'),
+ ('multiprocessing.dummy.connection',
+ 'C:\\Python314\\Lib\\multiprocessing\\dummy\\connection.py',
+ 'PYMODULE'),
+ ('queue', 'C:\\Python314\\Lib\\queue.py', 'PYMODULE'),
+ ('multiprocessing.queues',
+ 'C:\\Python314\\Lib\\multiprocessing\\queues.py',
+ 'PYMODULE'),
+ ('multiprocessing.synchronize',
+ 'C:\\Python314\\Lib\\multiprocessing\\synchronize.py',
+ 'PYMODULE'),
+ ('multiprocessing.managers',
+ 'C:\\Python314\\Lib\\multiprocessing\\managers.py',
+ 'PYMODULE'),
+ ('multiprocessing.shared_memory',
+ 'C:\\Python314\\Lib\\multiprocessing\\shared_memory.py',
+ 'PYMODULE'),
+ ('secrets', 'C:\\Python314\\Lib\\secrets.py', 'PYMODULE'),
+ ('multiprocessing.reduction',
+ 'C:\\Python314\\Lib\\multiprocessing\\reduction.py',
+ 'PYMODULE'),
+ ('multiprocessing.process',
+ 'C:\\Python314\\Lib\\multiprocessing\\process.py',
+ 'PYMODULE'),
+ ('runpy', 'C:\\Python314\\Lib\\runpy.py', 'PYMODULE'),
+ ('pkgutil', 'C:\\Python314\\Lib\\pkgutil.py', 'PYMODULE'),
+ ('zipimport', 'C:\\Python314\\Lib\\zipimport.py', 'PYMODULE'),
+ ('multiprocessing',
+ 'C:\\Python314\\Lib\\multiprocessing\\__init__.py',
+ 'PYMODULE'),
+ ('_py_abc', 'C:\\Python314\\Lib\\_py_abc.py', 'PYMODULE'),
+ ('_py_warnings', 'C:\\Python314\\Lib\\_py_warnings.py', 'PYMODULE'),
+ ('tracemalloc', 'C:\\Python314\\Lib\\tracemalloc.py', 'PYMODULE'),
+ ('difflib', 'C:\\Python314\\Lib\\difflib.py', 'PYMODULE'),
+ ('codeop', 'C:\\Python314\\Lib\\codeop.py', 'PYMODULE'),
+ ('stringprep', 'C:\\Python314\\Lib\\stringprep.py', 'PYMODULE'),
+ ('threading', 'C:\\Python314\\Lib\\threading.py', 'PYMODULE'),
+ ('_threading_local', 'C:\\Python314\\Lib\\_threading_local.py', 'PYMODULE'),
+ ('numpy',
+ 'C:\\Python314\\Lib\\site-packages\\numpy\\__init__.py',
+ 'PYMODULE'),
+ ('numpy._core._exceptions',
+ 'C:\\Python314\\Lib\\site-packages\\numpy\\_core\\_exceptions.py',
+ 'PYMODULE'),
+ ('numpy._core._dtype_ctypes',
+ 'C:\\Python314\\Lib\\site-packages\\numpy\\_core\\_dtype_ctypes.py',
+ 'PYMODULE'),
+ ('numpy._pytesttester',
+ 'C:\\Python314\\Lib\\site-packages\\numpy\\_pytesttester.py',
+ 'PYMODULE'),
+ ('numpy.strings',
+ 'C:\\Python314\\Lib\\site-packages\\numpy\\strings\\__init__.py',
+ 'PYMODULE'),
+ ('numpy._core.strings',
+ 'C:\\Python314\\Lib\\site-packages\\numpy\\_core\\strings.py',
+ 'PYMODULE'),
+ ('numpy._core.umath',
+ 'C:\\Python314\\Lib\\site-packages\\numpy\\_core\\umath.py',
+ 'PYMODULE'),
+ ('numpy._core.overrides',
+ 'C:\\Python314\\Lib\\site-packages\\numpy\\_core\\overrides.py',
+ 'PYMODULE'),
+ ('numpy._utils._inspect',
+ 'C:\\Python314\\Lib\\site-packages\\numpy\\_utils\\_inspect.py',
+ 'PYMODULE'),
+ ('numpy._utils',
+ 'C:\\Python314\\Lib\\site-packages\\numpy\\_utils\\__init__.py',
+ 'PYMODULE'),
+ ('numpy._utils._convertions',
+ 'C:\\Python314\\Lib\\site-packages\\numpy\\_utils\\_convertions.py',
+ 'PYMODULE'),
+ ('numpy._core.multiarray',
+ 'C:\\Python314\\Lib\\site-packages\\numpy\\_core\\multiarray.py',
+ 'PYMODULE'),
+ ('numpy.core',
+ 'C:\\Python314\\Lib\\site-packages\\numpy\\core\\__init__.py',
+ 'PYMODULE'),
+ ('numpy.core._utils',
+ 'C:\\Python314\\Lib\\site-packages\\numpy\\core\\_utils.py',
+ 'PYMODULE'),
+ ('numpy.char',
+ 'C:\\Python314\\Lib\\site-packages\\numpy\\char\\__init__.py',
+ 'PYMODULE'),
+ ('numpy._core.defchararray',
+ 'C:\\Python314\\Lib\\site-packages\\numpy\\_core\\defchararray.py',
+ 'PYMODULE'),
+ ('numpy._core.numerictypes',
+ 'C:\\Python314\\Lib\\site-packages\\numpy\\_core\\numerictypes.py',
+ 'PYMODULE'),
+ ('numpy._core._type_aliases',
+ 'C:\\Python314\\Lib\\site-packages\\numpy\\_core\\_type_aliases.py',
+ 'PYMODULE'),
+ ('numpy._core._string_helpers',
+ 'C:\\Python314\\Lib\\site-packages\\numpy\\_core\\_string_helpers.py',
+ 'PYMODULE'),
+ ('numpy._core._dtype',
+ 'C:\\Python314\\Lib\\site-packages\\numpy\\_core\\_dtype.py',
+ 'PYMODULE'),
+ ('numpy._core.numeric',
+ 'C:\\Python314\\Lib\\site-packages\\numpy\\_core\\numeric.py',
+ 'PYMODULE'),
+ ('numpy._core.fromnumeric',
+ 'C:\\Python314\\Lib\\site-packages\\numpy\\_core\\fromnumeric.py',
+ 'PYMODULE'),
+ ('numpy._core._methods',
+ 'C:\\Python314\\Lib\\site-packages\\numpy\\_core\\_methods.py',
+ 'PYMODULE'),
+ ('numpy._core.arrayprint',
+ 'C:\\Python314\\Lib\\site-packages\\numpy\\_core\\arrayprint.py',
+ 'PYMODULE'),
+ ('numpy._core._asarray',
+ 'C:\\Python314\\Lib\\site-packages\\numpy\\_core\\_asarray.py',
+ 'PYMODULE'),
+ ('numpy._core._ufunc_config',
+ 'C:\\Python314\\Lib\\site-packages\\numpy\\_core\\_ufunc_config.py',
+ 'PYMODULE'),
+ ('numpy._core.shape_base',
+ 'C:\\Python314\\Lib\\site-packages\\numpy\\_core\\shape_base.py',
+ 'PYMODULE'),
+ ('numpy.rec',
+ 'C:\\Python314\\Lib\\site-packages\\numpy\\rec\\__init__.py',
+ 'PYMODULE'),
+ ('numpy._core.records',
+ 'C:\\Python314\\Lib\\site-packages\\numpy\\_core\\records.py',
+ 'PYMODULE'),
+ ('numpy.typing',
+ 'C:\\Python314\\Lib\\site-packages\\numpy\\typing\\__init__.py',
+ 'PYMODULE'),
+ ('numpy._typing._add_docstring',
+ 'C:\\Python314\\Lib\\site-packages\\numpy\\_typing\\_add_docstring.py',
+ 'PYMODULE'),
+ ('numpy._typing._array_like',
+ 'C:\\Python314\\Lib\\site-packages\\numpy\\_typing\\_array_like.py',
+ 'PYMODULE'),
+ ('numpy._typing._shape',
+ 'C:\\Python314\\Lib\\site-packages\\numpy\\_typing\\_shape.py',
+ 'PYMODULE'),
+ ('numpy._typing._nested_sequence',
+ 'C:\\Python314\\Lib\\site-packages\\numpy\\_typing\\_nested_sequence.py',
+ 'PYMODULE'),
+ ('numpy._typing._nbit_base',
+ 'C:\\Python314\\Lib\\site-packages\\numpy\\_typing\\_nbit_base.py',
+ 'PYMODULE'),
+ ('numpy._typing',
+ 'C:\\Python314\\Lib\\site-packages\\numpy\\_typing\\__init__.py',
+ 'PYMODULE'),
+ ('numpy._typing._ufunc',
+ 'C:\\Python314\\Lib\\site-packages\\numpy\\_typing\\_ufunc.py',
+ 'PYMODULE'),
+ ('numpy._typing._scalars',
+ 'C:\\Python314\\Lib\\site-packages\\numpy\\_typing\\_scalars.py',
+ 'PYMODULE'),
+ ('numpy._typing._nbit',
+ 'C:\\Python314\\Lib\\site-packages\\numpy\\_typing\\_nbit.py',
+ 'PYMODULE'),
+ ('numpy._typing._dtype_like',
+ 'C:\\Python314\\Lib\\site-packages\\numpy\\_typing\\_dtype_like.py',
+ 'PYMODULE'),
+ ('numpy._typing._char_codes',
+ 'C:\\Python314\\Lib\\site-packages\\numpy\\_typing\\_char_codes.py',
+ 'PYMODULE'),
+ ('numpy.f2py',
+ 'C:\\Python314\\Lib\\site-packages\\numpy\\f2py\\__init__.py',
+ 'PYMODULE'),
+ ('numpy.f2py.diagnose',
+ 'C:\\Python314\\Lib\\site-packages\\numpy\\f2py\\diagnose.py',
+ 'PYMODULE'),
+ ('numpy.f2py.f2py2e',
+ 'C:\\Python314\\Lib\\site-packages\\numpy\\f2py\\f2py2e.py',
+ 'PYMODULE'),
+ ('numpy.f2py.crackfortran',
+ 'C:\\Python314\\Lib\\site-packages\\numpy\\f2py\\crackfortran.py',
+ 'PYMODULE'),
+ ('platform', 'C:\\Python314\\Lib\\platform.py', 'PYMODULE'),
+ ('fileinput', 'C:\\Python314\\Lib\\fileinput.py', 'PYMODULE'),
+ ('numpy.f2py._backends',
+ 'C:\\Python314\\Lib\\site-packages\\numpy\\f2py\\_backends\\__init__.py',
+ 'PYMODULE'),
+ ('numpy.f2py._backends._distutils',
+ 'C:\\Python314\\Lib\\site-packages\\numpy\\f2py\\_backends\\_distutils.py',
+ 'PYMODULE'),
+ ('numpy.f2py._backends._backend',
+ 'C:\\Python314\\Lib\\site-packages\\numpy\\f2py\\_backends\\_backend.py',
+ 'PYMODULE'),
+ ('numpy.f2py._backends._meson',
+ 'C:\\Python314\\Lib\\site-packages\\numpy\\f2py\\_backends\\_meson.py',
+ 'PYMODULE'),
+ ('numpy.f2py.rules',
+ 'C:\\Python314\\Lib\\site-packages\\numpy\\f2py\\rules.py',
+ 'PYMODULE'),
+ ('numpy.f2py.use_rules',
+ 'C:\\Python314\\Lib\\site-packages\\numpy\\f2py\\use_rules.py',
+ 'PYMODULE'),
+ ('numpy.f2py.f90mod_rules',
+ 'C:\\Python314\\Lib\\site-packages\\numpy\\f2py\\f90mod_rules.py',
+ 'PYMODULE'),
+ ('numpy.f2py.common_rules',
+ 'C:\\Python314\\Lib\\site-packages\\numpy\\f2py\\common_rules.py',
+ 'PYMODULE'),
+ ('numpy.f2py.func2subr',
+ 'C:\\Python314\\Lib\\site-packages\\numpy\\f2py\\func2subr.py',
+ 'PYMODULE'),
+ ('numpy.f2py._isocbind',
+ 'C:\\Python314\\Lib\\site-packages\\numpy\\f2py\\_isocbind.py',
+ 'PYMODULE'),
+ ('numpy.f2py.auxfuncs',
+ 'C:\\Python314\\Lib\\site-packages\\numpy\\f2py\\auxfuncs.py',
+ 'PYMODULE'),
+ ('numpy.f2py.symbolic',
+ 'C:\\Python314\\Lib\\site-packages\\numpy\\f2py\\symbolic.py',
+ 'PYMODULE'),
+ ('numpy.f2py.cb_rules',
+ 'C:\\Python314\\Lib\\site-packages\\numpy\\f2py\\cb_rules.py',
+ 'PYMODULE'),
+ ('numpy.f2py.capi_maps',
+ 'C:\\Python314\\Lib\\site-packages\\numpy\\f2py\\capi_maps.py',
+ 'PYMODULE'),
+ ('numpy.f2py.cfuncs',
+ 'C:\\Python314\\Lib\\site-packages\\numpy\\f2py\\cfuncs.py',
+ 'PYMODULE'),
+ ('numpy.f2py.__version__',
+ 'C:\\Python314\\Lib\\site-packages\\numpy\\f2py\\__version__.py',
+ 'PYMODULE'),
+ ('numpy.matlib',
+ 'C:\\Python314\\Lib\\site-packages\\numpy\\matlib.py',
+ 'PYMODULE'),
+ ('numpy.matrixlib.defmatrix',
+ 'C:\\Python314\\Lib\\site-packages\\numpy\\matrixlib\\defmatrix.py',
+ 'PYMODULE'),
+ ('numpy.testing',
+ 'C:\\Python314\\Lib\\site-packages\\numpy\\testing\\__init__.py',
+ 'PYMODULE'),
+ ('numpy.testing._private.utils',
+ 'C:\\Python314\\Lib\\site-packages\\numpy\\testing\\_private\\utils.py',
+ 'PYMODULE'),
+ ('doctest', 'C:\\Python314\\Lib\\doctest.py', 'PYMODULE'),
+ ('pdb', 'C:\\Python314\\Lib\\pdb.py', 'PYMODULE'),
+ ('pydoc', 'C:\\Python314\\Lib\\pydoc.py', 'PYMODULE'),
+ ('webbrowser', 'C:\\Python314\\Lib\\webbrowser.py', 'PYMODULE'),
+ ('_ios_support', 'C:\\Python314\\Lib\\_ios_support.py', 'PYMODULE'),
+ ('http.server', 'C:\\Python314\\Lib\\http\\server.py', 'PYMODULE'),
+ ('socketserver', 'C:\\Python314\\Lib\\socketserver.py', 'PYMODULE'),
+ ('html', 'C:\\Python314\\Lib\\html\\__init__.py', 'PYMODULE'),
+ ('html.entities', 'C:\\Python314\\Lib\\html\\entities.py', 'PYMODULE'),
+ ('pydoc_data.topics',
+ 'C:\\Python314\\Lib\\pydoc_data\\topics.py',
+ 'PYMODULE'),
+ ('pydoc_data.module_docs',
+ 'C:\\Python314\\Lib\\pydoc_data\\module_docs.py',
+ 'PYMODULE'),
+ ('pydoc_data', 'C:\\Python314\\Lib\\pydoc_data\\__init__.py', 'PYMODULE'),
+ ('_pyrepl.pager', 'C:\\Python314\\Lib\\_pyrepl\\pager.py', 'PYMODULE'),
+ ('_pyrepl', 'C:\\Python314\\Lib\\_pyrepl\\__init__.py', 'PYMODULE'),
+ ('tty', 'C:\\Python314\\Lib\\tty.py', 'PYMODULE'),
+ ('shlex', 'C:\\Python314\\Lib\\shlex.py', 'PYMODULE'),
+ ('rlcompleter', 'C:\\Python314\\Lib\\rlcompleter.py', 'PYMODULE'),
+ ('_pyrepl.utils', 'C:\\Python314\\Lib\\_pyrepl\\utils.py', 'PYMODULE'),
+ ('_pyrepl.trace', 'C:\\Python314\\Lib\\_pyrepl\\trace.py', 'PYMODULE'),
+ ('_pyrepl.types', 'C:\\Python314\\Lib\\_pyrepl\\types.py', 'PYMODULE'),
+ ('asyncio', 'C:\\Python314\\Lib\\asyncio\\__init__.py', 'PYMODULE'),
+ ('asyncio.unix_events',
+ 'C:\\Python314\\Lib\\asyncio\\unix_events.py',
+ 'PYMODULE'),
+ ('asyncio.log', 'C:\\Python314\\Lib\\asyncio\\log.py', 'PYMODULE'),
+ ('asyncio.windows_events',
+ 'C:\\Python314\\Lib\\asyncio\\windows_events.py',
+ 'PYMODULE'),
+ ('asyncio.threads', 'C:\\Python314\\Lib\\asyncio\\threads.py', 'PYMODULE'),
+ ('asyncio.taskgroups',
+ 'C:\\Python314\\Lib\\asyncio\\taskgroups.py',
+ 'PYMODULE'),
+ ('asyncio.subprocess',
+ 'C:\\Python314\\Lib\\asyncio\\subprocess.py',
+ 'PYMODULE'),
+ ('asyncio.streams', 'C:\\Python314\\Lib\\asyncio\\streams.py', 'PYMODULE'),
+ ('asyncio.runners', 'C:\\Python314\\Lib\\asyncio\\runners.py', 'PYMODULE'),
+ ('asyncio.graph', 'C:\\Python314\\Lib\\asyncio\\graph.py', 'PYMODULE'),
+ ('asyncio.staggered',
+ 'C:\\Python314\\Lib\\asyncio\\staggered.py',
+ 'PYMODULE'),
+ ('asyncio.windows_utils',
+ 'C:\\Python314\\Lib\\asyncio\\windows_utils.py',
+ 'PYMODULE'),
+ ('asyncio.timeouts', 'C:\\Python314\\Lib\\asyncio\\timeouts.py', 'PYMODULE'),
+ ('asyncio.tasks', 'C:\\Python314\\Lib\\asyncio\\tasks.py', 'PYMODULE'),
+ ('asyncio.queues', 'C:\\Python314\\Lib\\asyncio\\queues.py', 'PYMODULE'),
+ ('asyncio.locks', 'C:\\Python314\\Lib\\asyncio\\locks.py', 'PYMODULE'),
+ ('asyncio.mixins', 'C:\\Python314\\Lib\\asyncio\\mixins.py', 'PYMODULE'),
+ ('asyncio.base_tasks',
+ 'C:\\Python314\\Lib\\asyncio\\base_tasks.py',
+ 'PYMODULE'),
+ ('asyncio.selector_events',
+ 'C:\\Python314\\Lib\\asyncio\\selector_events.py',
+ 'PYMODULE'),
+ ('asyncio.proactor_events',
+ 'C:\\Python314\\Lib\\asyncio\\proactor_events.py',
+ 'PYMODULE'),
+ ('asyncio.trsock', 'C:\\Python314\\Lib\\asyncio\\trsock.py', 'PYMODULE'),
+ ('asyncio.sslproto', 'C:\\Python314\\Lib\\asyncio\\sslproto.py', 'PYMODULE'),
+ ('asyncio.base_events',
+ 'C:\\Python314\\Lib\\asyncio\\base_events.py',
+ 'PYMODULE'),
+ ('asyncio.futures', 'C:\\Python314\\Lib\\asyncio\\futures.py', 'PYMODULE'),
+ ('asyncio.exceptions',
+ 'C:\\Python314\\Lib\\asyncio\\exceptions.py',
+ 'PYMODULE'),
+ ('asyncio.base_futures',
+ 'C:\\Python314\\Lib\\asyncio\\base_futures.py',
+ 'PYMODULE'),
+ ('asyncio.base_subprocess',
+ 'C:\\Python314\\Lib\\asyncio\\base_subprocess.py',
+ 'PYMODULE'),
+ ('asyncio.transports',
+ 'C:\\Python314\\Lib\\asyncio\\transports.py',
+ 'PYMODULE'),
+ ('asyncio.protocols',
+ 'C:\\Python314\\Lib\\asyncio\\protocols.py',
+ 'PYMODULE'),
+ ('asyncio.events', 'C:\\Python314\\Lib\\asyncio\\events.py', 'PYMODULE'),
+ ('asyncio.format_helpers',
+ 'C:\\Python314\\Lib\\asyncio\\format_helpers.py',
+ 'PYMODULE'),
+ ('asyncio.coroutines',
+ 'C:\\Python314\\Lib\\asyncio\\coroutines.py',
+ 'PYMODULE'),
+ ('asyncio.constants',
+ 'C:\\Python314\\Lib\\asyncio\\constants.py',
+ 'PYMODULE'),
+ ('glob', 'C:\\Python314\\Lib\\glob.py', 'PYMODULE'),
+ ('code', 'C:\\Python314\\Lib\\code.py', 'PYMODULE'),
+ ('bdb', 'C:\\Python314\\Lib\\bdb.py', 'PYMODULE'),
+ ('cmd', 'C:\\Python314\\Lib\\cmd.py', 'PYMODULE'),
+ ('unittest.case', 'C:\\Python314\\Lib\\unittest\\case.py', 'PYMODULE'),
+ ('unittest._log', 'C:\\Python314\\Lib\\unittest\\_log.py', 'PYMODULE'),
+ ('unittest.util', 'C:\\Python314\\Lib\\unittest\\util.py', 'PYMODULE'),
+ ('unittest.result', 'C:\\Python314\\Lib\\unittest\\result.py', 'PYMODULE'),
+ ('numpy.testing._private.extbuild',
+ 'C:\\Python314\\Lib\\site-packages\\numpy\\testing\\_private\\extbuild.py',
+ 'PYMODULE'),
+ ('numpy.testing.overrides',
+ 'C:\\Python314\\Lib\\site-packages\\numpy\\testing\\overrides.py',
+ 'PYMODULE'),
+ ('numpy.lib.recfunctions',
+ 'C:\\Python314\\Lib\\site-packages\\numpy\\lib\\recfunctions.py',
+ 'PYMODULE'),
+ ('numpy.lib._iotools',
+ 'C:\\Python314\\Lib\\site-packages\\numpy\\lib\\_iotools.py',
+ 'PYMODULE'),
+ ('numpy.ma.mrecords',
+ 'C:\\Python314\\Lib\\site-packages\\numpy\\ma\\mrecords.py',
+ 'PYMODULE'),
+ ('numpy.testing._private',
+ 'C:\\Python314\\Lib\\site-packages\\numpy\\testing\\_private\\__init__.py',
+ 'PYMODULE'),
+ ('unittest', 'C:\\Python314\\Lib\\unittest\\__init__.py', 'PYMODULE'),
+ ('unittest.async_case',
+ 'C:\\Python314\\Lib\\unittest\\async_case.py',
+ 'PYMODULE'),
+ ('unittest.signals', 'C:\\Python314\\Lib\\unittest\\signals.py', 'PYMODULE'),
+ ('unittest.main', 'C:\\Python314\\Lib\\unittest\\main.py', 'PYMODULE'),
+ ('unittest.runner', 'C:\\Python314\\Lib\\unittest\\runner.py', 'PYMODULE'),
+ ('unittest.loader', 'C:\\Python314\\Lib\\unittest\\loader.py', 'PYMODULE'),
+ ('unittest.suite', 'C:\\Python314\\Lib\\unittest\\suite.py', 'PYMODULE'),
+ ('numpy.exceptions',
+ 'C:\\Python314\\Lib\\site-packages\\numpy\\exceptions.py',
+ 'PYMODULE'),
+ ('numpy.ctypeslib',
+ 'C:\\Python314\\Lib\\site-packages\\numpy\\ctypeslib\\__init__.py',
+ 'PYMODULE'),
+ ('numpy.ctypeslib._ctypeslib',
+ 'C:\\Python314\\Lib\\site-packages\\numpy\\ctypeslib\\_ctypeslib.py',
+ 'PYMODULE'),
+ ('numpy._core._internal',
+ 'C:\\Python314\\Lib\\site-packages\\numpy\\_core\\_internal.py',
+ 'PYMODULE'),
+ ('numpy.ma',
+ 'C:\\Python314\\Lib\\site-packages\\numpy\\ma\\__init__.py',
+ 'PYMODULE'),
+ ('numpy.ma.extras',
+ 'C:\\Python314\\Lib\\site-packages\\numpy\\ma\\extras.py',
+ 'PYMODULE'),
+ ('numpy.lib.array_utils',
+ 'C:\\Python314\\Lib\\site-packages\\numpy\\lib\\array_utils.py',
+ 'PYMODULE'),
+ ('numpy.lib._array_utils_impl',
+ 'C:\\Python314\\Lib\\site-packages\\numpy\\lib\\_array_utils_impl.py',
+ 'PYMODULE'),
+ ('numpy.ma.core',
+ 'C:\\Python314\\Lib\\site-packages\\numpy\\ma\\core.py',
+ 'PYMODULE'),
+ ('numpy.polynomial',
+ 'C:\\Python314\\Lib\\site-packages\\numpy\\polynomial\\__init__.py',
+ 'PYMODULE'),
+ ('numpy.polynomial._polybase',
+ 'C:\\Python314\\Lib\\site-packages\\numpy\\polynomial\\_polybase.py',
+ 'PYMODULE'),
+ ('numpy.polynomial.polynomial',
+ 'C:\\Python314\\Lib\\site-packages\\numpy\\polynomial\\polynomial.py',
+ 'PYMODULE'),
+ ('numpy.polynomial.legendre',
+ 'C:\\Python314\\Lib\\site-packages\\numpy\\polynomial\\legendre.py',
+ 'PYMODULE'),
+ ('numpy.polynomial.laguerre',
+ 'C:\\Python314\\Lib\\site-packages\\numpy\\polynomial\\laguerre.py',
+ 'PYMODULE'),
+ ('numpy.polynomial.hermite_e',
+ 'C:\\Python314\\Lib\\site-packages\\numpy\\polynomial\\hermite_e.py',
+ 'PYMODULE'),
+ ('numpy.polynomial.hermite',
+ 'C:\\Python314\\Lib\\site-packages\\numpy\\polynomial\\hermite.py',
+ 'PYMODULE'),
+ ('numpy.polynomial.chebyshev',
+ 'C:\\Python314\\Lib\\site-packages\\numpy\\polynomial\\chebyshev.py',
+ 'PYMODULE'),
+ ('numpy.polynomial.polyutils',
+ 'C:\\Python314\\Lib\\site-packages\\numpy\\polynomial\\polyutils.py',
+ 'PYMODULE'),
+ ('numpy.random',
+ 'C:\\Python314\\Lib\\site-packages\\numpy\\random\\__init__.py',
+ 'PYMODULE'),
+ ('typing_extensions',
+ 'C:\\Python314\\Lib\\site-packages\\typing_extensions.py',
+ 'PYMODULE'),
+ ('numpy.random._pickle',
+ 'C:\\Python314\\Lib\\site-packages\\numpy\\random\\_pickle.py',
+ 'PYMODULE'),
+ ('numpy.dtypes',
+ 'C:\\Python314\\Lib\\site-packages\\numpy\\dtypes.py',
+ 'PYMODULE'),
+ ('numpy.fft',
+ 'C:\\Python314\\Lib\\site-packages\\numpy\\fft\\__init__.py',
+ 'PYMODULE'),
+ ('numpy.fft._pocketfft',
+ 'C:\\Python314\\Lib\\site-packages\\numpy\\fft\\_pocketfft.py',
+ 'PYMODULE'),
+ ('numpy.fft._helper',
+ 'C:\\Python314\\Lib\\site-packages\\numpy\\fft\\_helper.py',
+ 'PYMODULE'),
+ ('numpy.linalg',
+ 'C:\\Python314\\Lib\\site-packages\\numpy\\linalg\\__init__.py',
+ 'PYMODULE'),
+ ('numpy.linalg._linalg',
+ 'C:\\Python314\\Lib\\site-packages\\numpy\\linalg\\_linalg.py',
+ 'PYMODULE'),
+ ('numpy._array_api_info',
+ 'C:\\Python314\\Lib\\site-packages\\numpy\\_array_api_info.py',
+ 'PYMODULE'),
+ ('numpy.lib._utils_impl',
+ 'C:\\Python314\\Lib\\site-packages\\numpy\\lib\\_utils_impl.py',
+ 'PYMODULE'),
+ ('numpy.lib._ufunclike_impl',
+ 'C:\\Python314\\Lib\\site-packages\\numpy\\lib\\_ufunclike_impl.py',
+ 'PYMODULE'),
+ ('numpy.lib._type_check_impl',
+ 'C:\\Python314\\Lib\\site-packages\\numpy\\lib\\_type_check_impl.py',
+ 'PYMODULE'),
+ ('numpy._core.getlimits',
+ 'C:\\Python314\\Lib\\site-packages\\numpy\\_core\\getlimits.py',
+ 'PYMODULE'),
+ ('numpy.lib._twodim_base_impl',
+ 'C:\\Python314\\Lib\\site-packages\\numpy\\lib\\_twodim_base_impl.py',
+ 'PYMODULE'),
+ ('numpy.lib._stride_tricks_impl',
+ 'C:\\Python314\\Lib\\site-packages\\numpy\\lib\\_stride_tricks_impl.py',
+ 'PYMODULE'),
+ ('numpy.lib._shape_base_impl',
+ 'C:\\Python314\\Lib\\site-packages\\numpy\\lib\\_shape_base_impl.py',
+ 'PYMODULE'),
+ ('numpy.lib._polynomial_impl',
+ 'C:\\Python314\\Lib\\site-packages\\numpy\\lib\\_polynomial_impl.py',
+ 'PYMODULE'),
+ ('numpy.lib._npyio_impl',
+ 'C:\\Python314\\Lib\\site-packages\\numpy\\lib\\_npyio_impl.py',
+ 'PYMODULE'),
+ ('numpy.lib._format_impl',
+ 'C:\\Python314\\Lib\\site-packages\\numpy\\lib\\_format_impl.py',
+ 'PYMODULE'),
+ ('numpy.lib._datasource',
+ 'C:\\Python314\\Lib\\site-packages\\numpy\\lib\\_datasource.py',
+ 'PYMODULE'),
+ ('numpy.lib.format',
+ 'C:\\Python314\\Lib\\site-packages\\numpy\\lib\\format.py',
+ 'PYMODULE'),
+ ('numpy.lib._nanfunctions_impl',
+ 'C:\\Python314\\Lib\\site-packages\\numpy\\lib\\_nanfunctions_impl.py',
+ 'PYMODULE'),
+ ('numpy.lib._index_tricks_impl',
+ 'C:\\Python314\\Lib\\site-packages\\numpy\\lib\\_index_tricks_impl.py',
+ 'PYMODULE'),
+ ('numpy.lib._histograms_impl',
+ 'C:\\Python314\\Lib\\site-packages\\numpy\\lib\\_histograms_impl.py',
+ 'PYMODULE'),
+ ('numpy.lib._function_base_impl',
+ 'C:\\Python314\\Lib\\site-packages\\numpy\\lib\\_function_base_impl.py',
+ 'PYMODULE'),
+ ('numpy.lib._arraysetops_impl',
+ 'C:\\Python314\\Lib\\site-packages\\numpy\\lib\\_arraysetops_impl.py',
+ 'PYMODULE'),
+ ('numpy.lib._arraypad_impl',
+ 'C:\\Python314\\Lib\\site-packages\\numpy\\lib\\_arraypad_impl.py',
+ 'PYMODULE'),
+ ('numpy.lib.scimath',
+ 'C:\\Python314\\Lib\\site-packages\\numpy\\lib\\scimath.py',
+ 'PYMODULE'),
+ ('numpy.lib._scimath_impl',
+ 'C:\\Python314\\Lib\\site-packages\\numpy\\lib\\_scimath_impl.py',
+ 'PYMODULE'),
+ ('numpy.matrixlib',
+ 'C:\\Python314\\Lib\\site-packages\\numpy\\matrixlib\\__init__.py',
+ 'PYMODULE'),
+ ('numpy.lib',
+ 'C:\\Python314\\Lib\\site-packages\\numpy\\lib\\__init__.py',
+ 'PYMODULE'),
+ ('numpy.lib.stride_tricks',
+ 'C:\\Python314\\Lib\\site-packages\\numpy\\lib\\stride_tricks.py',
+ 'PYMODULE'),
+ ('numpy.lib.npyio',
+ 'C:\\Python314\\Lib\\site-packages\\numpy\\lib\\npyio.py',
+ 'PYMODULE'),
+ ('numpy.lib.mixins',
+ 'C:\\Python314\\Lib\\site-packages\\numpy\\lib\\mixins.py',
+ 'PYMODULE'),
+ ('numpy.lib.introspect',
+ 'C:\\Python314\\Lib\\site-packages\\numpy\\lib\\introspect.py',
+ 'PYMODULE'),
+ ('numpy.lib._version',
+ 'C:\\Python314\\Lib\\site-packages\\numpy\\lib\\_version.py',
+ 'PYMODULE'),
+ ('numpy.lib._arrayterator_impl',
+ 'C:\\Python314\\Lib\\site-packages\\numpy\\lib\\_arrayterator_impl.py',
+ 'PYMODULE'),
+ ('numpy._core.function_base',
+ 'C:\\Python314\\Lib\\site-packages\\numpy\\_core\\function_base.py',
+ 'PYMODULE'),
+ ('numpy._core.printoptions',
+ 'C:\\Python314\\Lib\\site-packages\\numpy\\_core\\printoptions.py',
+ 'PYMODULE'),
+ ('numpy._core.memmap',
+ 'C:\\Python314\\Lib\\site-packages\\numpy\\_core\\memmap.py',
+ 'PYMODULE'),
+ ('numpy._core',
+ 'C:\\Python314\\Lib\\site-packages\\numpy\\_core\\__init__.py',
+ 'PYMODULE'),
+ ('numpy._core._add_newdocs_scalars',
+ 'C:\\Python314\\Lib\\site-packages\\numpy\\_core\\_add_newdocs_scalars.py',
+ 'PYMODULE'),
+ ('numpy._core._add_newdocs',
+ 'C:\\Python314\\Lib\\site-packages\\numpy\\_core\\_add_newdocs.py',
+ 'PYMODULE'),
+ ('numpy._core.einsumfunc',
+ 'C:\\Python314\\Lib\\site-packages\\numpy\\_core\\einsumfunc.py',
+ 'PYMODULE'),
+ ('numpy.__config__',
+ 'C:\\Python314\\Lib\\site-packages\\numpy\\__config__.py',
+ 'PYMODULE'),
+ ('numpy._distributor_init',
+ 'C:\\Python314\\Lib\\site-packages\\numpy\\_distributor_init.py',
+ 'PYMODULE'),
+ ('numpy._globals',
+ 'C:\\Python314\\Lib\\site-packages\\numpy\\_globals.py',
+ 'PYMODULE'),
+ ('numpy._expired_attrs_2_0',
+ 'C:\\Python314\\Lib\\site-packages\\numpy\\_expired_attrs_2_0.py',
+ 'PYMODULE'),
+ ('numpy.version',
+ 'C:\\Python314\\Lib\\site-packages\\numpy\\version.py',
+ 'PYMODULE'),
+ ('openpyxl.styles',
+ 'C:\\Python314\\Lib\\site-packages\\openpyxl\\styles\\__init__.py',
+ 'PYMODULE'),
+ ('openpyxl.styles.named_styles',
+ 'C:\\Python314\\Lib\\site-packages\\openpyxl\\styles\\named_styles.py',
+ 'PYMODULE'),
+ ('openpyxl.styles.cell_style',
+ 'C:\\Python314\\Lib\\site-packages\\openpyxl\\styles\\cell_style.py',
+ 'PYMODULE'),
+ ('openpyxl.utils.indexed_list',
+ 'C:\\Python314\\Lib\\site-packages\\openpyxl\\utils\\indexed_list.py',
+ 'PYMODULE'),
+ ('openpyxl.utils',
+ 'C:\\Python314\\Lib\\site-packages\\openpyxl\\utils\\__init__.py',
+ 'PYMODULE'),
+ ('openpyxl.utils.formulas',
+ 'C:\\Python314\\Lib\\site-packages\\openpyxl\\utils\\formulas.py',
+ 'PYMODULE'),
+ ('openpyxl.formula',
+ 'C:\\Python314\\Lib\\site-packages\\openpyxl\\formula\\__init__.py',
+ 'PYMODULE'),
+ ('openpyxl.formula.tokenizer',
+ 'C:\\Python314\\Lib\\site-packages\\openpyxl\\formula\\tokenizer.py',
+ 'PYMODULE'),
+ ('openpyxl.utils.cell',
+ 'C:\\Python314\\Lib\\site-packages\\openpyxl\\utils\\cell.py',
+ 'PYMODULE'),
+ ('openpyxl.utils.exceptions',
+ 'C:\\Python314\\Lib\\site-packages\\openpyxl\\utils\\exceptions.py',
+ 'PYMODULE'),
+ ('openpyxl.descriptors.serialisable',
+ 'C:\\Python314\\Lib\\site-packages\\openpyxl\\descriptors\\serialisable.py',
+ 'PYMODULE'),
+ ('openpyxl.xml.functions',
+ 'C:\\Python314\\Lib\\site-packages\\openpyxl\\xml\\functions.py',
+ 'PYMODULE'),
+ ('openpyxl.xml',
+ 'C:\\Python314\\Lib\\site-packages\\openpyxl\\xml\\__init__.py',
+ 'PYMODULE'),
+ ('openpyxl.xml.constants',
+ 'C:\\Python314\\Lib\\site-packages\\openpyxl\\xml\\constants.py',
+ 'PYMODULE'),
+ ('et_xmlfile.xmlfile',
+ 'C:\\Python314\\Lib\\site-packages\\et_xmlfile\\xmlfile.py',
+ 'PYMODULE'),
+ ('et_xmlfile.incremental_tree',
+ 'C:\\Python314\\Lib\\site-packages\\et_xmlfile\\incremental_tree.py',
+ 'PYMODULE'),
+ ('et_xmlfile',
+ 'C:\\Python314\\Lib\\site-packages\\et_xmlfile\\__init__.py',
+ 'PYMODULE'),
+ ('xml.etree.ElementTree',
+ 'C:\\Python314\\Lib\\xml\\etree\\ElementTree.py',
+ 'PYMODULE'),
+ ('xml.etree.cElementTree',
+ 'C:\\Python314\\Lib\\xml\\etree\\cElementTree.py',
+ 'PYMODULE'),
+ ('xml.etree.ElementInclude',
+ 'C:\\Python314\\Lib\\xml\\etree\\ElementInclude.py',
+ 'PYMODULE'),
+ ('xml.etree.ElementPath',
+ 'C:\\Python314\\Lib\\xml\\etree\\ElementPath.py',
+ 'PYMODULE'),
+ ('xml.etree', 'C:\\Python314\\Lib\\xml\\etree\\__init__.py', 'PYMODULE'),
+ ('openpyxl.descriptors.namespace',
+ 'C:\\Python314\\Lib\\site-packages\\openpyxl\\descriptors\\namespace.py',
+ 'PYMODULE'),
+ ('openpyxl.descriptors.sequence',
+ 'C:\\Python314\\Lib\\site-packages\\openpyxl\\descriptors\\sequence.py',
+ 'PYMODULE'),
+ ('openpyxl.descriptors.base',
+ 'C:\\Python314\\Lib\\site-packages\\openpyxl\\descriptors\\base.py',
+ 'PYMODULE'),
+ ('openpyxl.utils.datetime',
+ 'C:\\Python314\\Lib\\site-packages\\openpyxl\\utils\\datetime.py',
+ 'PYMODULE'),
+ ('openpyxl.descriptors.excel',
+ 'C:\\Python314\\Lib\\site-packages\\openpyxl\\descriptors\\excel.py',
+ 'PYMODULE'),
+ ('openpyxl.descriptors',
+ 'C:\\Python314\\Lib\\site-packages\\openpyxl\\descriptors\\__init__.py',
+ 'PYMODULE'),
+ ('openpyxl.compat',
+ 'C:\\Python314\\Lib\\site-packages\\openpyxl\\compat\\__init__.py',
+ 'PYMODULE'),
+ ('openpyxl.compat.strings',
+ 'C:\\Python314\\Lib\\site-packages\\openpyxl\\compat\\strings.py',
+ 'PYMODULE'),
+ ('openpyxl.compat.numbers',
+ 'C:\\Python314\\Lib\\site-packages\\openpyxl\\compat\\numbers.py',
+ 'PYMODULE'),
+ ('openpyxl.styles.protection',
+ 'C:\\Python314\\Lib\\site-packages\\openpyxl\\styles\\protection.py',
+ 'PYMODULE'),
+ ('openpyxl.styles.numbers',
+ 'C:\\Python314\\Lib\\site-packages\\openpyxl\\styles\\numbers.py',
+ 'PYMODULE'),
+ ('openpyxl.styles.fonts',
+ 'C:\\Python314\\Lib\\site-packages\\openpyxl\\styles\\fonts.py',
+ 'PYMODULE'),
+ ('openpyxl.descriptors.nested',
+ 'C:\\Python314\\Lib\\site-packages\\openpyxl\\descriptors\\nested.py',
+ 'PYMODULE'),
+ ('openpyxl.styles.fills',
+ 'C:\\Python314\\Lib\\site-packages\\openpyxl\\styles\\fills.py',
+ 'PYMODULE'),
+ ('openpyxl.styles.colors',
+ 'C:\\Python314\\Lib\\site-packages\\openpyxl\\styles\\colors.py',
+ 'PYMODULE'),
+ ('openpyxl.styles.borders',
+ 'C:\\Python314\\Lib\\site-packages\\openpyxl\\styles\\borders.py',
+ 'PYMODULE'),
+ ('openpyxl.styles.alignment',
+ 'C:\\Python314\\Lib\\site-packages\\openpyxl\\styles\\alignment.py',
+ 'PYMODULE'),
+ ('openpyxl',
+ 'C:\\Python314\\Lib\\site-packages\\openpyxl\\__init__.py',
+ 'PYMODULE'),
+ ('openpyxl._constants',
+ 'C:\\Python314\\Lib\\site-packages\\openpyxl\\_constants.py',
+ 'PYMODULE'),
+ ('openpyxl.reader.excel',
+ 'C:\\Python314\\Lib\\site-packages\\openpyxl\\reader\\excel.py',
+ 'PYMODULE'),
+ ('openpyxl.reader',
+ 'C:\\Python314\\Lib\\site-packages\\openpyxl\\reader\\__init__.py',
+ 'PYMODULE'),
+ ('openpyxl.reader.drawings',
+ 'C:\\Python314\\Lib\\site-packages\\openpyxl\\reader\\drawings.py',
+ 'PYMODULE'),
+ ('openpyxl.chart.reader',
+ 'C:\\Python314\\Lib\\site-packages\\openpyxl\\chart\\reader.py',
+ 'PYMODULE'),
+ ('openpyxl.chart',
+ 'C:\\Python314\\Lib\\site-packages\\openpyxl\\chart\\__init__.py',
+ 'PYMODULE'),
+ ('openpyxl.chart.reference',
+ 'C:\\Python314\\Lib\\site-packages\\openpyxl\\chart\\reference.py',
+ 'PYMODULE'),
+ ('openpyxl.worksheet.worksheet',
+ 'C:\\Python314\\Lib\\site-packages\\openpyxl\\worksheet\\worksheet.py',
+ 'PYMODULE'),
+ ('openpyxl.worksheet',
+ 'C:\\Python314\\Lib\\site-packages\\openpyxl\\worksheet\\__init__.py',
+ 'PYMODULE'),
+ ('openpyxl.worksheet.print_settings',
+ 'C:\\Python314\\Lib\\site-packages\\openpyxl\\worksheet\\print_settings.py',
+ 'PYMODULE'),
+ ('openpyxl.worksheet.formula',
+ 'C:\\Python314\\Lib\\site-packages\\openpyxl\\worksheet\\formula.py',
+ 'PYMODULE'),
+ ('openpyxl.worksheet.scenario',
+ 'C:\\Python314\\Lib\\site-packages\\openpyxl\\worksheet\\scenario.py',
+ 'PYMODULE'),
+ ('openpyxl.worksheet.pagebreak',
+ 'C:\\Python314\\Lib\\site-packages\\openpyxl\\worksheet\\pagebreak.py',
+ 'PYMODULE'),
+ ('openpyxl.worksheet.properties',
+ 'C:\\Python314\\Lib\\site-packages\\openpyxl\\worksheet\\properties.py',
+ 'PYMODULE'),
+ ('openpyxl.worksheet.merge',
+ 'C:\\Python314\\Lib\\site-packages\\openpyxl\\worksheet\\merge.py',
+ 'PYMODULE'),
+ ('openpyxl.cell.cell',
+ 'C:\\Python314\\Lib\\site-packages\\openpyxl\\cell\\cell.py',
+ 'PYMODULE'),
+ ('openpyxl.cell.rich_text',
+ 'C:\\Python314\\Lib\\site-packages\\openpyxl\\cell\\rich_text.py',
+ 'PYMODULE'),
+ ('openpyxl.cell.text',
+ 'C:\\Python314\\Lib\\site-packages\\openpyxl\\cell\\text.py',
+ 'PYMODULE'),
+ ('openpyxl.worksheet.hyperlink',
+ 'C:\\Python314\\Lib\\site-packages\\openpyxl\\worksheet\\hyperlink.py',
+ 'PYMODULE'),
+ ('openpyxl.styles.styleable',
+ 'C:\\Python314\\Lib\\site-packages\\openpyxl\\styles\\styleable.py',
+ 'PYMODULE'),
+ ('openpyxl.styles.builtins',
+ 'C:\\Python314\\Lib\\site-packages\\openpyxl\\styles\\builtins.py',
+ 'PYMODULE'),
+ ('openpyxl.styles.proxy',
+ 'C:\\Python314\\Lib\\site-packages\\openpyxl\\styles\\proxy.py',
+ 'PYMODULE'),
+ ('openpyxl.worksheet.cell_range',
+ 'C:\\Python314\\Lib\\site-packages\\openpyxl\\worksheet\\cell_range.py',
+ 'PYMODULE'),
+ ('openpyxl.worksheet.views',
+ 'C:\\Python314\\Lib\\site-packages\\openpyxl\\worksheet\\views.py',
+ 'PYMODULE'),
+ ('openpyxl.worksheet.filters',
+ 'C:\\Python314\\Lib\\site-packages\\openpyxl\\worksheet\\filters.py',
+ 'PYMODULE'),
+ ('openpyxl.worksheet.protection',
+ 'C:\\Python314\\Lib\\site-packages\\openpyxl\\worksheet\\protection.py',
+ 'PYMODULE'),
+ ('openpyxl.utils.protection',
+ 'C:\\Python314\\Lib\\site-packages\\openpyxl\\utils\\protection.py',
+ 'PYMODULE'),
+ ('openpyxl.worksheet.dimensions',
+ 'C:\\Python314\\Lib\\site-packages\\openpyxl\\worksheet\\dimensions.py',
+ 'PYMODULE'),
+ ('openpyxl.utils.bound_dictionary',
+ 'C:\\Python314\\Lib\\site-packages\\openpyxl\\utils\\bound_dictionary.py',
+ 'PYMODULE'),
+ ('openpyxl.utils.units',
+ 'C:\\Python314\\Lib\\site-packages\\openpyxl\\utils\\units.py',
+ 'PYMODULE'),
+ ('openpyxl.worksheet.page',
+ 'C:\\Python314\\Lib\\site-packages\\openpyxl\\worksheet\\page.py',
+ 'PYMODULE'),
+ ('openpyxl.worksheet.datavalidation',
+ 'C:\\Python314\\Lib\\site-packages\\openpyxl\\worksheet\\datavalidation.py',
+ 'PYMODULE'),
+ ('openpyxl.formula.translate',
+ 'C:\\Python314\\Lib\\site-packages\\openpyxl\\formula\\translate.py',
+ 'PYMODULE'),
+ ('openpyxl.workbook.defined_name',
+ 'C:\\Python314\\Lib\\site-packages\\openpyxl\\workbook\\defined_name.py',
+ 'PYMODULE'),
+ ('openpyxl.workbook.child',
+ 'C:\\Python314\\Lib\\site-packages\\openpyxl\\workbook\\child.py',
+ 'PYMODULE'),
+ ('openpyxl.worksheet.header_footer',
+ 'C:\\Python314\\Lib\\site-packages\\openpyxl\\worksheet\\header_footer.py',
+ 'PYMODULE'),
+ ('openpyxl.utils.escape',
+ 'C:\\Python314\\Lib\\site-packages\\openpyxl\\utils\\escape.py',
+ 'PYMODULE'),
+ ('openpyxl.formatting.formatting',
+ 'C:\\Python314\\Lib\\site-packages\\openpyxl\\formatting\\formatting.py',
+ 'PYMODULE'),
+ ('openpyxl.formatting',
+ 'C:\\Python314\\Lib\\site-packages\\openpyxl\\formatting\\__init__.py',
+ 'PYMODULE'),
+ ('openpyxl.formatting.rule',
+ 'C:\\Python314\\Lib\\site-packages\\openpyxl\\formatting\\rule.py',
+ 'PYMODULE'),
+ ('openpyxl.styles.differential',
+ 'C:\\Python314\\Lib\\site-packages\\openpyxl\\styles\\differential.py',
+ 'PYMODULE'),
+ ('openpyxl.chart.series_factory',
+ 'C:\\Python314\\Lib\\site-packages\\openpyxl\\chart\\series_factory.py',
+ 'PYMODULE'),
+ ('openpyxl.chart.series',
+ 'C:\\Python314\\Lib\\site-packages\\openpyxl\\chart\\series.py',
+ 'PYMODULE'),
+ ('openpyxl.chart.trendline',
+ 'C:\\Python314\\Lib\\site-packages\\openpyxl\\chart\\trendline.py',
+ 'PYMODULE'),
+ ('openpyxl.chart.layout',
+ 'C:\\Python314\\Lib\\site-packages\\openpyxl\\chart\\layout.py',
+ 'PYMODULE'),
+ ('openpyxl.chart.text',
+ 'C:\\Python314\\Lib\\site-packages\\openpyxl\\chart\\text.py',
+ 'PYMODULE'),
+ ('openpyxl.drawing.text',
+ 'C:\\Python314\\Lib\\site-packages\\openpyxl\\drawing\\text.py',
+ 'PYMODULE'),
+ ('openpyxl.drawing',
+ 'C:\\Python314\\Lib\\site-packages\\openpyxl\\drawing\\__init__.py',
+ 'PYMODULE'),
+ ('openpyxl.drawing.drawing',
+ 'C:\\Python314\\Lib\\site-packages\\openpyxl\\drawing\\drawing.py',
+ 'PYMODULE'),
+ ('openpyxl.drawing.geometry',
+ 'C:\\Python314\\Lib\\site-packages\\openpyxl\\drawing\\geometry.py',
+ 'PYMODULE'),
+ ('openpyxl.drawing.line',
+ 'C:\\Python314\\Lib\\site-packages\\openpyxl\\drawing\\line.py',
+ 'PYMODULE'),
+ ('openpyxl.drawing.fill',
+ 'C:\\Python314\\Lib\\site-packages\\openpyxl\\drawing\\fill.py',
+ 'PYMODULE'),
+ ('openpyxl.drawing.effect',
+ 'C:\\Python314\\Lib\\site-packages\\openpyxl\\drawing\\effect.py',
+ 'PYMODULE'),
+ ('openpyxl.drawing.colors',
+ 'C:\\Python314\\Lib\\site-packages\\openpyxl\\drawing\\colors.py',
+ 'PYMODULE'),
+ ('openpyxl.chart.marker',
+ 'C:\\Python314\\Lib\\site-packages\\openpyxl\\chart\\marker.py',
+ 'PYMODULE'),
+ ('openpyxl.chart.picture',
+ 'C:\\Python314\\Lib\\site-packages\\openpyxl\\chart\\picture.py',
+ 'PYMODULE'),
+ ('openpyxl.chart.label',
+ 'C:\\Python314\\Lib\\site-packages\\openpyxl\\chart\\label.py',
+ 'PYMODULE'),
+ ('openpyxl.chart.error_bar',
+ 'C:\\Python314\\Lib\\site-packages\\openpyxl\\chart\\error_bar.py',
+ 'PYMODULE'),
+ ('openpyxl.chart.shapes',
+ 'C:\\Python314\\Lib\\site-packages\\openpyxl\\chart\\shapes.py',
+ 'PYMODULE'),
+ ('openpyxl.chart.data_source',
+ 'C:\\Python314\\Lib\\site-packages\\openpyxl\\chart\\data_source.py',
+ 'PYMODULE'),
+ ('openpyxl.chart.surface_chart',
+ 'C:\\Python314\\Lib\\site-packages\\openpyxl\\chart\\surface_chart.py',
+ 'PYMODULE'),
+ ('openpyxl.chart.axis',
+ 'C:\\Python314\\Lib\\site-packages\\openpyxl\\chart\\axis.py',
+ 'PYMODULE'),
+ ('openpyxl.chart.title',
+ 'C:\\Python314\\Lib\\site-packages\\openpyxl\\chart\\title.py',
+ 'PYMODULE'),
+ ('openpyxl.chart.descriptors',
+ 'C:\\Python314\\Lib\\site-packages\\openpyxl\\chart\\descriptors.py',
+ 'PYMODULE'),
+ ('openpyxl.chart._3d',
+ 'C:\\Python314\\Lib\\site-packages\\openpyxl\\chart\\_3d.py',
+ 'PYMODULE'),
+ ('openpyxl.chart._chart',
+ 'C:\\Python314\\Lib\\site-packages\\openpyxl\\chart\\_chart.py',
+ 'PYMODULE'),
+ ('openpyxl.chart.legend',
+ 'C:\\Python314\\Lib\\site-packages\\openpyxl\\chart\\legend.py',
+ 'PYMODULE'),
+ ('openpyxl.chart.stock_chart',
+ 'C:\\Python314\\Lib\\site-packages\\openpyxl\\chart\\stock_chart.py',
+ 'PYMODULE'),
+ ('openpyxl.chart.updown_bars',
+ 'C:\\Python314\\Lib\\site-packages\\openpyxl\\chart\\updown_bars.py',
+ 'PYMODULE'),
+ ('openpyxl.chart.scatter_chart',
+ 'C:\\Python314\\Lib\\site-packages\\openpyxl\\chart\\scatter_chart.py',
+ 'PYMODULE'),
+ ('openpyxl.chart.radar_chart',
+ 'C:\\Python314\\Lib\\site-packages\\openpyxl\\chart\\radar_chart.py',
+ 'PYMODULE'),
+ ('openpyxl.chart.pie_chart',
+ 'C:\\Python314\\Lib\\site-packages\\openpyxl\\chart\\pie_chart.py',
+ 'PYMODULE'),
+ ('openpyxl.chart.line_chart',
+ 'C:\\Python314\\Lib\\site-packages\\openpyxl\\chart\\line_chart.py',
+ 'PYMODULE'),
+ ('openpyxl.chart.bubble_chart',
+ 'C:\\Python314\\Lib\\site-packages\\openpyxl\\chart\\bubble_chart.py',
+ 'PYMODULE'),
+ ('openpyxl.chart.bar_chart',
+ 'C:\\Python314\\Lib\\site-packages\\openpyxl\\chart\\bar_chart.py',
+ 'PYMODULE'),
+ ('openpyxl.chart.area_chart',
+ 'C:\\Python314\\Lib\\site-packages\\openpyxl\\chart\\area_chart.py',
+ 'PYMODULE'),
+ ('openpyxl.chart.chartspace',
+ 'C:\\Python314\\Lib\\site-packages\\openpyxl\\chart\\chartspace.py',
+ 'PYMODULE'),
+ ('openpyxl.chart.print_settings',
+ 'C:\\Python314\\Lib\\site-packages\\openpyxl\\chart\\print_settings.py',
+ 'PYMODULE'),
+ ('openpyxl.chart.pivot',
+ 'C:\\Python314\\Lib\\site-packages\\openpyxl\\chart\\pivot.py',
+ 'PYMODULE'),
+ ('openpyxl.chart.plotarea',
+ 'C:\\Python314\\Lib\\site-packages\\openpyxl\\chart\\plotarea.py',
+ 'PYMODULE'),
+ ('openpyxl.drawing.image',
+ 'C:\\Python314\\Lib\\site-packages\\openpyxl\\drawing\\image.py',
+ 'PYMODULE'),
+ ('openpyxl.drawing.spreadsheet_drawing',
+ 'C:\\Python314\\Lib\\site-packages\\openpyxl\\drawing\\spreadsheet_drawing.py',
+ 'PYMODULE'),
+ ('openpyxl.drawing.relation',
+ 'C:\\Python314\\Lib\\site-packages\\openpyxl\\drawing\\relation.py',
+ 'PYMODULE'),
+ ('openpyxl.drawing.picture',
+ 'C:\\Python314\\Lib\\site-packages\\openpyxl\\drawing\\picture.py',
+ 'PYMODULE'),
+ ('openpyxl.drawing.properties',
+ 'C:\\Python314\\Lib\\site-packages\\openpyxl\\drawing\\properties.py',
+ 'PYMODULE'),
+ ('openpyxl.drawing.graphic',
+ 'C:\\Python314\\Lib\\site-packages\\openpyxl\\drawing\\graphic.py',
+ 'PYMODULE'),
+ ('openpyxl.drawing.connector',
+ 'C:\\Python314\\Lib\\site-packages\\openpyxl\\drawing\\connector.py',
+ 'PYMODULE'),
+ ('openpyxl.drawing.xdr',
+ 'C:\\Python314\\Lib\\site-packages\\openpyxl\\drawing\\xdr.py',
+ 'PYMODULE'),
+ ('openpyxl.worksheet.table',
+ 'C:\\Python314\\Lib\\site-packages\\openpyxl\\worksheet\\table.py',
+ 'PYMODULE'),
+ ('openpyxl.worksheet.related',
+ 'C:\\Python314\\Lib\\site-packages\\openpyxl\\worksheet\\related.py',
+ 'PYMODULE'),
+ ('openpyxl.chartsheet',
+ 'C:\\Python314\\Lib\\site-packages\\openpyxl\\chartsheet\\__init__.py',
+ 'PYMODULE'),
+ ('openpyxl.chartsheet.chartsheet',
+ 'C:\\Python314\\Lib\\site-packages\\openpyxl\\chartsheet\\chartsheet.py',
+ 'PYMODULE'),
+ ('openpyxl.chartsheet.publish',
+ 'C:\\Python314\\Lib\\site-packages\\openpyxl\\chartsheet\\publish.py',
+ 'PYMODULE'),
+ ('openpyxl.chartsheet.custom',
+ 'C:\\Python314\\Lib\\site-packages\\openpyxl\\chartsheet\\custom.py',
+ 'PYMODULE'),
+ ('openpyxl.chartsheet.views',
+ 'C:\\Python314\\Lib\\site-packages\\openpyxl\\chartsheet\\views.py',
+ 'PYMODULE'),
+ ('openpyxl.chartsheet.protection',
+ 'C:\\Python314\\Lib\\site-packages\\openpyxl\\chartsheet\\protection.py',
+ 'PYMODULE'),
+ ('openpyxl.chartsheet.properties',
+ 'C:\\Python314\\Lib\\site-packages\\openpyxl\\chartsheet\\properties.py',
+ 'PYMODULE'),
+ ('openpyxl.chartsheet.relation',
+ 'C:\\Python314\\Lib\\site-packages\\openpyxl\\chartsheet\\relation.py',
+ 'PYMODULE'),
+ ('openpyxl.worksheet.drawing',
+ 'C:\\Python314\\Lib\\site-packages\\openpyxl\\worksheet\\drawing.py',
+ 'PYMODULE'),
+ ('openpyxl.worksheet._reader',
+ 'C:\\Python314\\Lib\\site-packages\\openpyxl\\worksheet\\_reader.py',
+ 'PYMODULE'),
+ ('openpyxl.worksheet._read_only',
+ 'C:\\Python314\\Lib\\site-packages\\openpyxl\\worksheet\\_read_only.py',
+ 'PYMODULE'),
+ ('openpyxl.cell.read_only',
+ 'C:\\Python314\\Lib\\site-packages\\openpyxl\\cell\\read_only.py',
+ 'PYMODULE'),
+ ('openpyxl.packaging.relationship',
+ 'C:\\Python314\\Lib\\site-packages\\openpyxl\\packaging\\relationship.py',
+ 'PYMODULE'),
+ ('openpyxl.packaging',
+ 'C:\\Python314\\Lib\\site-packages\\openpyxl\\packaging\\__init__.py',
+ 'PYMODULE'),
+ ('openpyxl.descriptors.container',
+ 'C:\\Python314\\Lib\\site-packages\\openpyxl\\descriptors\\container.py',
+ 'PYMODULE'),
+ ('openpyxl.packaging.manifest',
+ 'C:\\Python314\\Lib\\site-packages\\openpyxl\\packaging\\manifest.py',
+ 'PYMODULE'),
+ ('openpyxl.packaging.custom',
+ 'C:\\Python314\\Lib\\site-packages\\openpyxl\\packaging\\custom.py',
+ 'PYMODULE'),
+ ('openpyxl.packaging.core',
+ 'C:\\Python314\\Lib\\site-packages\\openpyxl\\packaging\\core.py',
+ 'PYMODULE'),
+ ('openpyxl.styles.stylesheet',
+ 'C:\\Python314\\Lib\\site-packages\\openpyxl\\styles\\stylesheet.py',
+ 'PYMODULE'),
+ ('openpyxl.styles.table',
+ 'C:\\Python314\\Lib\\site-packages\\openpyxl\\styles\\table.py',
+ 'PYMODULE'),
+ ('openpyxl.reader.workbook',
+ 'C:\\Python314\\Lib\\site-packages\\openpyxl\\reader\\workbook.py',
+ 'PYMODULE'),
+ ('openpyxl.pivot.record',
+ 'C:\\Python314\\Lib\\site-packages\\openpyxl\\pivot\\record.py',
+ 'PYMODULE'),
+ ('openpyxl.pivot',
+ 'C:\\Python314\\Lib\\site-packages\\openpyxl\\pivot\\__init__.py',
+ 'PYMODULE'),
+ ('openpyxl.pivot.fields',
+ 'C:\\Python314\\Lib\\site-packages\\openpyxl\\pivot\\fields.py',
+ 'PYMODULE'),
+ ('openpyxl.pivot.cache',
+ 'C:\\Python314\\Lib\\site-packages\\openpyxl\\pivot\\cache.py',
+ 'PYMODULE'),
+ ('openpyxl.workbook.external_link.external',
+ 'C:\\Python314\\Lib\\site-packages\\openpyxl\\workbook\\external_link\\external.py',
+ 'PYMODULE'),
+ ('openpyxl.workbook.external_link',
+ 'C:\\Python314\\Lib\\site-packages\\openpyxl\\workbook\\external_link\\__init__.py',
+ 'PYMODULE'),
+ ('openpyxl.packaging.workbook',
+ 'C:\\Python314\\Lib\\site-packages\\openpyxl\\packaging\\workbook.py',
+ 'PYMODULE'),
+ ('openpyxl.workbook.web',
+ 'C:\\Python314\\Lib\\site-packages\\openpyxl\\workbook\\web.py',
+ 'PYMODULE'),
+ ('openpyxl.workbook.views',
+ 'C:\\Python314\\Lib\\site-packages\\openpyxl\\workbook\\views.py',
+ 'PYMODULE'),
+ ('openpyxl.workbook.smart_tags',
+ 'C:\\Python314\\Lib\\site-packages\\openpyxl\\workbook\\smart_tags.py',
+ 'PYMODULE'),
+ ('openpyxl.workbook.protection',
+ 'C:\\Python314\\Lib\\site-packages\\openpyxl\\workbook\\protection.py',
+ 'PYMODULE'),
+ ('openpyxl.workbook.properties',
+ 'C:\\Python314\\Lib\\site-packages\\openpyxl\\workbook\\properties.py',
+ 'PYMODULE'),
+ ('openpyxl.workbook.function_group',
+ 'C:\\Python314\\Lib\\site-packages\\openpyxl\\workbook\\function_group.py',
+ 'PYMODULE'),
+ ('openpyxl.workbook.external_reference',
+ 'C:\\Python314\\Lib\\site-packages\\openpyxl\\workbook\\external_reference.py',
+ 'PYMODULE'),
+ ('openpyxl.reader.strings',
+ 'C:\\Python314\\Lib\\site-packages\\openpyxl\\reader\\strings.py',
+ 'PYMODULE'),
+ ('openpyxl.comments.comment_sheet',
+ 'C:\\Python314\\Lib\\site-packages\\openpyxl\\comments\\comment_sheet.py',
+ 'PYMODULE'),
+ ('openpyxl.comments',
+ 'C:\\Python314\\Lib\\site-packages\\openpyxl\\comments\\__init__.py',
+ 'PYMODULE'),
+ ('openpyxl.comments.shape_writer',
+ 'C:\\Python314\\Lib\\site-packages\\openpyxl\\comments\\shape_writer.py',
+ 'PYMODULE'),
+ ('openpyxl.comments.comments',
+ 'C:\\Python314\\Lib\\site-packages\\openpyxl\\comments\\comments.py',
+ 'PYMODULE'),
+ ('openpyxl.comments.author',
+ 'C:\\Python314\\Lib\\site-packages\\openpyxl\\comments\\author.py',
+ 'PYMODULE'),
+ ('openpyxl.cell',
+ 'C:\\Python314\\Lib\\site-packages\\openpyxl\\cell\\__init__.py',
+ 'PYMODULE'),
+ ('openpyxl.pivot.table',
+ 'C:\\Python314\\Lib\\site-packages\\openpyxl\\pivot\\table.py',
+ 'PYMODULE'),
+ ('openpyxl.workbook',
+ 'C:\\Python314\\Lib\\site-packages\\openpyxl\\workbook\\__init__.py',
+ 'PYMODULE'),
+ ('openpyxl.workbook.workbook',
+ 'C:\\Python314\\Lib\\site-packages\\openpyxl\\workbook\\workbook.py',
+ 'PYMODULE'),
+ ('openpyxl.writer.excel',
+ 'C:\\Python314\\Lib\\site-packages\\openpyxl\\writer\\excel.py',
+ 'PYMODULE'),
+ ('openpyxl.writer',
+ 'C:\\Python314\\Lib\\site-packages\\openpyxl\\writer\\__init__.py',
+ 'PYMODULE'),
+ ('openpyxl.packaging.extended',
+ 'C:\\Python314\\Lib\\site-packages\\openpyxl\\packaging\\extended.py',
+ 'PYMODULE'),
+ ('openpyxl.writer.theme',
+ 'C:\\Python314\\Lib\\site-packages\\openpyxl\\writer\\theme.py',
+ 'PYMODULE'),
+ ('openpyxl.workbook._writer',
+ 'C:\\Python314\\Lib\\site-packages\\openpyxl\\workbook\\_writer.py',
+ 'PYMODULE'),
+ ('openpyxl.worksheet._writer',
+ 'C:\\Python314\\Lib\\site-packages\\openpyxl\\worksheet\\_writer.py',
+ 'PYMODULE'),
+ ('openpyxl.cell._writer',
+ 'C:\\Python314\\Lib\\site-packages\\openpyxl\\cell\\_writer.py',
+ 'PYMODULE'),
+ ('openpyxl.worksheet.copier',
+ 'C:\\Python314\\Lib\\site-packages\\openpyxl\\worksheet\\copier.py',
+ 'PYMODULE'),
+ ('openpyxl.worksheet._write_only',
+ 'C:\\Python314\\Lib\\site-packages\\openpyxl\\worksheet\\_write_only.py',
+ 'PYMODULE'),
+ ('sensor_stream_pb2_grpc',
+ 'D:\\JE-Skin\\devkit\\sensor_stream_pb2_grpc.py',
+ 'PYMODULE'),
+ ('grpc._utilities',
+ 'C:\\Python314\\Lib\\site-packages\\grpc\\_utilities.py',
+ 'PYMODULE'),
+ ('grpc._typing',
+ 'C:\\Python314\\Lib\\site-packages\\grpc\\_typing.py',
+ 'PYMODULE'),
+ ('grpc._server',
+ 'C:\\Python314\\Lib\\site-packages\\grpc\\_server.py',
+ 'PYMODULE'),
+ ('grpc._observability',
+ 'C:\\Python314\\Lib\\site-packages\\grpc\\_observability.py',
+ 'PYMODULE'),
+ ('grpc._interceptor',
+ 'C:\\Python314\\Lib\\site-packages\\grpc\\_interceptor.py',
+ 'PYMODULE'),
+ ('grpc._compression',
+ 'C:\\Python314\\Lib\\site-packages\\grpc\\_compression.py',
+ 'PYMODULE'),
+ ('grpc._cython',
+ 'C:\\Python314\\Lib\\site-packages\\grpc\\_cython\\__init__.py',
+ 'PYMODULE'),
+ ('grpc._common',
+ 'C:\\Python314\\Lib\\site-packages\\grpc\\_common.py',
+ 'PYMODULE'),
+ ('sensor_stream_pb2',
+ 'D:\\JE-Skin\\devkit\\sensor_stream_pb2.py',
+ 'PYMODULE'),
+ ('google.protobuf.internal.builder',
+ 'C:\\Python314\\Lib\\site-packages\\google\\protobuf\\internal\\builder.py',
+ 'PYMODULE'),
+ ('google.protobuf.service_reflection',
+ 'C:\\Python314\\Lib\\site-packages\\google\\protobuf\\service_reflection.py',
+ 'PYMODULE'),
+ ('google.protobuf.reflection',
+ 'C:\\Python314\\Lib\\site-packages\\google\\protobuf\\reflection.py',
+ 'PYMODULE'),
+ ('google.protobuf.message_factory',
+ 'C:\\Python314\\Lib\\site-packages\\google\\protobuf\\message_factory.py',
+ 'PYMODULE'),
+ ('google.protobuf.pyext.cpp_message',
+ 'C:\\Python314\\Lib\\site-packages\\google\\protobuf\\pyext\\cpp_message.py',
+ 'PYMODULE'),
+ ('google.protobuf.pyext',
+ 'C:\\Python314\\Lib\\site-packages\\google\\protobuf\\pyext\\__init__.py',
+ 'PYMODULE'),
+ ('google.protobuf.internal.api_implementation',
+ 'C:\\Python314\\Lib\\site-packages\\google\\protobuf\\internal\\api_implementation.py',
+ 'PYMODULE'),
+ ('google._upb', '-', 'PYMODULE'),
+ ('google', '-', 'PYMODULE'),
+ ('google.protobuf.message',
+ 'C:\\Python314\\Lib\\site-packages\\google\\protobuf\\message.py',
+ 'PYMODULE'),
+ ('google.protobuf.internal.python_message',
+ 'C:\\Python314\\Lib\\site-packages\\google\\protobuf\\internal\\python_message.py',
+ 'PYMODULE'),
+ ('google.protobuf.internal.wire_format',
+ 'C:\\Python314\\Lib\\site-packages\\google\\protobuf\\internal\\wire_format.py',
+ 'PYMODULE'),
+ ('google.protobuf.internal.well_known_types',
+ 'C:\\Python314\\Lib\\site-packages\\google\\protobuf\\internal\\well_known_types.py',
+ 'PYMODULE'),
+ ('google.protobuf.internal.field_mask',
+ 'C:\\Python314\\Lib\\site-packages\\google\\protobuf\\internal\\field_mask.py',
+ 'PYMODULE'),
+ ('google.protobuf.internal.type_checkers',
+ 'C:\\Python314\\Lib\\site-packages\\google\\protobuf\\internal\\type_checkers.py',
+ 'PYMODULE'),
+ ('google.protobuf.internal.message_listener',
+ 'C:\\Python314\\Lib\\site-packages\\google\\protobuf\\internal\\message_listener.py',
+ 'PYMODULE'),
+ ('google.protobuf.internal.extension_dict',
+ 'C:\\Python314\\Lib\\site-packages\\google\\protobuf\\internal\\extension_dict.py',
+ 'PYMODULE'),
+ ('google.protobuf.internal.encoder',
+ 'C:\\Python314\\Lib\\site-packages\\google\\protobuf\\internal\\encoder.py',
+ 'PYMODULE'),
+ ('google.protobuf.internal.decoder',
+ 'C:\\Python314\\Lib\\site-packages\\google\\protobuf\\internal\\decoder.py',
+ 'PYMODULE'),
+ ('google.protobuf.internal.containers',
+ 'C:\\Python314\\Lib\\site-packages\\google\\protobuf\\internal\\containers.py',
+ 'PYMODULE'),
+ ('google.protobuf.text_format',
+ 'C:\\Python314\\Lib\\site-packages\\google\\protobuf\\text_format.py',
+ 'PYMODULE'),
+ ('google.protobuf.unknown_fields',
+ 'C:\\Python314\\Lib\\site-packages\\google\\protobuf\\unknown_fields.py',
+ 'PYMODULE'),
+ ('google.protobuf.text_encoding',
+ 'C:\\Python314\\Lib\\site-packages\\google\\protobuf\\text_encoding.py',
+ 'PYMODULE'),
+ ('google.protobuf.internal.enum_type_wrapper',
+ 'C:\\Python314\\Lib\\site-packages\\google\\protobuf\\internal\\enum_type_wrapper.py',
+ 'PYMODULE'),
+ ('google.protobuf.internal',
+ 'C:\\Python314\\Lib\\site-packages\\google\\protobuf\\internal\\__init__.py',
+ 'PYMODULE'),
+ ('google.protobuf.internal.python_edition_defaults',
+ 'C:\\Python314\\Lib\\site-packages\\google\\protobuf\\internal\\python_edition_defaults.py',
+ 'PYMODULE'),
+ ('google.protobuf.symbol_database',
+ 'C:\\Python314\\Lib\\site-packages\\google\\protobuf\\symbol_database.py',
+ 'PYMODULE'),
+ ('google.protobuf.runtime_version',
+ 'C:\\Python314\\Lib\\site-packages\\google\\protobuf\\runtime_version.py',
+ 'PYMODULE'),
+ ('google.protobuf.descriptor_pool',
+ 'C:\\Python314\\Lib\\site-packages\\google\\protobuf\\descriptor_pool.py',
+ 'PYMODULE'),
+ ('google.protobuf.descriptor_pb2',
+ 'C:\\Python314\\Lib\\site-packages\\google\\protobuf\\descriptor_pb2.py',
+ 'PYMODULE'),
+ ('google.protobuf.descriptor_database',
+ 'C:\\Python314\\Lib\\site-packages\\google\\protobuf\\descriptor_database.py',
+ 'PYMODULE'),
+ ('google.protobuf.descriptor',
+ 'C:\\Python314\\Lib\\site-packages\\google\\protobuf\\descriptor.py',
+ 'PYMODULE'),
+ ('google.protobuf',
+ 'C:\\Python314\\Lib\\site-packages\\google\\protobuf\\__init__.py',
+ 'PYMODULE'),
+ ('grpc', 'C:\\Python314\\Lib\\site-packages\\grpc\\__init__.py', 'PYMODULE'),
+ ('grpc.aio',
+ 'C:\\Python314\\Lib\\site-packages\\grpc\\aio\\__init__.py',
+ 'PYMODULE'),
+ ('grpc.aio._typing',
+ 'C:\\Python314\\Lib\\site-packages\\grpc\\aio\\_typing.py',
+ 'PYMODULE'),
+ ('grpc.aio._server',
+ 'C:\\Python314\\Lib\\site-packages\\grpc\\aio\\_server.py',
+ 'PYMODULE'),
+ ('grpc.aio._metadata',
+ 'C:\\Python314\\Lib\\site-packages\\grpc\\aio\\_metadata.py',
+ 'PYMODULE'),
+ ('grpc.aio._interceptor',
+ 'C:\\Python314\\Lib\\site-packages\\grpc\\aio\\_interceptor.py',
+ 'PYMODULE'),
+ ('grpc.aio._utils',
+ 'C:\\Python314\\Lib\\site-packages\\grpc\\aio\\_utils.py',
+ 'PYMODULE'),
+ ('grpc.aio._channel',
+ 'C:\\Python314\\Lib\\site-packages\\grpc\\aio\\_channel.py',
+ 'PYMODULE'),
+ ('grpc.aio._call',
+ 'C:\\Python314\\Lib\\site-packages\\grpc\\aio\\_call.py',
+ 'PYMODULE'),
+ ('grpc.aio._base_server',
+ 'C:\\Python314\\Lib\\site-packages\\grpc\\aio\\_base_server.py',
+ 'PYMODULE'),
+ ('grpc.aio._base_channel',
+ 'C:\\Python314\\Lib\\site-packages\\grpc\\aio\\_base_channel.py',
+ 'PYMODULE'),
+ ('grpc.aio._base_call',
+ 'C:\\Python314\\Lib\\site-packages\\grpc\\aio\\_base_call.py',
+ 'PYMODULE'),
+ ('grpc_tools',
+ 'C:\\Python314\\Lib\\site-packages\\grpc_tools\\__init__.py',
+ 'PYMODULE'),
+ ('grpc.experimental',
+ 'C:\\Python314\\Lib\\site-packages\\grpc\\experimental\\__init__.py',
+ 'PYMODULE'),
+ ('grpc._simple_stubs',
+ 'C:\\Python314\\Lib\\site-packages\\grpc\\_simple_stubs.py',
+ 'PYMODULE'),
+ ('grpc._channel',
+ 'C:\\Python314\\Lib\\site-packages\\grpc\\_channel.py',
+ 'PYMODULE'),
+ ('grpc._auth',
+ 'C:\\Python314\\Lib\\site-packages\\grpc\\_auth.py',
+ 'PYMODULE'),
+ ('grpc._plugin_wrapping',
+ 'C:\\Python314\\Lib\\site-packages\\grpc\\_plugin_wrapping.py',
+ 'PYMODULE'),
+ ('grpc._grpcio_metadata',
+ 'C:\\Python314\\Lib\\site-packages\\grpc\\_grpcio_metadata.py',
+ 'PYMODULE'),
+ ('grpc._runtime_protos',
+ 'C:\\Python314\\Lib\\site-packages\\grpc\\_runtime_protos.py',
+ 'PYMODULE'),
+ ('grpc_tools.protoc',
+ 'C:\\Python314\\Lib\\site-packages\\grpc_tools\\protoc.py',
+ 'PYMODULE'),
+ ('pathlib', 'C:\\Python314\\Lib\\pathlib\\__init__.py', 'PYMODULE'),
+ ('pathlib._os', 'C:\\Python314\\Lib\\pathlib\\_os.py', 'PYMODULE'),
+ ('concurrent.futures',
+ 'C:\\Python314\\Lib\\concurrent\\futures\\__init__.py',
+ 'PYMODULE'),
+ ('concurrent.futures.interpreter',
+ 'C:\\Python314\\Lib\\concurrent\\futures\\interpreter.py',
+ 'PYMODULE'),
+ ('concurrent.interpreters',
+ 'C:\\Python314\\Lib\\concurrent\\interpreters\\__init__.py',
+ 'PYMODULE'),
+ ('concurrent.interpreters._queues',
+ 'C:\\Python314\\Lib\\concurrent\\interpreters\\_queues.py',
+ 'PYMODULE'),
+ ('concurrent.interpreters._crossinterp',
+ 'C:\\Python314\\Lib\\concurrent\\interpreters\\_crossinterp.py',
+ 'PYMODULE'),
+ ('concurrent.futures.thread',
+ 'C:\\Python314\\Lib\\concurrent\\futures\\thread.py',
+ 'PYMODULE'),
+ ('concurrent.futures.process',
+ 'C:\\Python314\\Lib\\concurrent\\futures\\process.py',
+ 'PYMODULE'),
+ ('concurrent.futures._base',
+ 'C:\\Python314\\Lib\\concurrent\\futures\\_base.py',
+ 'PYMODULE'),
+ ('concurrent', 'C:\\Python314\\Lib\\concurrent\\__init__.py', 'PYMODULE'),
+ ('statistics', 'C:\\Python314\\Lib\\statistics.py', 'PYMODULE'),
+ ('fractions', 'C:\\Python314\\Lib\\fractions.py', 'PYMODULE'),
+ ('signal', 'C:\\Python314\\Lib\\signal.py', 'PYMODULE'),
+ ('csv', 'C:\\Python314\\Lib\\csv.py', 'PYMODULE'),
+ ('argparse', 'C:\\Python314\\Lib\\argparse.py', 'PYMODULE'),
+ ('__future__', 'C:\\Python314\\Lib\\__future__.py', 'PYMODULE')],
+ [('python314.dll', 'C:\\Python314\\python314.dll', 'BINARY'),
+ ('numpy.libs\\libscipy_openblas64_-63c857e738469261263c764a36be9436.dll',
+ 'C:\\Python314\\Lib\\site-packages\\numpy.libs\\libscipy_openblas64_-63c857e738469261263c764a36be9436.dll',
+ 'BINARY'),
+ ('numpy.libs\\msvcp140-a4c2229bdc2a2a630acdc095b4d86008.dll',
+ 'C:\\Python314\\Lib\\site-packages\\numpy.libs\\msvcp140-a4c2229bdc2a2a630acdc095b4d86008.dll',
+ 'BINARY'),
+ ('select.pyd', 'C:\\Python314\\DLLs\\select.pyd', 'EXTENSION'),
+ ('_multiprocessing.pyd',
+ 'C:\\Python314\\DLLs\\_multiprocessing.pyd',
+ 'EXTENSION'),
+ ('_zstd.pyd', 'C:\\Python314\\DLLs\\_zstd.pyd', 'EXTENSION'),
+ ('pyexpat.pyd', 'C:\\Python314\\DLLs\\pyexpat.pyd', 'EXTENSION'),
+ ('_lzma.pyd', 'C:\\Python314\\DLLs\\_lzma.pyd', 'EXTENSION'),
+ ('_bz2.pyd', 'C:\\Python314\\DLLs\\_bz2.pyd', 'EXTENSION'),
+ ('_ssl.pyd', 'C:\\Python314\\DLLs\\_ssl.pyd', 'EXTENSION'),
+ ('_hashlib.pyd', 'C:\\Python314\\DLLs\\_hashlib.pyd', 'EXTENSION'),
+ ('unicodedata.pyd', 'C:\\Python314\\DLLs\\unicodedata.pyd', 'EXTENSION'),
+ ('_decimal.pyd', 'C:\\Python314\\DLLs\\_decimal.pyd', 'EXTENSION'),
+ ('_socket.pyd', 'C:\\Python314\\DLLs\\_socket.pyd', 'EXTENSION'),
+ ('_ctypes.pyd', 'C:\\Python314\\DLLs\\_ctypes.pyd', 'EXTENSION'),
+ ('_queue.pyd', 'C:\\Python314\\DLLs\\_queue.pyd', 'EXTENSION'),
+ ('numpy\\_core\\_multiarray_tests.cp314-win_amd64.pyd',
+ 'C:\\Python314\\Lib\\site-packages\\numpy\\_core\\_multiarray_tests.cp314-win_amd64.pyd',
+ 'EXTENSION'),
+ ('numpy\\_core\\_multiarray_umath.cp314-win_amd64.pyd',
+ 'C:\\Python314\\Lib\\site-packages\\numpy\\_core\\_multiarray_umath.cp314-win_amd64.pyd',
+ 'EXTENSION'),
+ ('_wmi.pyd', 'C:\\Python314\\DLLs\\_wmi.pyd', 'EXTENSION'),
+ ('_overlapped.pyd', 'C:\\Python314\\DLLs\\_overlapped.pyd', 'EXTENSION'),
+ ('_asyncio.pyd', 'C:\\Python314\\DLLs\\_asyncio.pyd', 'EXTENSION'),
+ ('numpy\\linalg\\_umath_linalg.cp314-win_amd64.pyd',
+ 'C:\\Python314\\Lib\\site-packages\\numpy\\linalg\\_umath_linalg.cp314-win_amd64.pyd',
+ 'EXTENSION'),
+ ('numpy\\random\\mtrand.cp314-win_amd64.pyd',
+ 'C:\\Python314\\Lib\\site-packages\\numpy\\random\\mtrand.cp314-win_amd64.pyd',
+ 'EXTENSION'),
+ ('numpy\\random\\bit_generator.cp314-win_amd64.pyd',
+ 'C:\\Python314\\Lib\\site-packages\\numpy\\random\\bit_generator.cp314-win_amd64.pyd',
+ 'EXTENSION'),
+ ('numpy\\random\\_sfc64.cp314-win_amd64.pyd',
+ 'C:\\Python314\\Lib\\site-packages\\numpy\\random\\_sfc64.cp314-win_amd64.pyd',
+ 'EXTENSION'),
+ ('numpy\\random\\_philox.cp314-win_amd64.pyd',
+ 'C:\\Python314\\Lib\\site-packages\\numpy\\random\\_philox.cp314-win_amd64.pyd',
+ 'EXTENSION'),
+ ('numpy\\random\\_pcg64.cp314-win_amd64.pyd',
+ 'C:\\Python314\\Lib\\site-packages\\numpy\\random\\_pcg64.cp314-win_amd64.pyd',
+ 'EXTENSION'),
+ ('numpy\\random\\_mt19937.cp314-win_amd64.pyd',
+ 'C:\\Python314\\Lib\\site-packages\\numpy\\random\\_mt19937.cp314-win_amd64.pyd',
+ 'EXTENSION'),
+ ('numpy\\random\\_generator.cp314-win_amd64.pyd',
+ 'C:\\Python314\\Lib\\site-packages\\numpy\\random\\_generator.cp314-win_amd64.pyd',
+ 'EXTENSION'),
+ ('numpy\\random\\_common.cp314-win_amd64.pyd',
+ 'C:\\Python314\\Lib\\site-packages\\numpy\\random\\_common.cp314-win_amd64.pyd',
+ 'EXTENSION'),
+ ('numpy\\random\\_bounded_integers.cp314-win_amd64.pyd',
+ 'C:\\Python314\\Lib\\site-packages\\numpy\\random\\_bounded_integers.cp314-win_amd64.pyd',
+ 'EXTENSION'),
+ ('numpy\\fft\\_pocketfft_umath.cp314-win_amd64.pyd',
+ 'C:\\Python314\\Lib\\site-packages\\numpy\\fft\\_pocketfft_umath.cp314-win_amd64.pyd',
+ 'EXTENSION'),
+ ('_elementtree.pyd', 'C:\\Python314\\DLLs\\_elementtree.pyd', 'EXTENSION'),
+ ('grpc\\_cython\\cygrpc.cp314-win_amd64.pyd',
+ 'C:\\Python314\\Lib\\site-packages\\grpc\\_cython\\cygrpc.cp314-win_amd64.pyd',
+ 'EXTENSION'),
+ ('google\\_upb\\_message.pyd',
+ 'C:\\Python314\\Lib\\site-packages\\google\\_upb\\_message.pyd',
+ 'EXTENSION'),
+ ('grpc_tools\\_protoc_compiler.cp314-win_amd64.pyd',
+ 'C:\\Python314\\Lib\\site-packages\\grpc_tools\\_protoc_compiler.cp314-win_amd64.pyd',
+ 'EXTENSION'),
+ ('api-ms-win-crt-locale-l1-1-0.dll',
+ 'C:\\Users\\Administrator\\miniconda3\\api-ms-win-crt-locale-l1-1-0.dll',
+ 'BINARY'),
+ ('api-ms-win-crt-convert-l1-1-0.dll',
+ 'C:\\Users\\Administrator\\miniconda3\\api-ms-win-crt-convert-l1-1-0.dll',
+ 'BINARY'),
+ ('api-ms-win-crt-filesystem-l1-1-0.dll',
+ 'C:\\Users\\Administrator\\miniconda3\\api-ms-win-crt-filesystem-l1-1-0.dll',
+ 'BINARY'),
+ ('api-ms-win-crt-heap-l1-1-0.dll',
+ 'C:\\Users\\Administrator\\miniconda3\\api-ms-win-crt-heap-l1-1-0.dll',
+ 'BINARY'),
+ ('VCRUNTIME140.dll', 'C:\\Python314\\VCRUNTIME140.dll', 'BINARY'),
+ ('api-ms-win-crt-conio-l1-1-0.dll',
+ 'C:\\Users\\Administrator\\miniconda3\\api-ms-win-crt-conio-l1-1-0.dll',
+ 'BINARY'),
+ ('api-ms-win-crt-runtime-l1-1-0.dll',
+ 'C:\\Users\\Administrator\\miniconda3\\api-ms-win-crt-runtime-l1-1-0.dll',
+ 'BINARY'),
+ ('api-ms-win-crt-stdio-l1-1-0.dll',
+ 'C:\\Users\\Administrator\\miniconda3\\api-ms-win-crt-stdio-l1-1-0.dll',
+ 'BINARY'),
+ ('api-ms-win-crt-process-l1-1-0.dll',
+ 'C:\\Users\\Administrator\\miniconda3\\api-ms-win-crt-process-l1-1-0.dll',
+ 'BINARY'),
+ ('api-ms-win-crt-environment-l1-1-0.dll',
+ 'C:\\Users\\Administrator\\miniconda3\\api-ms-win-crt-environment-l1-1-0.dll',
+ 'BINARY'),
+ ('api-ms-win-crt-math-l1-1-0.dll',
+ 'C:\\Users\\Administrator\\miniconda3\\api-ms-win-crt-math-l1-1-0.dll',
+ 'BINARY'),
+ ('api-ms-win-crt-time-l1-1-0.dll',
+ 'C:\\Users\\Administrator\\miniconda3\\api-ms-win-crt-time-l1-1-0.dll',
+ 'BINARY'),
+ ('api-ms-win-crt-string-l1-1-0.dll',
+ 'C:\\Users\\Administrator\\miniconda3\\api-ms-win-crt-string-l1-1-0.dll',
+ 'BINARY'),
+ ('api-ms-win-crt-private-l1-1-0.dll',
+ 'C:\\Users\\Administrator\\miniconda3\\api-ms-win-crt-private-l1-1-0.dll',
+ 'BINARY'),
+ ('api-ms-win-crt-utility-l1-1-0.dll',
+ 'C:\\Users\\Administrator\\miniconda3\\api-ms-win-crt-utility-l1-1-0.dll',
+ 'BINARY'),
+ ('VCRUNTIME140_1.dll', 'C:\\Python314\\VCRUNTIME140_1.dll', 'BINARY'),
+ ('libssl-3.dll', 'C:\\Python314\\DLLs\\libssl-3.dll', 'BINARY'),
+ ('libcrypto-3.dll', 'C:\\Python314\\DLLs\\libcrypto-3.dll', 'BINARY'),
+ ('libffi-8.dll', 'C:\\Python314\\DLLs\\libffi-8.dll', 'BINARY'),
+ ('python3.dll', 'C:\\Python314\\python3.dll', 'BINARY'),
+ ('ucrtbase.dll',
+ 'C:\\Users\\Administrator\\miniconda3\\ucrtbase.dll',
+ 'BINARY'),
+ ('api-ms-win-core-processenvironment-l1-1-0.dll',
+ 'C:\\Users\\Administrator\\miniconda3\\api-ms-win-core-processenvironment-l1-1-0.dll',
+ 'BINARY'),
+ ('api-ms-win-core-file-l1-2-0.dll',
+ 'C:\\Users\\Administrator\\miniconda3\\api-ms-win-core-file-l1-2-0.dll',
+ 'BINARY'),
+ ('api-ms-win-core-timezone-l1-1-0.dll',
+ 'C:\\Users\\Administrator\\miniconda3\\api-ms-win-core-timezone-l1-1-0.dll',
+ 'BINARY'),
+ ('api-ms-win-core-libraryloader-l1-1-0.dll',
+ 'C:\\Users\\Administrator\\miniconda3\\api-ms-win-core-libraryloader-l1-1-0.dll',
+ 'BINARY'),
+ ('api-ms-win-core-util-l1-1-0.dll',
+ 'C:\\Users\\Administrator\\miniconda3\\api-ms-win-core-util-l1-1-0.dll',
+ 'BINARY'),
+ ('api-ms-win-core-file-l1-1-0.dll',
+ 'C:\\Users\\Administrator\\miniconda3\\api-ms-win-core-file-l1-1-0.dll',
+ 'BINARY'),
+ ('api-ms-win-core-debug-l1-1-0.dll',
+ 'C:\\Users\\Administrator\\miniconda3\\api-ms-win-core-debug-l1-1-0.dll',
+ 'BINARY'),
+ ('api-ms-win-core-file-l2-1-0.dll',
+ 'C:\\Users\\Administrator\\miniconda3\\api-ms-win-core-file-l2-1-0.dll',
+ 'BINARY'),
+ ('api-ms-win-core-namedpipe-l1-1-0.dll',
+ 'C:\\Users\\Administrator\\miniconda3\\api-ms-win-core-namedpipe-l1-1-0.dll',
+ 'BINARY'),
+ ('api-ms-win-core-sysinfo-l1-1-0.dll',
+ 'C:\\Users\\Administrator\\miniconda3\\api-ms-win-core-sysinfo-l1-1-0.dll',
+ 'BINARY'),
+ ('api-ms-win-core-interlocked-l1-1-0.dll',
+ 'C:\\Users\\Administrator\\miniconda3\\api-ms-win-core-interlocked-l1-1-0.dll',
+ 'BINARY'),
+ ('api-ms-win-core-localization-l1-2-0.dll',
+ 'C:\\Users\\Administrator\\miniconda3\\api-ms-win-core-localization-l1-2-0.dll',
+ 'BINARY'),
+ ('api-ms-win-core-synch-l1-1-0.dll',
+ 'C:\\Users\\Administrator\\miniconda3\\api-ms-win-core-synch-l1-1-0.dll',
+ 'BINARY'),
+ ('api-ms-win-core-profile-l1-1-0.dll',
+ 'C:\\Users\\Administrator\\miniconda3\\api-ms-win-core-profile-l1-1-0.dll',
+ 'BINARY'),
+ ('api-ms-win-core-fibers-l1-1-0.dll',
+ 'C:\\Users\\Administrator\\miniconda3\\api-ms-win-core-fibers-l1-1-0.dll',
+ 'BINARY'),
+ ('api-ms-win-core-handle-l1-1-0.dll',
+ 'C:\\Users\\Administrator\\miniconda3\\api-ms-win-core-handle-l1-1-0.dll',
+ 'BINARY'),
+ ('api-ms-win-core-synch-l1-2-0.dll',
+ 'C:\\Users\\Administrator\\miniconda3\\api-ms-win-core-synch-l1-2-0.dll',
+ 'BINARY'),
+ ('api-ms-win-core-string-l1-1-0.dll',
+ 'C:\\Users\\Administrator\\miniconda3\\api-ms-win-core-string-l1-1-0.dll',
+ 'BINARY'),
+ ('api-ms-win-core-memory-l1-1-0.dll',
+ 'C:\\Users\\Administrator\\miniconda3\\api-ms-win-core-memory-l1-1-0.dll',
+ 'BINARY'),
+ ('api-ms-win-core-heap-l1-1-0.dll',
+ 'C:\\Users\\Administrator\\miniconda3\\api-ms-win-core-heap-l1-1-0.dll',
+ 'BINARY'),
+ ('api-ms-win-core-console-l1-1-0.dll',
+ 'C:\\Users\\Administrator\\miniconda3\\api-ms-win-core-console-l1-1-0.dll',
+ 'BINARY'),
+ ('api-ms-win-core-rtlsupport-l1-1-0.dll',
+ 'C:\\Users\\Administrator\\miniconda3\\api-ms-win-core-rtlsupport-l1-1-0.dll',
+ 'BINARY'),
+ ('api-ms-win-core-datetime-l1-1-0.dll',
+ 'C:\\Users\\Administrator\\miniconda3\\api-ms-win-core-datetime-l1-1-0.dll',
+ 'BINARY'),
+ ('api-ms-win-core-errorhandling-l1-1-0.dll',
+ 'C:\\Users\\Administrator\\miniconda3\\api-ms-win-core-errorhandling-l1-1-0.dll',
+ 'BINARY'),
+ ('api-ms-win-core-processthreads-l1-1-0.dll',
+ 'C:\\Users\\Administrator\\miniconda3\\api-ms-win-core-processthreads-l1-1-0.dll',
+ 'BINARY'),
+ ('api-ms-win-core-processthreads-l1-1-1.dll',
+ 'C:\\Users\\Administrator\\miniconda3\\api-ms-win-core-processthreads-l1-1-1.dll',
+ 'BINARY')],
+ [],
+ [],
+ [('sensor_stream_pb2.py', 'D:\\JE-Skin\\devkit\\sensor_stream_pb2.py', 'DATA'),
+ ('sensor_stream_pb2_grpc.py',
+ 'D:\\JE-Skin\\devkit\\sensor_stream_pb2_grpc.py',
+ 'DATA'),
+ ('grpc\\_cython\\_credentials\\roots.pem',
+ 'C:\\Python314\\Lib\\site-packages\\grpc\\_cython\\_credentials\\roots.pem',
+ 'DATA'),
+ ('grpc\\_cython\\_cygrpc\\private_key_signing\\private_key_signer_py_wrapper.h',
+ 'C:\\Python314\\Lib\\site-packages\\grpc\\_cython\\_cygrpc\\private_key_signing\\private_key_signer_py_wrapper.h',
+ 'DATA'),
+ ('grpc\\_cython\\_cygrpc\\private_key_signing\\private_key_signer_py_wrapper.cc',
+ 'C:\\Python314\\Lib\\site-packages\\grpc\\_cython\\_cygrpc\\private_key_signing\\private_key_signer_py_wrapper.cc',
+ 'DATA'),
+ ('numpy-2.4.4.dist-info\\WHEEL',
+ 'C:\\Python314\\Lib\\site-packages\\numpy-2.4.4.dist-info\\WHEEL',
+ 'DATA'),
+ ('numpy-2.4.4.dist-info\\licenses\\LICENSE.txt',
+ 'C:\\Python314\\Lib\\site-packages\\numpy-2.4.4.dist-info\\licenses\\LICENSE.txt',
+ 'DATA'),
+ ('numpy-2.4.4.dist-info\\licenses\\numpy\\random\\src\\sfc64\\LICENSE.md',
+ 'C:\\Python314\\Lib\\site-packages\\numpy-2.4.4.dist-info\\licenses\\numpy\\random\\src\\sfc64\\LICENSE.md',
+ 'DATA'),
+ ('numpy-2.4.4.dist-info\\entry_points.txt',
+ 'C:\\Python314\\Lib\\site-packages\\numpy-2.4.4.dist-info\\entry_points.txt',
+ 'DATA'),
+ ('numpy-2.4.4.dist-info\\licenses\\numpy\\ma\\LICENSE',
+ 'C:\\Python314\\Lib\\site-packages\\numpy-2.4.4.dist-info\\licenses\\numpy\\ma\\LICENSE',
+ 'DATA'),
+ ('numpy-2.4.4.dist-info\\INSTALLER',
+ 'C:\\Python314\\Lib\\site-packages\\numpy-2.4.4.dist-info\\INSTALLER',
+ 'DATA'),
+ ('numpy-2.4.4.dist-info\\DELVEWHEEL',
+ 'C:\\Python314\\Lib\\site-packages\\numpy-2.4.4.dist-info\\DELVEWHEEL',
+ 'DATA'),
+ ('numpy-2.4.4.dist-info\\licenses\\numpy\\random\\src\\pcg64\\LICENSE.md',
+ 'C:\\Python314\\Lib\\site-packages\\numpy-2.4.4.dist-info\\licenses\\numpy\\random\\src\\pcg64\\LICENSE.md',
+ 'DATA'),
+ ('numpy-2.4.4.dist-info\\licenses\\numpy\\_core\\include\\numpy\\libdivide\\LICENSE.txt',
+ 'C:\\Python314\\Lib\\site-packages\\numpy-2.4.4.dist-info\\licenses\\numpy\\_core\\include\\numpy\\libdivide\\LICENSE.txt',
+ 'DATA'),
+ ('numpy-2.4.4.dist-info\\licenses\\numpy\\_core\\src\\npysort\\x86-simd-sort\\LICENSE.md',
+ 'C:\\Python314\\Lib\\site-packages\\numpy-2.4.4.dist-info\\licenses\\numpy\\_core\\src\\npysort\\x86-simd-sort\\LICENSE.md',
+ 'DATA'),
+ ('numpy-2.4.4.dist-info\\REQUESTED',
+ 'C:\\Python314\\Lib\\site-packages\\numpy-2.4.4.dist-info\\REQUESTED',
+ 'DATA'),
+ ('numpy-2.4.4.dist-info\\licenses\\numpy\\_core\\src\\multiarray\\dragon4_LICENSE.txt',
+ 'C:\\Python314\\Lib\\site-packages\\numpy-2.4.4.dist-info\\licenses\\numpy\\_core\\src\\multiarray\\dragon4_LICENSE.txt',
+ 'DATA'),
+ ('numpy-2.4.4.dist-info\\licenses\\numpy\\_core\\src\\common\\pythoncapi-compat\\COPYING',
+ 'C:\\Python314\\Lib\\site-packages\\numpy-2.4.4.dist-info\\licenses\\numpy\\_core\\src\\common\\pythoncapi-compat\\COPYING',
+ 'DATA'),
+ ('numpy-2.4.4.dist-info\\licenses\\numpy\\random\\src\\splitmix64\\LICENSE.md',
+ 'C:\\Python314\\Lib\\site-packages\\numpy-2.4.4.dist-info\\licenses\\numpy\\random\\src\\splitmix64\\LICENSE.md',
+ 'DATA'),
+ ('numpy-2.4.4.dist-info\\licenses\\numpy\\random\\src\\distributions\\LICENSE.md',
+ 'C:\\Python314\\Lib\\site-packages\\numpy-2.4.4.dist-info\\licenses\\numpy\\random\\src\\distributions\\LICENSE.md',
+ 'DATA'),
+ ('numpy-2.4.4.dist-info\\licenses\\numpy\\_core\\src\\umath\\svml\\LICENSE',
+ 'C:\\Python314\\Lib\\site-packages\\numpy-2.4.4.dist-info\\licenses\\numpy\\_core\\src\\umath\\svml\\LICENSE',
+ 'DATA'),
+ ('numpy-2.4.4.dist-info\\licenses\\numpy\\random\\LICENSE.md',
+ 'C:\\Python314\\Lib\\site-packages\\numpy-2.4.4.dist-info\\licenses\\numpy\\random\\LICENSE.md',
+ 'DATA'),
+ ('numpy-2.4.4.dist-info\\METADATA',
+ 'C:\\Python314\\Lib\\site-packages\\numpy-2.4.4.dist-info\\METADATA',
+ 'DATA'),
+ ('numpy-2.4.4.dist-info\\licenses\\numpy\\random\\src\\mt19937\\LICENSE.md',
+ 'C:\\Python314\\Lib\\site-packages\\numpy-2.4.4.dist-info\\licenses\\numpy\\random\\src\\mt19937\\LICENSE.md',
+ 'DATA'),
+ ('numpy-2.4.4.dist-info\\licenses\\numpy\\_core\\src\\highway\\LICENSE',
+ 'C:\\Python314\\Lib\\site-packages\\numpy-2.4.4.dist-info\\licenses\\numpy\\_core\\src\\highway\\LICENSE',
+ 'DATA'),
+ ('numpy-2.4.4.dist-info\\licenses\\numpy\\random\\src\\philox\\LICENSE.md',
+ 'C:\\Python314\\Lib\\site-packages\\numpy-2.4.4.dist-info\\licenses\\numpy\\random\\src\\philox\\LICENSE.md',
+ 'DATA'),
+ ('numpy-2.4.4.dist-info\\licenses\\numpy\\fft\\pocketfft\\LICENSE.md',
+ 'C:\\Python314\\Lib\\site-packages\\numpy-2.4.4.dist-info\\licenses\\numpy\\fft\\pocketfft\\LICENSE.md',
+ 'DATA'),
+ ('numpy-2.4.4.dist-info\\licenses\\numpy\\linalg\\lapack_lite\\LICENSE.txt',
+ 'C:\\Python314\\Lib\\site-packages\\numpy-2.4.4.dist-info\\licenses\\numpy\\linalg\\lapack_lite\\LICENSE.txt',
+ 'DATA'),
+ ('numpy-2.4.4.dist-info\\RECORD',
+ 'C:\\Python314\\Lib\\site-packages\\numpy-2.4.4.dist-info\\RECORD',
+ 'DATA'),
+ ('base_library.zip',
+ 'D:\\JE-Skin\\devkit\\build\\je-skin-devkit-server\\base_library.zip',
+ 'DATA')],
+ [('re._parser', 'C:\\Python314\\Lib\\re\\_parser.py', 'PYMODULE'),
+ ('re._constants', 'C:\\Python314\\Lib\\re\\_constants.py', 'PYMODULE'),
+ ('re._compiler', 'C:\\Python314\\Lib\\re\\_compiler.py', 'PYMODULE'),
+ ('re._casefix', 'C:\\Python314\\Lib\\re\\_casefix.py', 'PYMODULE'),
+ ('re', 'C:\\Python314\\Lib\\re\\__init__.py', 'PYMODULE'),
+ ('sre_constants', 'C:\\Python314\\Lib\\sre_constants.py', 'PYMODULE'),
+ ('genericpath', 'C:\\Python314\\Lib\\genericpath.py', 'PYMODULE'),
+ ('operator', 'C:\\Python314\\Lib\\operator.py', 'PYMODULE'),
+ ('ntpath', 'C:\\Python314\\Lib\\ntpath.py', 'PYMODULE'),
+ ('abc', 'C:\\Python314\\Lib\\abc.py', 'PYMODULE'),
+ ('_collections_abc', 'C:\\Python314\\Lib\\_collections_abc.py', 'PYMODULE'),
+ ('warnings', 'C:\\Python314\\Lib\\warnings.py', 'PYMODULE'),
+ ('enum', 'C:\\Python314\\Lib\\enum.py', 'PYMODULE'),
+ ('copyreg', 'C:\\Python314\\Lib\\copyreg.py', 'PYMODULE'),
+ ('sre_parse', 'C:\\Python314\\Lib\\sre_parse.py', 'PYMODULE'),
+ ('heapq', 'C:\\Python314\\Lib\\heapq.py', 'PYMODULE'),
+ ('traceback', 'C:\\Python314\\Lib\\traceback.py', 'PYMODULE'),
+ ('linecache', 'C:\\Python314\\Lib\\linecache.py', 'PYMODULE'),
+ ('codecs', 'C:\\Python314\\Lib\\codecs.py', 'PYMODULE'),
+ ('io', 'C:\\Python314\\Lib\\io.py', 'PYMODULE'),
+ ('keyword', 'C:\\Python314\\Lib\\keyword.py', 'PYMODULE'),
+ ('stat', 'C:\\Python314\\Lib\\stat.py', 'PYMODULE'),
+ ('locale', 'C:\\Python314\\Lib\\locale.py', 'PYMODULE'),
+ ('sre_compile', 'C:\\Python314\\Lib\\sre_compile.py', 'PYMODULE'),
+ ('functools', 'C:\\Python314\\Lib\\functools.py', 'PYMODULE'),
+ ('types', 'C:\\Python314\\Lib\\types.py', 'PYMODULE'),
+ ('encodings.zlib_codec',
+ 'C:\\Python314\\Lib\\encodings\\zlib_codec.py',
+ 'PYMODULE'),
+ ('encodings.uu_codec',
+ 'C:\\Python314\\Lib\\encodings\\uu_codec.py',
+ 'PYMODULE'),
+ ('encodings.utf_8_sig',
+ 'C:\\Python314\\Lib\\encodings\\utf_8_sig.py',
+ 'PYMODULE'),
+ ('encodings.utf_8', 'C:\\Python314\\Lib\\encodings\\utf_8.py', 'PYMODULE'),
+ ('encodings.utf_7', 'C:\\Python314\\Lib\\encodings\\utf_7.py', 'PYMODULE'),
+ ('encodings.utf_32_le',
+ 'C:\\Python314\\Lib\\encodings\\utf_32_le.py',
+ 'PYMODULE'),
+ ('encodings.utf_32_be',
+ 'C:\\Python314\\Lib\\encodings\\utf_32_be.py',
+ 'PYMODULE'),
+ ('encodings.utf_32', 'C:\\Python314\\Lib\\encodings\\utf_32.py', 'PYMODULE'),
+ ('encodings.utf_16_le',
+ 'C:\\Python314\\Lib\\encodings\\utf_16_le.py',
+ 'PYMODULE'),
+ ('encodings.utf_16_be',
+ 'C:\\Python314\\Lib\\encodings\\utf_16_be.py',
+ 'PYMODULE'),
+ ('encodings.utf_16', 'C:\\Python314\\Lib\\encodings\\utf_16.py', 'PYMODULE'),
+ ('encodings.unicode_escape',
+ 'C:\\Python314\\Lib\\encodings\\unicode_escape.py',
+ 'PYMODULE'),
+ ('encodings.undefined',
+ 'C:\\Python314\\Lib\\encodings\\undefined.py',
+ 'PYMODULE'),
+ ('encodings.tis_620',
+ 'C:\\Python314\\Lib\\encodings\\tis_620.py',
+ 'PYMODULE'),
+ ('encodings.shift_jisx0213',
+ 'C:\\Python314\\Lib\\encodings\\shift_jisx0213.py',
+ 'PYMODULE'),
+ ('encodings.shift_jis_2004',
+ 'C:\\Python314\\Lib\\encodings\\shift_jis_2004.py',
+ 'PYMODULE'),
+ ('encodings.shift_jis',
+ 'C:\\Python314\\Lib\\encodings\\shift_jis.py',
+ 'PYMODULE'),
+ ('encodings.rot_13', 'C:\\Python314\\Lib\\encodings\\rot_13.py', 'PYMODULE'),
+ ('encodings.raw_unicode_escape',
+ 'C:\\Python314\\Lib\\encodings\\raw_unicode_escape.py',
+ 'PYMODULE'),
+ ('encodings.quopri_codec',
+ 'C:\\Python314\\Lib\\encodings\\quopri_codec.py',
+ 'PYMODULE'),
+ ('encodings.punycode',
+ 'C:\\Python314\\Lib\\encodings\\punycode.py',
+ 'PYMODULE'),
+ ('encodings.ptcp154',
+ 'C:\\Python314\\Lib\\encodings\\ptcp154.py',
+ 'PYMODULE'),
+ ('encodings.palmos', 'C:\\Python314\\Lib\\encodings\\palmos.py', 'PYMODULE'),
+ ('encodings.oem', 'C:\\Python314\\Lib\\encodings\\oem.py', 'PYMODULE'),
+ ('encodings.mbcs', 'C:\\Python314\\Lib\\encodings\\mbcs.py', 'PYMODULE'),
+ ('encodings.mac_turkish',
+ 'C:\\Python314\\Lib\\encodings\\mac_turkish.py',
+ 'PYMODULE'),
+ ('encodings.mac_romanian',
+ 'C:\\Python314\\Lib\\encodings\\mac_romanian.py',
+ 'PYMODULE'),
+ ('encodings.mac_roman',
+ 'C:\\Python314\\Lib\\encodings\\mac_roman.py',
+ 'PYMODULE'),
+ ('encodings.mac_latin2',
+ 'C:\\Python314\\Lib\\encodings\\mac_latin2.py',
+ 'PYMODULE'),
+ ('encodings.mac_iceland',
+ 'C:\\Python314\\Lib\\encodings\\mac_iceland.py',
+ 'PYMODULE'),
+ ('encodings.mac_greek',
+ 'C:\\Python314\\Lib\\encodings\\mac_greek.py',
+ 'PYMODULE'),
+ ('encodings.mac_farsi',
+ 'C:\\Python314\\Lib\\encodings\\mac_farsi.py',
+ 'PYMODULE'),
+ ('encodings.mac_cyrillic',
+ 'C:\\Python314\\Lib\\encodings\\mac_cyrillic.py',
+ 'PYMODULE'),
+ ('encodings.mac_croatian',
+ 'C:\\Python314\\Lib\\encodings\\mac_croatian.py',
+ 'PYMODULE'),
+ ('encodings.mac_arabic',
+ 'C:\\Python314\\Lib\\encodings\\mac_arabic.py',
+ 'PYMODULE'),
+ ('encodings.latin_1',
+ 'C:\\Python314\\Lib\\encodings\\latin_1.py',
+ 'PYMODULE'),
+ ('encodings.kz1048', 'C:\\Python314\\Lib\\encodings\\kz1048.py', 'PYMODULE'),
+ ('encodings.koi8_u', 'C:\\Python314\\Lib\\encodings\\koi8_u.py', 'PYMODULE'),
+ ('encodings.koi8_t', 'C:\\Python314\\Lib\\encodings\\koi8_t.py', 'PYMODULE'),
+ ('encodings.koi8_r', 'C:\\Python314\\Lib\\encodings\\koi8_r.py', 'PYMODULE'),
+ ('encodings.johab', 'C:\\Python314\\Lib\\encodings\\johab.py', 'PYMODULE'),
+ ('encodings.iso8859_9',
+ 'C:\\Python314\\Lib\\encodings\\iso8859_9.py',
+ 'PYMODULE'),
+ ('encodings.iso8859_8',
+ 'C:\\Python314\\Lib\\encodings\\iso8859_8.py',
+ 'PYMODULE'),
+ ('encodings.iso8859_7',
+ 'C:\\Python314\\Lib\\encodings\\iso8859_7.py',
+ 'PYMODULE'),
+ ('encodings.iso8859_6',
+ 'C:\\Python314\\Lib\\encodings\\iso8859_6.py',
+ 'PYMODULE'),
+ ('encodings.iso8859_5',
+ 'C:\\Python314\\Lib\\encodings\\iso8859_5.py',
+ 'PYMODULE'),
+ ('encodings.iso8859_4',
+ 'C:\\Python314\\Lib\\encodings\\iso8859_4.py',
+ 'PYMODULE'),
+ ('encodings.iso8859_3',
+ 'C:\\Python314\\Lib\\encodings\\iso8859_3.py',
+ 'PYMODULE'),
+ ('encodings.iso8859_2',
+ 'C:\\Python314\\Lib\\encodings\\iso8859_2.py',
+ 'PYMODULE'),
+ ('encodings.iso8859_16',
+ 'C:\\Python314\\Lib\\encodings\\iso8859_16.py',
+ 'PYMODULE'),
+ ('encodings.iso8859_15',
+ 'C:\\Python314\\Lib\\encodings\\iso8859_15.py',
+ 'PYMODULE'),
+ ('encodings.iso8859_14',
+ 'C:\\Python314\\Lib\\encodings\\iso8859_14.py',
+ 'PYMODULE'),
+ ('encodings.iso8859_13',
+ 'C:\\Python314\\Lib\\encodings\\iso8859_13.py',
+ 'PYMODULE'),
+ ('encodings.iso8859_11',
+ 'C:\\Python314\\Lib\\encodings\\iso8859_11.py',
+ 'PYMODULE'),
+ ('encodings.iso8859_10',
+ 'C:\\Python314\\Lib\\encodings\\iso8859_10.py',
+ 'PYMODULE'),
+ ('encodings.iso8859_1',
+ 'C:\\Python314\\Lib\\encodings\\iso8859_1.py',
+ 'PYMODULE'),
+ ('encodings.iso2022_kr',
+ 'C:\\Python314\\Lib\\encodings\\iso2022_kr.py',
+ 'PYMODULE'),
+ ('encodings.iso2022_jp_ext',
+ 'C:\\Python314\\Lib\\encodings\\iso2022_jp_ext.py',
+ 'PYMODULE'),
+ ('encodings.iso2022_jp_3',
+ 'C:\\Python314\\Lib\\encodings\\iso2022_jp_3.py',
+ 'PYMODULE'),
+ ('encodings.iso2022_jp_2004',
+ 'C:\\Python314\\Lib\\encodings\\iso2022_jp_2004.py',
+ 'PYMODULE'),
+ ('encodings.iso2022_jp_2',
+ 'C:\\Python314\\Lib\\encodings\\iso2022_jp_2.py',
+ 'PYMODULE'),
+ ('encodings.iso2022_jp_1',
+ 'C:\\Python314\\Lib\\encodings\\iso2022_jp_1.py',
+ 'PYMODULE'),
+ ('encodings.iso2022_jp',
+ 'C:\\Python314\\Lib\\encodings\\iso2022_jp.py',
+ 'PYMODULE'),
+ ('encodings.idna', 'C:\\Python314\\Lib\\encodings\\idna.py', 'PYMODULE'),
+ ('encodings.hz', 'C:\\Python314\\Lib\\encodings\\hz.py', 'PYMODULE'),
+ ('encodings.hp_roman8',
+ 'C:\\Python314\\Lib\\encodings\\hp_roman8.py',
+ 'PYMODULE'),
+ ('encodings.hex_codec',
+ 'C:\\Python314\\Lib\\encodings\\hex_codec.py',
+ 'PYMODULE'),
+ ('encodings.gbk', 'C:\\Python314\\Lib\\encodings\\gbk.py', 'PYMODULE'),
+ ('encodings.gb2312', 'C:\\Python314\\Lib\\encodings\\gb2312.py', 'PYMODULE'),
+ ('encodings.gb18030',
+ 'C:\\Python314\\Lib\\encodings\\gb18030.py',
+ 'PYMODULE'),
+ ('encodings.euc_kr', 'C:\\Python314\\Lib\\encodings\\euc_kr.py', 'PYMODULE'),
+ ('encodings.euc_jp', 'C:\\Python314\\Lib\\encodings\\euc_jp.py', 'PYMODULE'),
+ ('encodings.euc_jisx0213',
+ 'C:\\Python314\\Lib\\encodings\\euc_jisx0213.py',
+ 'PYMODULE'),
+ ('encodings.euc_jis_2004',
+ 'C:\\Python314\\Lib\\encodings\\euc_jis_2004.py',
+ 'PYMODULE'),
+ ('encodings.cp950', 'C:\\Python314\\Lib\\encodings\\cp950.py', 'PYMODULE'),
+ ('encodings.cp949', 'C:\\Python314\\Lib\\encodings\\cp949.py', 'PYMODULE'),
+ ('encodings.cp932', 'C:\\Python314\\Lib\\encodings\\cp932.py', 'PYMODULE'),
+ ('encodings.cp875', 'C:\\Python314\\Lib\\encodings\\cp875.py', 'PYMODULE'),
+ ('encodings.cp874', 'C:\\Python314\\Lib\\encodings\\cp874.py', 'PYMODULE'),
+ ('encodings.cp869', 'C:\\Python314\\Lib\\encodings\\cp869.py', 'PYMODULE'),
+ ('encodings.cp866', 'C:\\Python314\\Lib\\encodings\\cp866.py', 'PYMODULE'),
+ ('encodings.cp865', 'C:\\Python314\\Lib\\encodings\\cp865.py', 'PYMODULE'),
+ ('encodings.cp864', 'C:\\Python314\\Lib\\encodings\\cp864.py', 'PYMODULE'),
+ ('encodings.cp863', 'C:\\Python314\\Lib\\encodings\\cp863.py', 'PYMODULE'),
+ ('encodings.cp862', 'C:\\Python314\\Lib\\encodings\\cp862.py', 'PYMODULE'),
+ ('encodings.cp861', 'C:\\Python314\\Lib\\encodings\\cp861.py', 'PYMODULE'),
+ ('encodings.cp860', 'C:\\Python314\\Lib\\encodings\\cp860.py', 'PYMODULE'),
+ ('encodings.cp858', 'C:\\Python314\\Lib\\encodings\\cp858.py', 'PYMODULE'),
+ ('encodings.cp857', 'C:\\Python314\\Lib\\encodings\\cp857.py', 'PYMODULE'),
+ ('encodings.cp856', 'C:\\Python314\\Lib\\encodings\\cp856.py', 'PYMODULE'),
+ ('encodings.cp855', 'C:\\Python314\\Lib\\encodings\\cp855.py', 'PYMODULE'),
+ ('encodings.cp852', 'C:\\Python314\\Lib\\encodings\\cp852.py', 'PYMODULE'),
+ ('encodings.cp850', 'C:\\Python314\\Lib\\encodings\\cp850.py', 'PYMODULE'),
+ ('encodings.cp775', 'C:\\Python314\\Lib\\encodings\\cp775.py', 'PYMODULE'),
+ ('encodings.cp737', 'C:\\Python314\\Lib\\encodings\\cp737.py', 'PYMODULE'),
+ ('encodings.cp720', 'C:\\Python314\\Lib\\encodings\\cp720.py', 'PYMODULE'),
+ ('encodings.cp500', 'C:\\Python314\\Lib\\encodings\\cp500.py', 'PYMODULE'),
+ ('encodings.cp437', 'C:\\Python314\\Lib\\encodings\\cp437.py', 'PYMODULE'),
+ ('encodings.cp424', 'C:\\Python314\\Lib\\encodings\\cp424.py', 'PYMODULE'),
+ ('encodings.cp273', 'C:\\Python314\\Lib\\encodings\\cp273.py', 'PYMODULE'),
+ ('encodings.cp1258', 'C:\\Python314\\Lib\\encodings\\cp1258.py', 'PYMODULE'),
+ ('encodings.cp1257', 'C:\\Python314\\Lib\\encodings\\cp1257.py', 'PYMODULE'),
+ ('encodings.cp1256', 'C:\\Python314\\Lib\\encodings\\cp1256.py', 'PYMODULE'),
+ ('encodings.cp1255', 'C:\\Python314\\Lib\\encodings\\cp1255.py', 'PYMODULE'),
+ ('encodings.cp1254', 'C:\\Python314\\Lib\\encodings\\cp1254.py', 'PYMODULE'),
+ ('encodings.cp1253', 'C:\\Python314\\Lib\\encodings\\cp1253.py', 'PYMODULE'),
+ ('encodings.cp1252', 'C:\\Python314\\Lib\\encodings\\cp1252.py', 'PYMODULE'),
+ ('encodings.cp1251', 'C:\\Python314\\Lib\\encodings\\cp1251.py', 'PYMODULE'),
+ ('encodings.cp1250', 'C:\\Python314\\Lib\\encodings\\cp1250.py', 'PYMODULE'),
+ ('encodings.cp1140', 'C:\\Python314\\Lib\\encodings\\cp1140.py', 'PYMODULE'),
+ ('encodings.cp1125', 'C:\\Python314\\Lib\\encodings\\cp1125.py', 'PYMODULE'),
+ ('encodings.cp1026', 'C:\\Python314\\Lib\\encodings\\cp1026.py', 'PYMODULE'),
+ ('encodings.cp1006', 'C:\\Python314\\Lib\\encodings\\cp1006.py', 'PYMODULE'),
+ ('encodings.cp037', 'C:\\Python314\\Lib\\encodings\\cp037.py', 'PYMODULE'),
+ ('encodings.charmap',
+ 'C:\\Python314\\Lib\\encodings\\charmap.py',
+ 'PYMODULE'),
+ ('encodings.bz2_codec',
+ 'C:\\Python314\\Lib\\encodings\\bz2_codec.py',
+ 'PYMODULE'),
+ ('encodings.big5hkscs',
+ 'C:\\Python314\\Lib\\encodings\\big5hkscs.py',
+ 'PYMODULE'),
+ ('encodings.big5', 'C:\\Python314\\Lib\\encodings\\big5.py', 'PYMODULE'),
+ ('encodings.base64_codec',
+ 'C:\\Python314\\Lib\\encodings\\base64_codec.py',
+ 'PYMODULE'),
+ ('encodings.ascii', 'C:\\Python314\\Lib\\encodings\\ascii.py', 'PYMODULE'),
+ ('encodings.aliases',
+ 'C:\\Python314\\Lib\\encodings\\aliases.py',
+ 'PYMODULE'),
+ ('encodings._win_cp_codecs',
+ 'C:\\Python314\\Lib\\encodings\\_win_cp_codecs.py',
+ 'PYMODULE'),
+ ('encodings', 'C:\\Python314\\Lib\\encodings\\__init__.py', 'PYMODULE'),
+ ('posixpath', 'C:\\Python314\\Lib\\posixpath.py', 'PYMODULE'),
+ ('weakref', 'C:\\Python314\\Lib\\weakref.py', 'PYMODULE'),
+ ('_weakrefset', 'C:\\Python314\\Lib\\_weakrefset.py', 'PYMODULE'),
+ ('reprlib', 'C:\\Python314\\Lib\\reprlib.py', 'PYMODULE'),
+ ('collections', 'C:\\Python314\\Lib\\collections\\__init__.py', 'PYMODULE'),
+ ('os', 'C:\\Python314\\Lib\\os.py', 'PYMODULE')])
diff --git a/devkit/build/je-skin-devkit-server/EXE-00.toc b/devkit/build/je-skin-devkit-server/EXE-00.toc
new file mode 100644
index 0000000..5d6a722
--- /dev/null
+++ b/devkit/build/je-skin-devkit-server/EXE-00.toc
@@ -0,0 +1,363 @@
+('D:\\JE-Skin\\devkit\\dist\\je-skin-devkit-server.exe',
+ True,
+ False,
+ False,
+ 'C:\\Python314\\Lib\\site-packages\\PyInstaller\\bootloader\\images\\icon-console.ico',
+ None,
+ False,
+ False,
+ b'\n\n \n \n \n \n \n \n \n '
+ b'\n <'
+ b'application>\n \n \n '
+ b' \n \n \n \n <'
+ b'/compatibility>\n '
+ b'\n \n true\n \n \n \n \n \n \n \n',
+ True,
+ False,
+ None,
+ None,
+ None,
+ 'D:\\JE-Skin\\devkit\\build\\je-skin-devkit-server\\je-skin-devkit-server.pkg',
+ [('pyi-contents-directory _internal', '', 'OPTION'),
+ ('PYZ-00.pyz',
+ 'D:\\JE-Skin\\devkit\\build\\je-skin-devkit-server\\PYZ-00.pyz',
+ 'PYZ'),
+ ('struct',
+ 'D:\\JE-Skin\\devkit\\build\\je-skin-devkit-server\\localpycs\\struct.pyc',
+ 'PYMODULE'),
+ ('pyimod01_archive',
+ 'D:\\JE-Skin\\devkit\\build\\je-skin-devkit-server\\localpycs\\pyimod01_archive.pyc',
+ 'PYMODULE'),
+ ('pyimod02_importers',
+ 'D:\\JE-Skin\\devkit\\build\\je-skin-devkit-server\\localpycs\\pyimod02_importers.pyc',
+ 'PYMODULE'),
+ ('pyimod03_ctypes',
+ 'D:\\JE-Skin\\devkit\\build\\je-skin-devkit-server\\localpycs\\pyimod03_ctypes.pyc',
+ 'PYMODULE'),
+ ('pyimod04_pywin32',
+ 'D:\\JE-Skin\\devkit\\build\\je-skin-devkit-server\\localpycs\\pyimod04_pywin32.pyc',
+ 'PYMODULE'),
+ ('pyiboot01_bootstrap',
+ 'C:\\Python314\\Lib\\site-packages\\PyInstaller\\loader\\pyiboot01_bootstrap.py',
+ 'PYSOURCE'),
+ ('pyi_rth_inspect',
+ 'C:\\Python314\\Lib\\site-packages\\PyInstaller\\hooks\\rthooks\\pyi_rth_inspect.py',
+ 'PYSOURCE'),
+ ('pyi_rth_pkgutil',
+ 'C:\\Python314\\Lib\\site-packages\\PyInstaller\\hooks\\rthooks\\pyi_rth_pkgutil.py',
+ 'PYSOURCE'),
+ ('pyi_rth_multiprocessing',
+ 'C:\\Python314\\Lib\\site-packages\\PyInstaller\\hooks\\rthooks\\pyi_rth_multiprocessing.py',
+ 'PYSOURCE'),
+ ('sensor_server', 'D:\\JE-Skin\\devkit\\sensor_server.py', 'PYSOURCE'),
+ ('python314.dll', 'C:\\Python314\\python314.dll', 'BINARY'),
+ ('numpy.libs\\libscipy_openblas64_-63c857e738469261263c764a36be9436.dll',
+ 'C:\\Python314\\Lib\\site-packages\\numpy.libs\\libscipy_openblas64_-63c857e738469261263c764a36be9436.dll',
+ 'BINARY'),
+ ('numpy.libs\\msvcp140-a4c2229bdc2a2a630acdc095b4d86008.dll',
+ 'C:\\Python314\\Lib\\site-packages\\numpy.libs\\msvcp140-a4c2229bdc2a2a630acdc095b4d86008.dll',
+ 'BINARY'),
+ ('select.pyd', 'C:\\Python314\\DLLs\\select.pyd', 'EXTENSION'),
+ ('_multiprocessing.pyd',
+ 'C:\\Python314\\DLLs\\_multiprocessing.pyd',
+ 'EXTENSION'),
+ ('_zstd.pyd', 'C:\\Python314\\DLLs\\_zstd.pyd', 'EXTENSION'),
+ ('pyexpat.pyd', 'C:\\Python314\\DLLs\\pyexpat.pyd', 'EXTENSION'),
+ ('_lzma.pyd', 'C:\\Python314\\DLLs\\_lzma.pyd', 'EXTENSION'),
+ ('_bz2.pyd', 'C:\\Python314\\DLLs\\_bz2.pyd', 'EXTENSION'),
+ ('_ssl.pyd', 'C:\\Python314\\DLLs\\_ssl.pyd', 'EXTENSION'),
+ ('_hashlib.pyd', 'C:\\Python314\\DLLs\\_hashlib.pyd', 'EXTENSION'),
+ ('unicodedata.pyd', 'C:\\Python314\\DLLs\\unicodedata.pyd', 'EXTENSION'),
+ ('_decimal.pyd', 'C:\\Python314\\DLLs\\_decimal.pyd', 'EXTENSION'),
+ ('_socket.pyd', 'C:\\Python314\\DLLs\\_socket.pyd', 'EXTENSION'),
+ ('_ctypes.pyd', 'C:\\Python314\\DLLs\\_ctypes.pyd', 'EXTENSION'),
+ ('_queue.pyd', 'C:\\Python314\\DLLs\\_queue.pyd', 'EXTENSION'),
+ ('numpy\\_core\\_multiarray_tests.cp314-win_amd64.pyd',
+ 'C:\\Python314\\Lib\\site-packages\\numpy\\_core\\_multiarray_tests.cp314-win_amd64.pyd',
+ 'EXTENSION'),
+ ('numpy\\_core\\_multiarray_umath.cp314-win_amd64.pyd',
+ 'C:\\Python314\\Lib\\site-packages\\numpy\\_core\\_multiarray_umath.cp314-win_amd64.pyd',
+ 'EXTENSION'),
+ ('_wmi.pyd', 'C:\\Python314\\DLLs\\_wmi.pyd', 'EXTENSION'),
+ ('_overlapped.pyd', 'C:\\Python314\\DLLs\\_overlapped.pyd', 'EXTENSION'),
+ ('_asyncio.pyd', 'C:\\Python314\\DLLs\\_asyncio.pyd', 'EXTENSION'),
+ ('numpy\\linalg\\_umath_linalg.cp314-win_amd64.pyd',
+ 'C:\\Python314\\Lib\\site-packages\\numpy\\linalg\\_umath_linalg.cp314-win_amd64.pyd',
+ 'EXTENSION'),
+ ('numpy\\random\\mtrand.cp314-win_amd64.pyd',
+ 'C:\\Python314\\Lib\\site-packages\\numpy\\random\\mtrand.cp314-win_amd64.pyd',
+ 'EXTENSION'),
+ ('numpy\\random\\bit_generator.cp314-win_amd64.pyd',
+ 'C:\\Python314\\Lib\\site-packages\\numpy\\random\\bit_generator.cp314-win_amd64.pyd',
+ 'EXTENSION'),
+ ('numpy\\random\\_sfc64.cp314-win_amd64.pyd',
+ 'C:\\Python314\\Lib\\site-packages\\numpy\\random\\_sfc64.cp314-win_amd64.pyd',
+ 'EXTENSION'),
+ ('numpy\\random\\_philox.cp314-win_amd64.pyd',
+ 'C:\\Python314\\Lib\\site-packages\\numpy\\random\\_philox.cp314-win_amd64.pyd',
+ 'EXTENSION'),
+ ('numpy\\random\\_pcg64.cp314-win_amd64.pyd',
+ 'C:\\Python314\\Lib\\site-packages\\numpy\\random\\_pcg64.cp314-win_amd64.pyd',
+ 'EXTENSION'),
+ ('numpy\\random\\_mt19937.cp314-win_amd64.pyd',
+ 'C:\\Python314\\Lib\\site-packages\\numpy\\random\\_mt19937.cp314-win_amd64.pyd',
+ 'EXTENSION'),
+ ('numpy\\random\\_generator.cp314-win_amd64.pyd',
+ 'C:\\Python314\\Lib\\site-packages\\numpy\\random\\_generator.cp314-win_amd64.pyd',
+ 'EXTENSION'),
+ ('numpy\\random\\_common.cp314-win_amd64.pyd',
+ 'C:\\Python314\\Lib\\site-packages\\numpy\\random\\_common.cp314-win_amd64.pyd',
+ 'EXTENSION'),
+ ('numpy\\random\\_bounded_integers.cp314-win_amd64.pyd',
+ 'C:\\Python314\\Lib\\site-packages\\numpy\\random\\_bounded_integers.cp314-win_amd64.pyd',
+ 'EXTENSION'),
+ ('numpy\\fft\\_pocketfft_umath.cp314-win_amd64.pyd',
+ 'C:\\Python314\\Lib\\site-packages\\numpy\\fft\\_pocketfft_umath.cp314-win_amd64.pyd',
+ 'EXTENSION'),
+ ('_elementtree.pyd', 'C:\\Python314\\DLLs\\_elementtree.pyd', 'EXTENSION'),
+ ('grpc\\_cython\\cygrpc.cp314-win_amd64.pyd',
+ 'C:\\Python314\\Lib\\site-packages\\grpc\\_cython\\cygrpc.cp314-win_amd64.pyd',
+ 'EXTENSION'),
+ ('google\\_upb\\_message.pyd',
+ 'C:\\Python314\\Lib\\site-packages\\google\\_upb\\_message.pyd',
+ 'EXTENSION'),
+ ('grpc_tools\\_protoc_compiler.cp314-win_amd64.pyd',
+ 'C:\\Python314\\Lib\\site-packages\\grpc_tools\\_protoc_compiler.cp314-win_amd64.pyd',
+ 'EXTENSION'),
+ ('api-ms-win-crt-locale-l1-1-0.dll',
+ 'C:\\Users\\Administrator\\miniconda3\\api-ms-win-crt-locale-l1-1-0.dll',
+ 'BINARY'),
+ ('api-ms-win-crt-convert-l1-1-0.dll',
+ 'C:\\Users\\Administrator\\miniconda3\\api-ms-win-crt-convert-l1-1-0.dll',
+ 'BINARY'),
+ ('api-ms-win-crt-filesystem-l1-1-0.dll',
+ 'C:\\Users\\Administrator\\miniconda3\\api-ms-win-crt-filesystem-l1-1-0.dll',
+ 'BINARY'),
+ ('api-ms-win-crt-heap-l1-1-0.dll',
+ 'C:\\Users\\Administrator\\miniconda3\\api-ms-win-crt-heap-l1-1-0.dll',
+ 'BINARY'),
+ ('VCRUNTIME140.dll', 'C:\\Python314\\VCRUNTIME140.dll', 'BINARY'),
+ ('api-ms-win-crt-conio-l1-1-0.dll',
+ 'C:\\Users\\Administrator\\miniconda3\\api-ms-win-crt-conio-l1-1-0.dll',
+ 'BINARY'),
+ ('api-ms-win-crt-runtime-l1-1-0.dll',
+ 'C:\\Users\\Administrator\\miniconda3\\api-ms-win-crt-runtime-l1-1-0.dll',
+ 'BINARY'),
+ ('api-ms-win-crt-stdio-l1-1-0.dll',
+ 'C:\\Users\\Administrator\\miniconda3\\api-ms-win-crt-stdio-l1-1-0.dll',
+ 'BINARY'),
+ ('api-ms-win-crt-process-l1-1-0.dll',
+ 'C:\\Users\\Administrator\\miniconda3\\api-ms-win-crt-process-l1-1-0.dll',
+ 'BINARY'),
+ ('api-ms-win-crt-environment-l1-1-0.dll',
+ 'C:\\Users\\Administrator\\miniconda3\\api-ms-win-crt-environment-l1-1-0.dll',
+ 'BINARY'),
+ ('api-ms-win-crt-math-l1-1-0.dll',
+ 'C:\\Users\\Administrator\\miniconda3\\api-ms-win-crt-math-l1-1-0.dll',
+ 'BINARY'),
+ ('api-ms-win-crt-time-l1-1-0.dll',
+ 'C:\\Users\\Administrator\\miniconda3\\api-ms-win-crt-time-l1-1-0.dll',
+ 'BINARY'),
+ ('api-ms-win-crt-string-l1-1-0.dll',
+ 'C:\\Users\\Administrator\\miniconda3\\api-ms-win-crt-string-l1-1-0.dll',
+ 'BINARY'),
+ ('api-ms-win-crt-private-l1-1-0.dll',
+ 'C:\\Users\\Administrator\\miniconda3\\api-ms-win-crt-private-l1-1-0.dll',
+ 'BINARY'),
+ ('api-ms-win-crt-utility-l1-1-0.dll',
+ 'C:\\Users\\Administrator\\miniconda3\\api-ms-win-crt-utility-l1-1-0.dll',
+ 'BINARY'),
+ ('VCRUNTIME140_1.dll', 'C:\\Python314\\VCRUNTIME140_1.dll', 'BINARY'),
+ ('libssl-3.dll', 'C:\\Python314\\DLLs\\libssl-3.dll', 'BINARY'),
+ ('libcrypto-3.dll', 'C:\\Python314\\DLLs\\libcrypto-3.dll', 'BINARY'),
+ ('libffi-8.dll', 'C:\\Python314\\DLLs\\libffi-8.dll', 'BINARY'),
+ ('python3.dll', 'C:\\Python314\\python3.dll', 'BINARY'),
+ ('ucrtbase.dll',
+ 'C:\\Users\\Administrator\\miniconda3\\ucrtbase.dll',
+ 'BINARY'),
+ ('api-ms-win-core-processenvironment-l1-1-0.dll',
+ 'C:\\Users\\Administrator\\miniconda3\\api-ms-win-core-processenvironment-l1-1-0.dll',
+ 'BINARY'),
+ ('api-ms-win-core-file-l1-2-0.dll',
+ 'C:\\Users\\Administrator\\miniconda3\\api-ms-win-core-file-l1-2-0.dll',
+ 'BINARY'),
+ ('api-ms-win-core-timezone-l1-1-0.dll',
+ 'C:\\Users\\Administrator\\miniconda3\\api-ms-win-core-timezone-l1-1-0.dll',
+ 'BINARY'),
+ ('api-ms-win-core-libraryloader-l1-1-0.dll',
+ 'C:\\Users\\Administrator\\miniconda3\\api-ms-win-core-libraryloader-l1-1-0.dll',
+ 'BINARY'),
+ ('api-ms-win-core-util-l1-1-0.dll',
+ 'C:\\Users\\Administrator\\miniconda3\\api-ms-win-core-util-l1-1-0.dll',
+ 'BINARY'),
+ ('api-ms-win-core-file-l1-1-0.dll',
+ 'C:\\Users\\Administrator\\miniconda3\\api-ms-win-core-file-l1-1-0.dll',
+ 'BINARY'),
+ ('api-ms-win-core-debug-l1-1-0.dll',
+ 'C:\\Users\\Administrator\\miniconda3\\api-ms-win-core-debug-l1-1-0.dll',
+ 'BINARY'),
+ ('api-ms-win-core-file-l2-1-0.dll',
+ 'C:\\Users\\Administrator\\miniconda3\\api-ms-win-core-file-l2-1-0.dll',
+ 'BINARY'),
+ ('api-ms-win-core-namedpipe-l1-1-0.dll',
+ 'C:\\Users\\Administrator\\miniconda3\\api-ms-win-core-namedpipe-l1-1-0.dll',
+ 'BINARY'),
+ ('api-ms-win-core-sysinfo-l1-1-0.dll',
+ 'C:\\Users\\Administrator\\miniconda3\\api-ms-win-core-sysinfo-l1-1-0.dll',
+ 'BINARY'),
+ ('api-ms-win-core-interlocked-l1-1-0.dll',
+ 'C:\\Users\\Administrator\\miniconda3\\api-ms-win-core-interlocked-l1-1-0.dll',
+ 'BINARY'),
+ ('api-ms-win-core-localization-l1-2-0.dll',
+ 'C:\\Users\\Administrator\\miniconda3\\api-ms-win-core-localization-l1-2-0.dll',
+ 'BINARY'),
+ ('api-ms-win-core-synch-l1-1-0.dll',
+ 'C:\\Users\\Administrator\\miniconda3\\api-ms-win-core-synch-l1-1-0.dll',
+ 'BINARY'),
+ ('api-ms-win-core-profile-l1-1-0.dll',
+ 'C:\\Users\\Administrator\\miniconda3\\api-ms-win-core-profile-l1-1-0.dll',
+ 'BINARY'),
+ ('api-ms-win-core-fibers-l1-1-0.dll',
+ 'C:\\Users\\Administrator\\miniconda3\\api-ms-win-core-fibers-l1-1-0.dll',
+ 'BINARY'),
+ ('api-ms-win-core-handle-l1-1-0.dll',
+ 'C:\\Users\\Administrator\\miniconda3\\api-ms-win-core-handle-l1-1-0.dll',
+ 'BINARY'),
+ ('api-ms-win-core-synch-l1-2-0.dll',
+ 'C:\\Users\\Administrator\\miniconda3\\api-ms-win-core-synch-l1-2-0.dll',
+ 'BINARY'),
+ ('api-ms-win-core-string-l1-1-0.dll',
+ 'C:\\Users\\Administrator\\miniconda3\\api-ms-win-core-string-l1-1-0.dll',
+ 'BINARY'),
+ ('api-ms-win-core-memory-l1-1-0.dll',
+ 'C:\\Users\\Administrator\\miniconda3\\api-ms-win-core-memory-l1-1-0.dll',
+ 'BINARY'),
+ ('api-ms-win-core-heap-l1-1-0.dll',
+ 'C:\\Users\\Administrator\\miniconda3\\api-ms-win-core-heap-l1-1-0.dll',
+ 'BINARY'),
+ ('api-ms-win-core-console-l1-1-0.dll',
+ 'C:\\Users\\Administrator\\miniconda3\\api-ms-win-core-console-l1-1-0.dll',
+ 'BINARY'),
+ ('api-ms-win-core-rtlsupport-l1-1-0.dll',
+ 'C:\\Users\\Administrator\\miniconda3\\api-ms-win-core-rtlsupport-l1-1-0.dll',
+ 'BINARY'),
+ ('api-ms-win-core-datetime-l1-1-0.dll',
+ 'C:\\Users\\Administrator\\miniconda3\\api-ms-win-core-datetime-l1-1-0.dll',
+ 'BINARY'),
+ ('api-ms-win-core-errorhandling-l1-1-0.dll',
+ 'C:\\Users\\Administrator\\miniconda3\\api-ms-win-core-errorhandling-l1-1-0.dll',
+ 'BINARY'),
+ ('api-ms-win-core-processthreads-l1-1-0.dll',
+ 'C:\\Users\\Administrator\\miniconda3\\api-ms-win-core-processthreads-l1-1-0.dll',
+ 'BINARY'),
+ ('api-ms-win-core-processthreads-l1-1-1.dll',
+ 'C:\\Users\\Administrator\\miniconda3\\api-ms-win-core-processthreads-l1-1-1.dll',
+ 'BINARY'),
+ ('sensor_stream_pb2.py', 'D:\\JE-Skin\\devkit\\sensor_stream_pb2.py', 'DATA'),
+ ('sensor_stream_pb2_grpc.py',
+ 'D:\\JE-Skin\\devkit\\sensor_stream_pb2_grpc.py',
+ 'DATA'),
+ ('grpc\\_cython\\_credentials\\roots.pem',
+ 'C:\\Python314\\Lib\\site-packages\\grpc\\_cython\\_credentials\\roots.pem',
+ 'DATA'),
+ ('grpc\\_cython\\_cygrpc\\private_key_signing\\private_key_signer_py_wrapper.h',
+ 'C:\\Python314\\Lib\\site-packages\\grpc\\_cython\\_cygrpc\\private_key_signing\\private_key_signer_py_wrapper.h',
+ 'DATA'),
+ ('grpc\\_cython\\_cygrpc\\private_key_signing\\private_key_signer_py_wrapper.cc',
+ 'C:\\Python314\\Lib\\site-packages\\grpc\\_cython\\_cygrpc\\private_key_signing\\private_key_signer_py_wrapper.cc',
+ 'DATA'),
+ ('numpy-2.4.4.dist-info\\WHEEL',
+ 'C:\\Python314\\Lib\\site-packages\\numpy-2.4.4.dist-info\\WHEEL',
+ 'DATA'),
+ ('numpy-2.4.4.dist-info\\licenses\\LICENSE.txt',
+ 'C:\\Python314\\Lib\\site-packages\\numpy-2.4.4.dist-info\\licenses\\LICENSE.txt',
+ 'DATA'),
+ ('numpy-2.4.4.dist-info\\licenses\\numpy\\random\\src\\sfc64\\LICENSE.md',
+ 'C:\\Python314\\Lib\\site-packages\\numpy-2.4.4.dist-info\\licenses\\numpy\\random\\src\\sfc64\\LICENSE.md',
+ 'DATA'),
+ ('numpy-2.4.4.dist-info\\entry_points.txt',
+ 'C:\\Python314\\Lib\\site-packages\\numpy-2.4.4.dist-info\\entry_points.txt',
+ 'DATA'),
+ ('numpy-2.4.4.dist-info\\licenses\\numpy\\ma\\LICENSE',
+ 'C:\\Python314\\Lib\\site-packages\\numpy-2.4.4.dist-info\\licenses\\numpy\\ma\\LICENSE',
+ 'DATA'),
+ ('numpy-2.4.4.dist-info\\INSTALLER',
+ 'C:\\Python314\\Lib\\site-packages\\numpy-2.4.4.dist-info\\INSTALLER',
+ 'DATA'),
+ ('numpy-2.4.4.dist-info\\DELVEWHEEL',
+ 'C:\\Python314\\Lib\\site-packages\\numpy-2.4.4.dist-info\\DELVEWHEEL',
+ 'DATA'),
+ ('numpy-2.4.4.dist-info\\licenses\\numpy\\random\\src\\pcg64\\LICENSE.md',
+ 'C:\\Python314\\Lib\\site-packages\\numpy-2.4.4.dist-info\\licenses\\numpy\\random\\src\\pcg64\\LICENSE.md',
+ 'DATA'),
+ ('numpy-2.4.4.dist-info\\licenses\\numpy\\_core\\include\\numpy\\libdivide\\LICENSE.txt',
+ 'C:\\Python314\\Lib\\site-packages\\numpy-2.4.4.dist-info\\licenses\\numpy\\_core\\include\\numpy\\libdivide\\LICENSE.txt',
+ 'DATA'),
+ ('numpy-2.4.4.dist-info\\licenses\\numpy\\_core\\src\\npysort\\x86-simd-sort\\LICENSE.md',
+ 'C:\\Python314\\Lib\\site-packages\\numpy-2.4.4.dist-info\\licenses\\numpy\\_core\\src\\npysort\\x86-simd-sort\\LICENSE.md',
+ 'DATA'),
+ ('numpy-2.4.4.dist-info\\REQUESTED',
+ 'C:\\Python314\\Lib\\site-packages\\numpy-2.4.4.dist-info\\REQUESTED',
+ 'DATA'),
+ ('numpy-2.4.4.dist-info\\licenses\\numpy\\_core\\src\\multiarray\\dragon4_LICENSE.txt',
+ 'C:\\Python314\\Lib\\site-packages\\numpy-2.4.4.dist-info\\licenses\\numpy\\_core\\src\\multiarray\\dragon4_LICENSE.txt',
+ 'DATA'),
+ ('numpy-2.4.4.dist-info\\licenses\\numpy\\_core\\src\\common\\pythoncapi-compat\\COPYING',
+ 'C:\\Python314\\Lib\\site-packages\\numpy-2.4.4.dist-info\\licenses\\numpy\\_core\\src\\common\\pythoncapi-compat\\COPYING',
+ 'DATA'),
+ ('numpy-2.4.4.dist-info\\licenses\\numpy\\random\\src\\splitmix64\\LICENSE.md',
+ 'C:\\Python314\\Lib\\site-packages\\numpy-2.4.4.dist-info\\licenses\\numpy\\random\\src\\splitmix64\\LICENSE.md',
+ 'DATA'),
+ ('numpy-2.4.4.dist-info\\licenses\\numpy\\random\\src\\distributions\\LICENSE.md',
+ 'C:\\Python314\\Lib\\site-packages\\numpy-2.4.4.dist-info\\licenses\\numpy\\random\\src\\distributions\\LICENSE.md',
+ 'DATA'),
+ ('numpy-2.4.4.dist-info\\licenses\\numpy\\_core\\src\\umath\\svml\\LICENSE',
+ 'C:\\Python314\\Lib\\site-packages\\numpy-2.4.4.dist-info\\licenses\\numpy\\_core\\src\\umath\\svml\\LICENSE',
+ 'DATA'),
+ ('numpy-2.4.4.dist-info\\licenses\\numpy\\random\\LICENSE.md',
+ 'C:\\Python314\\Lib\\site-packages\\numpy-2.4.4.dist-info\\licenses\\numpy\\random\\LICENSE.md',
+ 'DATA'),
+ ('numpy-2.4.4.dist-info\\METADATA',
+ 'C:\\Python314\\Lib\\site-packages\\numpy-2.4.4.dist-info\\METADATA',
+ 'DATA'),
+ ('numpy-2.4.4.dist-info\\licenses\\numpy\\random\\src\\mt19937\\LICENSE.md',
+ 'C:\\Python314\\Lib\\site-packages\\numpy-2.4.4.dist-info\\licenses\\numpy\\random\\src\\mt19937\\LICENSE.md',
+ 'DATA'),
+ ('numpy-2.4.4.dist-info\\licenses\\numpy\\_core\\src\\highway\\LICENSE',
+ 'C:\\Python314\\Lib\\site-packages\\numpy-2.4.4.dist-info\\licenses\\numpy\\_core\\src\\highway\\LICENSE',
+ 'DATA'),
+ ('numpy-2.4.4.dist-info\\licenses\\numpy\\random\\src\\philox\\LICENSE.md',
+ 'C:\\Python314\\Lib\\site-packages\\numpy-2.4.4.dist-info\\licenses\\numpy\\random\\src\\philox\\LICENSE.md',
+ 'DATA'),
+ ('numpy-2.4.4.dist-info\\licenses\\numpy\\fft\\pocketfft\\LICENSE.md',
+ 'C:\\Python314\\Lib\\site-packages\\numpy-2.4.4.dist-info\\licenses\\numpy\\fft\\pocketfft\\LICENSE.md',
+ 'DATA'),
+ ('numpy-2.4.4.dist-info\\licenses\\numpy\\linalg\\lapack_lite\\LICENSE.txt',
+ 'C:\\Python314\\Lib\\site-packages\\numpy-2.4.4.dist-info\\licenses\\numpy\\linalg\\lapack_lite\\LICENSE.txt',
+ 'DATA'),
+ ('numpy-2.4.4.dist-info\\RECORD',
+ 'C:\\Python314\\Lib\\site-packages\\numpy-2.4.4.dist-info\\RECORD',
+ 'DATA'),
+ ('base_library.zip',
+ 'D:\\JE-Skin\\devkit\\build\\je-skin-devkit-server\\base_library.zip',
+ 'DATA')],
+ [],
+ False,
+ False,
+ 1777347409,
+ [('run.exe',
+ 'C:\\Python314\\Lib\\site-packages\\PyInstaller\\bootloader\\Windows-64bit-intel\\run.exe',
+ 'EXECUTABLE')],
+ 'C:\\Python314\\python314.dll')
diff --git a/devkit/build/je-skin-devkit-server/PKG-00.toc b/devkit/build/je-skin-devkit-server/PKG-00.toc
new file mode 100644
index 0000000..7d4c965
--- /dev/null
+++ b/devkit/build/je-skin-devkit-server/PKG-00.toc
@@ -0,0 +1,341 @@
+('D:\\JE-Skin\\devkit\\build\\je-skin-devkit-server\\je-skin-devkit-server.pkg',
+ {'BINARY': True,
+ 'DATA': True,
+ 'EXECUTABLE': True,
+ 'EXTENSION': True,
+ 'PYMODULE': True,
+ 'PYSOURCE': True,
+ 'PYZ': False,
+ 'SPLASH': True,
+ 'SYMLINK': False},
+ [('pyi-contents-directory _internal', '', 'OPTION'),
+ ('PYZ-00.pyz',
+ 'D:\\JE-Skin\\devkit\\build\\je-skin-devkit-server\\PYZ-00.pyz',
+ 'PYZ'),
+ ('struct',
+ 'D:\\JE-Skin\\devkit\\build\\je-skin-devkit-server\\localpycs\\struct.pyc',
+ 'PYMODULE'),
+ ('pyimod01_archive',
+ 'D:\\JE-Skin\\devkit\\build\\je-skin-devkit-server\\localpycs\\pyimod01_archive.pyc',
+ 'PYMODULE'),
+ ('pyimod02_importers',
+ 'D:\\JE-Skin\\devkit\\build\\je-skin-devkit-server\\localpycs\\pyimod02_importers.pyc',
+ 'PYMODULE'),
+ ('pyimod03_ctypes',
+ 'D:\\JE-Skin\\devkit\\build\\je-skin-devkit-server\\localpycs\\pyimod03_ctypes.pyc',
+ 'PYMODULE'),
+ ('pyimod04_pywin32',
+ 'D:\\JE-Skin\\devkit\\build\\je-skin-devkit-server\\localpycs\\pyimod04_pywin32.pyc',
+ 'PYMODULE'),
+ ('pyiboot01_bootstrap',
+ 'C:\\Python314\\Lib\\site-packages\\PyInstaller\\loader\\pyiboot01_bootstrap.py',
+ 'PYSOURCE'),
+ ('pyi_rth_inspect',
+ 'C:\\Python314\\Lib\\site-packages\\PyInstaller\\hooks\\rthooks\\pyi_rth_inspect.py',
+ 'PYSOURCE'),
+ ('pyi_rth_pkgutil',
+ 'C:\\Python314\\Lib\\site-packages\\PyInstaller\\hooks\\rthooks\\pyi_rth_pkgutil.py',
+ 'PYSOURCE'),
+ ('pyi_rth_multiprocessing',
+ 'C:\\Python314\\Lib\\site-packages\\PyInstaller\\hooks\\rthooks\\pyi_rth_multiprocessing.py',
+ 'PYSOURCE'),
+ ('sensor_server', 'D:\\JE-Skin\\devkit\\sensor_server.py', 'PYSOURCE'),
+ ('python314.dll', 'C:\\Python314\\python314.dll', 'BINARY'),
+ ('numpy.libs\\libscipy_openblas64_-63c857e738469261263c764a36be9436.dll',
+ 'C:\\Python314\\Lib\\site-packages\\numpy.libs\\libscipy_openblas64_-63c857e738469261263c764a36be9436.dll',
+ 'BINARY'),
+ ('numpy.libs\\msvcp140-a4c2229bdc2a2a630acdc095b4d86008.dll',
+ 'C:\\Python314\\Lib\\site-packages\\numpy.libs\\msvcp140-a4c2229bdc2a2a630acdc095b4d86008.dll',
+ 'BINARY'),
+ ('select.pyd', 'C:\\Python314\\DLLs\\select.pyd', 'EXTENSION'),
+ ('_multiprocessing.pyd',
+ 'C:\\Python314\\DLLs\\_multiprocessing.pyd',
+ 'EXTENSION'),
+ ('_zstd.pyd', 'C:\\Python314\\DLLs\\_zstd.pyd', 'EXTENSION'),
+ ('pyexpat.pyd', 'C:\\Python314\\DLLs\\pyexpat.pyd', 'EXTENSION'),
+ ('_lzma.pyd', 'C:\\Python314\\DLLs\\_lzma.pyd', 'EXTENSION'),
+ ('_bz2.pyd', 'C:\\Python314\\DLLs\\_bz2.pyd', 'EXTENSION'),
+ ('_ssl.pyd', 'C:\\Python314\\DLLs\\_ssl.pyd', 'EXTENSION'),
+ ('_hashlib.pyd', 'C:\\Python314\\DLLs\\_hashlib.pyd', 'EXTENSION'),
+ ('unicodedata.pyd', 'C:\\Python314\\DLLs\\unicodedata.pyd', 'EXTENSION'),
+ ('_decimal.pyd', 'C:\\Python314\\DLLs\\_decimal.pyd', 'EXTENSION'),
+ ('_socket.pyd', 'C:\\Python314\\DLLs\\_socket.pyd', 'EXTENSION'),
+ ('_ctypes.pyd', 'C:\\Python314\\DLLs\\_ctypes.pyd', 'EXTENSION'),
+ ('_queue.pyd', 'C:\\Python314\\DLLs\\_queue.pyd', 'EXTENSION'),
+ ('numpy\\_core\\_multiarray_tests.cp314-win_amd64.pyd',
+ 'C:\\Python314\\Lib\\site-packages\\numpy\\_core\\_multiarray_tests.cp314-win_amd64.pyd',
+ 'EXTENSION'),
+ ('numpy\\_core\\_multiarray_umath.cp314-win_amd64.pyd',
+ 'C:\\Python314\\Lib\\site-packages\\numpy\\_core\\_multiarray_umath.cp314-win_amd64.pyd',
+ 'EXTENSION'),
+ ('_wmi.pyd', 'C:\\Python314\\DLLs\\_wmi.pyd', 'EXTENSION'),
+ ('_overlapped.pyd', 'C:\\Python314\\DLLs\\_overlapped.pyd', 'EXTENSION'),
+ ('_asyncio.pyd', 'C:\\Python314\\DLLs\\_asyncio.pyd', 'EXTENSION'),
+ ('numpy\\linalg\\_umath_linalg.cp314-win_amd64.pyd',
+ 'C:\\Python314\\Lib\\site-packages\\numpy\\linalg\\_umath_linalg.cp314-win_amd64.pyd',
+ 'EXTENSION'),
+ ('numpy\\random\\mtrand.cp314-win_amd64.pyd',
+ 'C:\\Python314\\Lib\\site-packages\\numpy\\random\\mtrand.cp314-win_amd64.pyd',
+ 'EXTENSION'),
+ ('numpy\\random\\bit_generator.cp314-win_amd64.pyd',
+ 'C:\\Python314\\Lib\\site-packages\\numpy\\random\\bit_generator.cp314-win_amd64.pyd',
+ 'EXTENSION'),
+ ('numpy\\random\\_sfc64.cp314-win_amd64.pyd',
+ 'C:\\Python314\\Lib\\site-packages\\numpy\\random\\_sfc64.cp314-win_amd64.pyd',
+ 'EXTENSION'),
+ ('numpy\\random\\_philox.cp314-win_amd64.pyd',
+ 'C:\\Python314\\Lib\\site-packages\\numpy\\random\\_philox.cp314-win_amd64.pyd',
+ 'EXTENSION'),
+ ('numpy\\random\\_pcg64.cp314-win_amd64.pyd',
+ 'C:\\Python314\\Lib\\site-packages\\numpy\\random\\_pcg64.cp314-win_amd64.pyd',
+ 'EXTENSION'),
+ ('numpy\\random\\_mt19937.cp314-win_amd64.pyd',
+ 'C:\\Python314\\Lib\\site-packages\\numpy\\random\\_mt19937.cp314-win_amd64.pyd',
+ 'EXTENSION'),
+ ('numpy\\random\\_generator.cp314-win_amd64.pyd',
+ 'C:\\Python314\\Lib\\site-packages\\numpy\\random\\_generator.cp314-win_amd64.pyd',
+ 'EXTENSION'),
+ ('numpy\\random\\_common.cp314-win_amd64.pyd',
+ 'C:\\Python314\\Lib\\site-packages\\numpy\\random\\_common.cp314-win_amd64.pyd',
+ 'EXTENSION'),
+ ('numpy\\random\\_bounded_integers.cp314-win_amd64.pyd',
+ 'C:\\Python314\\Lib\\site-packages\\numpy\\random\\_bounded_integers.cp314-win_amd64.pyd',
+ 'EXTENSION'),
+ ('numpy\\fft\\_pocketfft_umath.cp314-win_amd64.pyd',
+ 'C:\\Python314\\Lib\\site-packages\\numpy\\fft\\_pocketfft_umath.cp314-win_amd64.pyd',
+ 'EXTENSION'),
+ ('_elementtree.pyd', 'C:\\Python314\\DLLs\\_elementtree.pyd', 'EXTENSION'),
+ ('grpc\\_cython\\cygrpc.cp314-win_amd64.pyd',
+ 'C:\\Python314\\Lib\\site-packages\\grpc\\_cython\\cygrpc.cp314-win_amd64.pyd',
+ 'EXTENSION'),
+ ('google\\_upb\\_message.pyd',
+ 'C:\\Python314\\Lib\\site-packages\\google\\_upb\\_message.pyd',
+ 'EXTENSION'),
+ ('grpc_tools\\_protoc_compiler.cp314-win_amd64.pyd',
+ 'C:\\Python314\\Lib\\site-packages\\grpc_tools\\_protoc_compiler.cp314-win_amd64.pyd',
+ 'EXTENSION'),
+ ('api-ms-win-crt-locale-l1-1-0.dll',
+ 'C:\\Users\\Administrator\\miniconda3\\api-ms-win-crt-locale-l1-1-0.dll',
+ 'BINARY'),
+ ('api-ms-win-crt-convert-l1-1-0.dll',
+ 'C:\\Users\\Administrator\\miniconda3\\api-ms-win-crt-convert-l1-1-0.dll',
+ 'BINARY'),
+ ('api-ms-win-crt-filesystem-l1-1-0.dll',
+ 'C:\\Users\\Administrator\\miniconda3\\api-ms-win-crt-filesystem-l1-1-0.dll',
+ 'BINARY'),
+ ('api-ms-win-crt-heap-l1-1-0.dll',
+ 'C:\\Users\\Administrator\\miniconda3\\api-ms-win-crt-heap-l1-1-0.dll',
+ 'BINARY'),
+ ('VCRUNTIME140.dll', 'C:\\Python314\\VCRUNTIME140.dll', 'BINARY'),
+ ('api-ms-win-crt-conio-l1-1-0.dll',
+ 'C:\\Users\\Administrator\\miniconda3\\api-ms-win-crt-conio-l1-1-0.dll',
+ 'BINARY'),
+ ('api-ms-win-crt-runtime-l1-1-0.dll',
+ 'C:\\Users\\Administrator\\miniconda3\\api-ms-win-crt-runtime-l1-1-0.dll',
+ 'BINARY'),
+ ('api-ms-win-crt-stdio-l1-1-0.dll',
+ 'C:\\Users\\Administrator\\miniconda3\\api-ms-win-crt-stdio-l1-1-0.dll',
+ 'BINARY'),
+ ('api-ms-win-crt-process-l1-1-0.dll',
+ 'C:\\Users\\Administrator\\miniconda3\\api-ms-win-crt-process-l1-1-0.dll',
+ 'BINARY'),
+ ('api-ms-win-crt-environment-l1-1-0.dll',
+ 'C:\\Users\\Administrator\\miniconda3\\api-ms-win-crt-environment-l1-1-0.dll',
+ 'BINARY'),
+ ('api-ms-win-crt-math-l1-1-0.dll',
+ 'C:\\Users\\Administrator\\miniconda3\\api-ms-win-crt-math-l1-1-0.dll',
+ 'BINARY'),
+ ('api-ms-win-crt-time-l1-1-0.dll',
+ 'C:\\Users\\Administrator\\miniconda3\\api-ms-win-crt-time-l1-1-0.dll',
+ 'BINARY'),
+ ('api-ms-win-crt-string-l1-1-0.dll',
+ 'C:\\Users\\Administrator\\miniconda3\\api-ms-win-crt-string-l1-1-0.dll',
+ 'BINARY'),
+ ('api-ms-win-crt-private-l1-1-0.dll',
+ 'C:\\Users\\Administrator\\miniconda3\\api-ms-win-crt-private-l1-1-0.dll',
+ 'BINARY'),
+ ('api-ms-win-crt-utility-l1-1-0.dll',
+ 'C:\\Users\\Administrator\\miniconda3\\api-ms-win-crt-utility-l1-1-0.dll',
+ 'BINARY'),
+ ('VCRUNTIME140_1.dll', 'C:\\Python314\\VCRUNTIME140_1.dll', 'BINARY'),
+ ('libssl-3.dll', 'C:\\Python314\\DLLs\\libssl-3.dll', 'BINARY'),
+ ('libcrypto-3.dll', 'C:\\Python314\\DLLs\\libcrypto-3.dll', 'BINARY'),
+ ('libffi-8.dll', 'C:\\Python314\\DLLs\\libffi-8.dll', 'BINARY'),
+ ('python3.dll', 'C:\\Python314\\python3.dll', 'BINARY'),
+ ('ucrtbase.dll',
+ 'C:\\Users\\Administrator\\miniconda3\\ucrtbase.dll',
+ 'BINARY'),
+ ('api-ms-win-core-processenvironment-l1-1-0.dll',
+ 'C:\\Users\\Administrator\\miniconda3\\api-ms-win-core-processenvironment-l1-1-0.dll',
+ 'BINARY'),
+ ('api-ms-win-core-file-l1-2-0.dll',
+ 'C:\\Users\\Administrator\\miniconda3\\api-ms-win-core-file-l1-2-0.dll',
+ 'BINARY'),
+ ('api-ms-win-core-timezone-l1-1-0.dll',
+ 'C:\\Users\\Administrator\\miniconda3\\api-ms-win-core-timezone-l1-1-0.dll',
+ 'BINARY'),
+ ('api-ms-win-core-libraryloader-l1-1-0.dll',
+ 'C:\\Users\\Administrator\\miniconda3\\api-ms-win-core-libraryloader-l1-1-0.dll',
+ 'BINARY'),
+ ('api-ms-win-core-util-l1-1-0.dll',
+ 'C:\\Users\\Administrator\\miniconda3\\api-ms-win-core-util-l1-1-0.dll',
+ 'BINARY'),
+ ('api-ms-win-core-file-l1-1-0.dll',
+ 'C:\\Users\\Administrator\\miniconda3\\api-ms-win-core-file-l1-1-0.dll',
+ 'BINARY'),
+ ('api-ms-win-core-debug-l1-1-0.dll',
+ 'C:\\Users\\Administrator\\miniconda3\\api-ms-win-core-debug-l1-1-0.dll',
+ 'BINARY'),
+ ('api-ms-win-core-file-l2-1-0.dll',
+ 'C:\\Users\\Administrator\\miniconda3\\api-ms-win-core-file-l2-1-0.dll',
+ 'BINARY'),
+ ('api-ms-win-core-namedpipe-l1-1-0.dll',
+ 'C:\\Users\\Administrator\\miniconda3\\api-ms-win-core-namedpipe-l1-1-0.dll',
+ 'BINARY'),
+ ('api-ms-win-core-sysinfo-l1-1-0.dll',
+ 'C:\\Users\\Administrator\\miniconda3\\api-ms-win-core-sysinfo-l1-1-0.dll',
+ 'BINARY'),
+ ('api-ms-win-core-interlocked-l1-1-0.dll',
+ 'C:\\Users\\Administrator\\miniconda3\\api-ms-win-core-interlocked-l1-1-0.dll',
+ 'BINARY'),
+ ('api-ms-win-core-localization-l1-2-0.dll',
+ 'C:\\Users\\Administrator\\miniconda3\\api-ms-win-core-localization-l1-2-0.dll',
+ 'BINARY'),
+ ('api-ms-win-core-synch-l1-1-0.dll',
+ 'C:\\Users\\Administrator\\miniconda3\\api-ms-win-core-synch-l1-1-0.dll',
+ 'BINARY'),
+ ('api-ms-win-core-profile-l1-1-0.dll',
+ 'C:\\Users\\Administrator\\miniconda3\\api-ms-win-core-profile-l1-1-0.dll',
+ 'BINARY'),
+ ('api-ms-win-core-fibers-l1-1-0.dll',
+ 'C:\\Users\\Administrator\\miniconda3\\api-ms-win-core-fibers-l1-1-0.dll',
+ 'BINARY'),
+ ('api-ms-win-core-handle-l1-1-0.dll',
+ 'C:\\Users\\Administrator\\miniconda3\\api-ms-win-core-handle-l1-1-0.dll',
+ 'BINARY'),
+ ('api-ms-win-core-synch-l1-2-0.dll',
+ 'C:\\Users\\Administrator\\miniconda3\\api-ms-win-core-synch-l1-2-0.dll',
+ 'BINARY'),
+ ('api-ms-win-core-string-l1-1-0.dll',
+ 'C:\\Users\\Administrator\\miniconda3\\api-ms-win-core-string-l1-1-0.dll',
+ 'BINARY'),
+ ('api-ms-win-core-memory-l1-1-0.dll',
+ 'C:\\Users\\Administrator\\miniconda3\\api-ms-win-core-memory-l1-1-0.dll',
+ 'BINARY'),
+ ('api-ms-win-core-heap-l1-1-0.dll',
+ 'C:\\Users\\Administrator\\miniconda3\\api-ms-win-core-heap-l1-1-0.dll',
+ 'BINARY'),
+ ('api-ms-win-core-console-l1-1-0.dll',
+ 'C:\\Users\\Administrator\\miniconda3\\api-ms-win-core-console-l1-1-0.dll',
+ 'BINARY'),
+ ('api-ms-win-core-rtlsupport-l1-1-0.dll',
+ 'C:\\Users\\Administrator\\miniconda3\\api-ms-win-core-rtlsupport-l1-1-0.dll',
+ 'BINARY'),
+ ('api-ms-win-core-datetime-l1-1-0.dll',
+ 'C:\\Users\\Administrator\\miniconda3\\api-ms-win-core-datetime-l1-1-0.dll',
+ 'BINARY'),
+ ('api-ms-win-core-errorhandling-l1-1-0.dll',
+ 'C:\\Users\\Administrator\\miniconda3\\api-ms-win-core-errorhandling-l1-1-0.dll',
+ 'BINARY'),
+ ('api-ms-win-core-processthreads-l1-1-0.dll',
+ 'C:\\Users\\Administrator\\miniconda3\\api-ms-win-core-processthreads-l1-1-0.dll',
+ 'BINARY'),
+ ('api-ms-win-core-processthreads-l1-1-1.dll',
+ 'C:\\Users\\Administrator\\miniconda3\\api-ms-win-core-processthreads-l1-1-1.dll',
+ 'BINARY'),
+ ('sensor_stream_pb2.py', 'D:\\JE-Skin\\devkit\\sensor_stream_pb2.py', 'DATA'),
+ ('sensor_stream_pb2_grpc.py',
+ 'D:\\JE-Skin\\devkit\\sensor_stream_pb2_grpc.py',
+ 'DATA'),
+ ('grpc\\_cython\\_credentials\\roots.pem',
+ 'C:\\Python314\\Lib\\site-packages\\grpc\\_cython\\_credentials\\roots.pem',
+ 'DATA'),
+ ('grpc\\_cython\\_cygrpc\\private_key_signing\\private_key_signer_py_wrapper.h',
+ 'C:\\Python314\\Lib\\site-packages\\grpc\\_cython\\_cygrpc\\private_key_signing\\private_key_signer_py_wrapper.h',
+ 'DATA'),
+ ('grpc\\_cython\\_cygrpc\\private_key_signing\\private_key_signer_py_wrapper.cc',
+ 'C:\\Python314\\Lib\\site-packages\\grpc\\_cython\\_cygrpc\\private_key_signing\\private_key_signer_py_wrapper.cc',
+ 'DATA'),
+ ('numpy-2.4.4.dist-info\\WHEEL',
+ 'C:\\Python314\\Lib\\site-packages\\numpy-2.4.4.dist-info\\WHEEL',
+ 'DATA'),
+ ('numpy-2.4.4.dist-info\\licenses\\LICENSE.txt',
+ 'C:\\Python314\\Lib\\site-packages\\numpy-2.4.4.dist-info\\licenses\\LICENSE.txt',
+ 'DATA'),
+ ('numpy-2.4.4.dist-info\\licenses\\numpy\\random\\src\\sfc64\\LICENSE.md',
+ 'C:\\Python314\\Lib\\site-packages\\numpy-2.4.4.dist-info\\licenses\\numpy\\random\\src\\sfc64\\LICENSE.md',
+ 'DATA'),
+ ('numpy-2.4.4.dist-info\\entry_points.txt',
+ 'C:\\Python314\\Lib\\site-packages\\numpy-2.4.4.dist-info\\entry_points.txt',
+ 'DATA'),
+ ('numpy-2.4.4.dist-info\\licenses\\numpy\\ma\\LICENSE',
+ 'C:\\Python314\\Lib\\site-packages\\numpy-2.4.4.dist-info\\licenses\\numpy\\ma\\LICENSE',
+ 'DATA'),
+ ('numpy-2.4.4.dist-info\\INSTALLER',
+ 'C:\\Python314\\Lib\\site-packages\\numpy-2.4.4.dist-info\\INSTALLER',
+ 'DATA'),
+ ('numpy-2.4.4.dist-info\\DELVEWHEEL',
+ 'C:\\Python314\\Lib\\site-packages\\numpy-2.4.4.dist-info\\DELVEWHEEL',
+ 'DATA'),
+ ('numpy-2.4.4.dist-info\\licenses\\numpy\\random\\src\\pcg64\\LICENSE.md',
+ 'C:\\Python314\\Lib\\site-packages\\numpy-2.4.4.dist-info\\licenses\\numpy\\random\\src\\pcg64\\LICENSE.md',
+ 'DATA'),
+ ('numpy-2.4.4.dist-info\\licenses\\numpy\\_core\\include\\numpy\\libdivide\\LICENSE.txt',
+ 'C:\\Python314\\Lib\\site-packages\\numpy-2.4.4.dist-info\\licenses\\numpy\\_core\\include\\numpy\\libdivide\\LICENSE.txt',
+ 'DATA'),
+ ('numpy-2.4.4.dist-info\\licenses\\numpy\\_core\\src\\npysort\\x86-simd-sort\\LICENSE.md',
+ 'C:\\Python314\\Lib\\site-packages\\numpy-2.4.4.dist-info\\licenses\\numpy\\_core\\src\\npysort\\x86-simd-sort\\LICENSE.md',
+ 'DATA'),
+ ('numpy-2.4.4.dist-info\\REQUESTED',
+ 'C:\\Python314\\Lib\\site-packages\\numpy-2.4.4.dist-info\\REQUESTED',
+ 'DATA'),
+ ('numpy-2.4.4.dist-info\\licenses\\numpy\\_core\\src\\multiarray\\dragon4_LICENSE.txt',
+ 'C:\\Python314\\Lib\\site-packages\\numpy-2.4.4.dist-info\\licenses\\numpy\\_core\\src\\multiarray\\dragon4_LICENSE.txt',
+ 'DATA'),
+ ('numpy-2.4.4.dist-info\\licenses\\numpy\\_core\\src\\common\\pythoncapi-compat\\COPYING',
+ 'C:\\Python314\\Lib\\site-packages\\numpy-2.4.4.dist-info\\licenses\\numpy\\_core\\src\\common\\pythoncapi-compat\\COPYING',
+ 'DATA'),
+ ('numpy-2.4.4.dist-info\\licenses\\numpy\\random\\src\\splitmix64\\LICENSE.md',
+ 'C:\\Python314\\Lib\\site-packages\\numpy-2.4.4.dist-info\\licenses\\numpy\\random\\src\\splitmix64\\LICENSE.md',
+ 'DATA'),
+ ('numpy-2.4.4.dist-info\\licenses\\numpy\\random\\src\\distributions\\LICENSE.md',
+ 'C:\\Python314\\Lib\\site-packages\\numpy-2.4.4.dist-info\\licenses\\numpy\\random\\src\\distributions\\LICENSE.md',
+ 'DATA'),
+ ('numpy-2.4.4.dist-info\\licenses\\numpy\\_core\\src\\umath\\svml\\LICENSE',
+ 'C:\\Python314\\Lib\\site-packages\\numpy-2.4.4.dist-info\\licenses\\numpy\\_core\\src\\umath\\svml\\LICENSE',
+ 'DATA'),
+ ('numpy-2.4.4.dist-info\\licenses\\numpy\\random\\LICENSE.md',
+ 'C:\\Python314\\Lib\\site-packages\\numpy-2.4.4.dist-info\\licenses\\numpy\\random\\LICENSE.md',
+ 'DATA'),
+ ('numpy-2.4.4.dist-info\\METADATA',
+ 'C:\\Python314\\Lib\\site-packages\\numpy-2.4.4.dist-info\\METADATA',
+ 'DATA'),
+ ('numpy-2.4.4.dist-info\\licenses\\numpy\\random\\src\\mt19937\\LICENSE.md',
+ 'C:\\Python314\\Lib\\site-packages\\numpy-2.4.4.dist-info\\licenses\\numpy\\random\\src\\mt19937\\LICENSE.md',
+ 'DATA'),
+ ('numpy-2.4.4.dist-info\\licenses\\numpy\\_core\\src\\highway\\LICENSE',
+ 'C:\\Python314\\Lib\\site-packages\\numpy-2.4.4.dist-info\\licenses\\numpy\\_core\\src\\highway\\LICENSE',
+ 'DATA'),
+ ('numpy-2.4.4.dist-info\\licenses\\numpy\\random\\src\\philox\\LICENSE.md',
+ 'C:\\Python314\\Lib\\site-packages\\numpy-2.4.4.dist-info\\licenses\\numpy\\random\\src\\philox\\LICENSE.md',
+ 'DATA'),
+ ('numpy-2.4.4.dist-info\\licenses\\numpy\\fft\\pocketfft\\LICENSE.md',
+ 'C:\\Python314\\Lib\\site-packages\\numpy-2.4.4.dist-info\\licenses\\numpy\\fft\\pocketfft\\LICENSE.md',
+ 'DATA'),
+ ('numpy-2.4.4.dist-info\\licenses\\numpy\\linalg\\lapack_lite\\LICENSE.txt',
+ 'C:\\Python314\\Lib\\site-packages\\numpy-2.4.4.dist-info\\licenses\\numpy\\linalg\\lapack_lite\\LICENSE.txt',
+ 'DATA'),
+ ('numpy-2.4.4.dist-info\\RECORD',
+ 'C:\\Python314\\Lib\\site-packages\\numpy-2.4.4.dist-info\\RECORD',
+ 'DATA'),
+ ('base_library.zip',
+ 'D:\\JE-Skin\\devkit\\build\\je-skin-devkit-server\\base_library.zip',
+ 'DATA')],
+ 'python314.dll',
+ False,
+ False,
+ False,
+ [],
+ None,
+ None,
+ None)
diff --git a/devkit/build/je-skin-devkit-server/PYZ-00.pyz b/devkit/build/je-skin-devkit-server/PYZ-00.pyz
new file mode 100644
index 0000000..53bf6a1
Binary files /dev/null and b/devkit/build/je-skin-devkit-server/PYZ-00.pyz differ
diff --git a/devkit/build/je-skin-devkit-server/PYZ-00.toc b/devkit/build/je-skin-devkit-server/PYZ-00.toc
new file mode 100644
index 0000000..ee62a10
--- /dev/null
+++ b/devkit/build/je-skin-devkit-server/PYZ-00.toc
@@ -0,0 +1,1592 @@
+('D:\\JE-Skin\\devkit\\build\\je-skin-devkit-server\\PYZ-00.pyz',
+ [('__future__', 'C:\\Python314\\Lib\\__future__.py', 'PYMODULE'),
+ ('_aix_support', 'C:\\Python314\\Lib\\_aix_support.py', 'PYMODULE'),
+ ('_ast_unparse', 'C:\\Python314\\Lib\\_ast_unparse.py', 'PYMODULE'),
+ ('_colorize', 'C:\\Python314\\Lib\\_colorize.py', 'PYMODULE'),
+ ('_compat_pickle', 'C:\\Python314\\Lib\\_compat_pickle.py', 'PYMODULE'),
+ ('_ios_support', 'C:\\Python314\\Lib\\_ios_support.py', 'PYMODULE'),
+ ('_opcode_metadata', 'C:\\Python314\\Lib\\_opcode_metadata.py', 'PYMODULE'),
+ ('_py_abc', 'C:\\Python314\\Lib\\_py_abc.py', 'PYMODULE'),
+ ('_py_warnings', 'C:\\Python314\\Lib\\_py_warnings.py', 'PYMODULE'),
+ ('_pydatetime', 'C:\\Python314\\Lib\\_pydatetime.py', 'PYMODULE'),
+ ('_pydecimal', 'C:\\Python314\\Lib\\_pydecimal.py', 'PYMODULE'),
+ ('_pyrepl', 'C:\\Python314\\Lib\\_pyrepl\\__init__.py', 'PYMODULE'),
+ ('_pyrepl.pager', 'C:\\Python314\\Lib\\_pyrepl\\pager.py', 'PYMODULE'),
+ ('_pyrepl.trace', 'C:\\Python314\\Lib\\_pyrepl\\trace.py', 'PYMODULE'),
+ ('_pyrepl.types', 'C:\\Python314\\Lib\\_pyrepl\\types.py', 'PYMODULE'),
+ ('_pyrepl.utils', 'C:\\Python314\\Lib\\_pyrepl\\utils.py', 'PYMODULE'),
+ ('_strptime', 'C:\\Python314\\Lib\\_strptime.py', 'PYMODULE'),
+ ('_threading_local', 'C:\\Python314\\Lib\\_threading_local.py', 'PYMODULE'),
+ ('annotationlib', 'C:\\Python314\\Lib\\annotationlib.py', 'PYMODULE'),
+ ('argparse', 'C:\\Python314\\Lib\\argparse.py', 'PYMODULE'),
+ ('ast', 'C:\\Python314\\Lib\\ast.py', 'PYMODULE'),
+ ('asyncio', 'C:\\Python314\\Lib\\asyncio\\__init__.py', 'PYMODULE'),
+ ('asyncio.base_events',
+ 'C:\\Python314\\Lib\\asyncio\\base_events.py',
+ 'PYMODULE'),
+ ('asyncio.base_futures',
+ 'C:\\Python314\\Lib\\asyncio\\base_futures.py',
+ 'PYMODULE'),
+ ('asyncio.base_subprocess',
+ 'C:\\Python314\\Lib\\asyncio\\base_subprocess.py',
+ 'PYMODULE'),
+ ('asyncio.base_tasks',
+ 'C:\\Python314\\Lib\\asyncio\\base_tasks.py',
+ 'PYMODULE'),
+ ('asyncio.constants',
+ 'C:\\Python314\\Lib\\asyncio\\constants.py',
+ 'PYMODULE'),
+ ('asyncio.coroutines',
+ 'C:\\Python314\\Lib\\asyncio\\coroutines.py',
+ 'PYMODULE'),
+ ('asyncio.events', 'C:\\Python314\\Lib\\asyncio\\events.py', 'PYMODULE'),
+ ('asyncio.exceptions',
+ 'C:\\Python314\\Lib\\asyncio\\exceptions.py',
+ 'PYMODULE'),
+ ('asyncio.format_helpers',
+ 'C:\\Python314\\Lib\\asyncio\\format_helpers.py',
+ 'PYMODULE'),
+ ('asyncio.futures', 'C:\\Python314\\Lib\\asyncio\\futures.py', 'PYMODULE'),
+ ('asyncio.graph', 'C:\\Python314\\Lib\\asyncio\\graph.py', 'PYMODULE'),
+ ('asyncio.locks', 'C:\\Python314\\Lib\\asyncio\\locks.py', 'PYMODULE'),
+ ('asyncio.log', 'C:\\Python314\\Lib\\asyncio\\log.py', 'PYMODULE'),
+ ('asyncio.mixins', 'C:\\Python314\\Lib\\asyncio\\mixins.py', 'PYMODULE'),
+ ('asyncio.proactor_events',
+ 'C:\\Python314\\Lib\\asyncio\\proactor_events.py',
+ 'PYMODULE'),
+ ('asyncio.protocols',
+ 'C:\\Python314\\Lib\\asyncio\\protocols.py',
+ 'PYMODULE'),
+ ('asyncio.queues', 'C:\\Python314\\Lib\\asyncio\\queues.py', 'PYMODULE'),
+ ('asyncio.runners', 'C:\\Python314\\Lib\\asyncio\\runners.py', 'PYMODULE'),
+ ('asyncio.selector_events',
+ 'C:\\Python314\\Lib\\asyncio\\selector_events.py',
+ 'PYMODULE'),
+ ('asyncio.sslproto', 'C:\\Python314\\Lib\\asyncio\\sslproto.py', 'PYMODULE'),
+ ('asyncio.staggered',
+ 'C:\\Python314\\Lib\\asyncio\\staggered.py',
+ 'PYMODULE'),
+ ('asyncio.streams', 'C:\\Python314\\Lib\\asyncio\\streams.py', 'PYMODULE'),
+ ('asyncio.subprocess',
+ 'C:\\Python314\\Lib\\asyncio\\subprocess.py',
+ 'PYMODULE'),
+ ('asyncio.taskgroups',
+ 'C:\\Python314\\Lib\\asyncio\\taskgroups.py',
+ 'PYMODULE'),
+ ('asyncio.tasks', 'C:\\Python314\\Lib\\asyncio\\tasks.py', 'PYMODULE'),
+ ('asyncio.threads', 'C:\\Python314\\Lib\\asyncio\\threads.py', 'PYMODULE'),
+ ('asyncio.timeouts', 'C:\\Python314\\Lib\\asyncio\\timeouts.py', 'PYMODULE'),
+ ('asyncio.transports',
+ 'C:\\Python314\\Lib\\asyncio\\transports.py',
+ 'PYMODULE'),
+ ('asyncio.trsock', 'C:\\Python314\\Lib\\asyncio\\trsock.py', 'PYMODULE'),
+ ('asyncio.unix_events',
+ 'C:\\Python314\\Lib\\asyncio\\unix_events.py',
+ 'PYMODULE'),
+ ('asyncio.windows_events',
+ 'C:\\Python314\\Lib\\asyncio\\windows_events.py',
+ 'PYMODULE'),
+ ('asyncio.windows_utils',
+ 'C:\\Python314\\Lib\\asyncio\\windows_utils.py',
+ 'PYMODULE'),
+ ('base64', 'C:\\Python314\\Lib\\base64.py', 'PYMODULE'),
+ ('bdb', 'C:\\Python314\\Lib\\bdb.py', 'PYMODULE'),
+ ('bisect', 'C:\\Python314\\Lib\\bisect.py', 'PYMODULE'),
+ ('bz2', 'C:\\Python314\\Lib\\bz2.py', 'PYMODULE'),
+ ('calendar', 'C:\\Python314\\Lib\\calendar.py', 'PYMODULE'),
+ ('cmd', 'C:\\Python314\\Lib\\cmd.py', 'PYMODULE'),
+ ('code', 'C:\\Python314\\Lib\\code.py', 'PYMODULE'),
+ ('codeop', 'C:\\Python314\\Lib\\codeop.py', 'PYMODULE'),
+ ('compression', 'C:\\Python314\\Lib\\compression\\__init__.py', 'PYMODULE'),
+ ('compression._common',
+ 'C:\\Python314\\Lib\\compression\\_common\\__init__.py',
+ 'PYMODULE'),
+ ('compression._common._streams',
+ 'C:\\Python314\\Lib\\compression\\_common\\_streams.py',
+ 'PYMODULE'),
+ ('compression.zstd',
+ 'C:\\Python314\\Lib\\compression\\zstd\\__init__.py',
+ 'PYMODULE'),
+ ('compression.zstd._zstdfile',
+ 'C:\\Python314\\Lib\\compression\\zstd\\_zstdfile.py',
+ 'PYMODULE'),
+ ('concurrent', 'C:\\Python314\\Lib\\concurrent\\__init__.py', 'PYMODULE'),
+ ('concurrent.futures',
+ 'C:\\Python314\\Lib\\concurrent\\futures\\__init__.py',
+ 'PYMODULE'),
+ ('concurrent.futures._base',
+ 'C:\\Python314\\Lib\\concurrent\\futures\\_base.py',
+ 'PYMODULE'),
+ ('concurrent.futures.interpreter',
+ 'C:\\Python314\\Lib\\concurrent\\futures\\interpreter.py',
+ 'PYMODULE'),
+ ('concurrent.futures.process',
+ 'C:\\Python314\\Lib\\concurrent\\futures\\process.py',
+ 'PYMODULE'),
+ ('concurrent.futures.thread',
+ 'C:\\Python314\\Lib\\concurrent\\futures\\thread.py',
+ 'PYMODULE'),
+ ('concurrent.interpreters',
+ 'C:\\Python314\\Lib\\concurrent\\interpreters\\__init__.py',
+ 'PYMODULE'),
+ ('concurrent.interpreters._crossinterp',
+ 'C:\\Python314\\Lib\\concurrent\\interpreters\\_crossinterp.py',
+ 'PYMODULE'),
+ ('concurrent.interpreters._queues',
+ 'C:\\Python314\\Lib\\concurrent\\interpreters\\_queues.py',
+ 'PYMODULE'),
+ ('contextlib', 'C:\\Python314\\Lib\\contextlib.py', 'PYMODULE'),
+ ('contextvars', 'C:\\Python314\\Lib\\contextvars.py', 'PYMODULE'),
+ ('copy', 'C:\\Python314\\Lib\\copy.py', 'PYMODULE'),
+ ('csv', 'C:\\Python314\\Lib\\csv.py', 'PYMODULE'),
+ ('ctypes', 'C:\\Python314\\Lib\\ctypes\\__init__.py', 'PYMODULE'),
+ ('ctypes._aix', 'C:\\Python314\\Lib\\ctypes\\_aix.py', 'PYMODULE'),
+ ('ctypes._endian', 'C:\\Python314\\Lib\\ctypes\\_endian.py', 'PYMODULE'),
+ ('ctypes._layout', 'C:\\Python314\\Lib\\ctypes\\_layout.py', 'PYMODULE'),
+ ('ctypes.macholib',
+ 'C:\\Python314\\Lib\\ctypes\\macholib\\__init__.py',
+ 'PYMODULE'),
+ ('ctypes.macholib.dyld',
+ 'C:\\Python314\\Lib\\ctypes\\macholib\\dyld.py',
+ 'PYMODULE'),
+ ('ctypes.macholib.dylib',
+ 'C:\\Python314\\Lib\\ctypes\\macholib\\dylib.py',
+ 'PYMODULE'),
+ ('ctypes.macholib.framework',
+ 'C:\\Python314\\Lib\\ctypes\\macholib\\framework.py',
+ 'PYMODULE'),
+ ('ctypes.util', 'C:\\Python314\\Lib\\ctypes\\util.py', 'PYMODULE'),
+ ('ctypes.wintypes', 'C:\\Python314\\Lib\\ctypes\\wintypes.py', 'PYMODULE'),
+ ('dataclasses', 'C:\\Python314\\Lib\\dataclasses.py', 'PYMODULE'),
+ ('datetime', 'C:\\Python314\\Lib\\datetime.py', 'PYMODULE'),
+ ('decimal', 'C:\\Python314\\Lib\\decimal.py', 'PYMODULE'),
+ ('difflib', 'C:\\Python314\\Lib\\difflib.py', 'PYMODULE'),
+ ('dis', 'C:\\Python314\\Lib\\dis.py', 'PYMODULE'),
+ ('doctest', 'C:\\Python314\\Lib\\doctest.py', 'PYMODULE'),
+ ('email', 'C:\\Python314\\Lib\\email\\__init__.py', 'PYMODULE'),
+ ('email._encoded_words',
+ 'C:\\Python314\\Lib\\email\\_encoded_words.py',
+ 'PYMODULE'),
+ ('email._header_value_parser',
+ 'C:\\Python314\\Lib\\email\\_header_value_parser.py',
+ 'PYMODULE'),
+ ('email._parseaddr', 'C:\\Python314\\Lib\\email\\_parseaddr.py', 'PYMODULE'),
+ ('email._policybase',
+ 'C:\\Python314\\Lib\\email\\_policybase.py',
+ 'PYMODULE'),
+ ('email.base64mime', 'C:\\Python314\\Lib\\email\\base64mime.py', 'PYMODULE'),
+ ('email.charset', 'C:\\Python314\\Lib\\email\\charset.py', 'PYMODULE'),
+ ('email.contentmanager',
+ 'C:\\Python314\\Lib\\email\\contentmanager.py',
+ 'PYMODULE'),
+ ('email.encoders', 'C:\\Python314\\Lib\\email\\encoders.py', 'PYMODULE'),
+ ('email.errors', 'C:\\Python314\\Lib\\email\\errors.py', 'PYMODULE'),
+ ('email.feedparser', 'C:\\Python314\\Lib\\email\\feedparser.py', 'PYMODULE'),
+ ('email.generator', 'C:\\Python314\\Lib\\email\\generator.py', 'PYMODULE'),
+ ('email.header', 'C:\\Python314\\Lib\\email\\header.py', 'PYMODULE'),
+ ('email.headerregistry',
+ 'C:\\Python314\\Lib\\email\\headerregistry.py',
+ 'PYMODULE'),
+ ('email.iterators', 'C:\\Python314\\Lib\\email\\iterators.py', 'PYMODULE'),
+ ('email.message', 'C:\\Python314\\Lib\\email\\message.py', 'PYMODULE'),
+ ('email.parser', 'C:\\Python314\\Lib\\email\\parser.py', 'PYMODULE'),
+ ('email.policy', 'C:\\Python314\\Lib\\email\\policy.py', 'PYMODULE'),
+ ('email.quoprimime', 'C:\\Python314\\Lib\\email\\quoprimime.py', 'PYMODULE'),
+ ('email.utils', 'C:\\Python314\\Lib\\email\\utils.py', 'PYMODULE'),
+ ('et_xmlfile',
+ 'C:\\Python314\\Lib\\site-packages\\et_xmlfile\\__init__.py',
+ 'PYMODULE'),
+ ('et_xmlfile.incremental_tree',
+ 'C:\\Python314\\Lib\\site-packages\\et_xmlfile\\incremental_tree.py',
+ 'PYMODULE'),
+ ('et_xmlfile.xmlfile',
+ 'C:\\Python314\\Lib\\site-packages\\et_xmlfile\\xmlfile.py',
+ 'PYMODULE'),
+ ('fileinput', 'C:\\Python314\\Lib\\fileinput.py', 'PYMODULE'),
+ ('fnmatch', 'C:\\Python314\\Lib\\fnmatch.py', 'PYMODULE'),
+ ('fractions', 'C:\\Python314\\Lib\\fractions.py', 'PYMODULE'),
+ ('ftplib', 'C:\\Python314\\Lib\\ftplib.py', 'PYMODULE'),
+ ('getopt', 'C:\\Python314\\Lib\\getopt.py', 'PYMODULE'),
+ ('gettext', 'C:\\Python314\\Lib\\gettext.py', 'PYMODULE'),
+ ('glob', 'C:\\Python314\\Lib\\glob.py', 'PYMODULE'),
+ ('google', '-', 'PYMODULE'),
+ ('google._upb', '-', 'PYMODULE'),
+ ('google.protobuf',
+ 'C:\\Python314\\Lib\\site-packages\\google\\protobuf\\__init__.py',
+ 'PYMODULE'),
+ ('google.protobuf.descriptor',
+ 'C:\\Python314\\Lib\\site-packages\\google\\protobuf\\descriptor.py',
+ 'PYMODULE'),
+ ('google.protobuf.descriptor_database',
+ 'C:\\Python314\\Lib\\site-packages\\google\\protobuf\\descriptor_database.py',
+ 'PYMODULE'),
+ ('google.protobuf.descriptor_pb2',
+ 'C:\\Python314\\Lib\\site-packages\\google\\protobuf\\descriptor_pb2.py',
+ 'PYMODULE'),
+ ('google.protobuf.descriptor_pool',
+ 'C:\\Python314\\Lib\\site-packages\\google\\protobuf\\descriptor_pool.py',
+ 'PYMODULE'),
+ ('google.protobuf.internal',
+ 'C:\\Python314\\Lib\\site-packages\\google\\protobuf\\internal\\__init__.py',
+ 'PYMODULE'),
+ ('google.protobuf.internal.api_implementation',
+ 'C:\\Python314\\Lib\\site-packages\\google\\protobuf\\internal\\api_implementation.py',
+ 'PYMODULE'),
+ ('google.protobuf.internal.builder',
+ 'C:\\Python314\\Lib\\site-packages\\google\\protobuf\\internal\\builder.py',
+ 'PYMODULE'),
+ ('google.protobuf.internal.containers',
+ 'C:\\Python314\\Lib\\site-packages\\google\\protobuf\\internal\\containers.py',
+ 'PYMODULE'),
+ ('google.protobuf.internal.decoder',
+ 'C:\\Python314\\Lib\\site-packages\\google\\protobuf\\internal\\decoder.py',
+ 'PYMODULE'),
+ ('google.protobuf.internal.encoder',
+ 'C:\\Python314\\Lib\\site-packages\\google\\protobuf\\internal\\encoder.py',
+ 'PYMODULE'),
+ ('google.protobuf.internal.enum_type_wrapper',
+ 'C:\\Python314\\Lib\\site-packages\\google\\protobuf\\internal\\enum_type_wrapper.py',
+ 'PYMODULE'),
+ ('google.protobuf.internal.extension_dict',
+ 'C:\\Python314\\Lib\\site-packages\\google\\protobuf\\internal\\extension_dict.py',
+ 'PYMODULE'),
+ ('google.protobuf.internal.field_mask',
+ 'C:\\Python314\\Lib\\site-packages\\google\\protobuf\\internal\\field_mask.py',
+ 'PYMODULE'),
+ ('google.protobuf.internal.message_listener',
+ 'C:\\Python314\\Lib\\site-packages\\google\\protobuf\\internal\\message_listener.py',
+ 'PYMODULE'),
+ ('google.protobuf.internal.python_edition_defaults',
+ 'C:\\Python314\\Lib\\site-packages\\google\\protobuf\\internal\\python_edition_defaults.py',
+ 'PYMODULE'),
+ ('google.protobuf.internal.python_message',
+ 'C:\\Python314\\Lib\\site-packages\\google\\protobuf\\internal\\python_message.py',
+ 'PYMODULE'),
+ ('google.protobuf.internal.type_checkers',
+ 'C:\\Python314\\Lib\\site-packages\\google\\protobuf\\internal\\type_checkers.py',
+ 'PYMODULE'),
+ ('google.protobuf.internal.well_known_types',
+ 'C:\\Python314\\Lib\\site-packages\\google\\protobuf\\internal\\well_known_types.py',
+ 'PYMODULE'),
+ ('google.protobuf.internal.wire_format',
+ 'C:\\Python314\\Lib\\site-packages\\google\\protobuf\\internal\\wire_format.py',
+ 'PYMODULE'),
+ ('google.protobuf.message',
+ 'C:\\Python314\\Lib\\site-packages\\google\\protobuf\\message.py',
+ 'PYMODULE'),
+ ('google.protobuf.message_factory',
+ 'C:\\Python314\\Lib\\site-packages\\google\\protobuf\\message_factory.py',
+ 'PYMODULE'),
+ ('google.protobuf.pyext',
+ 'C:\\Python314\\Lib\\site-packages\\google\\protobuf\\pyext\\__init__.py',
+ 'PYMODULE'),
+ ('google.protobuf.pyext.cpp_message',
+ 'C:\\Python314\\Lib\\site-packages\\google\\protobuf\\pyext\\cpp_message.py',
+ 'PYMODULE'),
+ ('google.protobuf.reflection',
+ 'C:\\Python314\\Lib\\site-packages\\google\\protobuf\\reflection.py',
+ 'PYMODULE'),
+ ('google.protobuf.runtime_version',
+ 'C:\\Python314\\Lib\\site-packages\\google\\protobuf\\runtime_version.py',
+ 'PYMODULE'),
+ ('google.protobuf.service_reflection',
+ 'C:\\Python314\\Lib\\site-packages\\google\\protobuf\\service_reflection.py',
+ 'PYMODULE'),
+ ('google.protobuf.symbol_database',
+ 'C:\\Python314\\Lib\\site-packages\\google\\protobuf\\symbol_database.py',
+ 'PYMODULE'),
+ ('google.protobuf.text_encoding',
+ 'C:\\Python314\\Lib\\site-packages\\google\\protobuf\\text_encoding.py',
+ 'PYMODULE'),
+ ('google.protobuf.text_format',
+ 'C:\\Python314\\Lib\\site-packages\\google\\protobuf\\text_format.py',
+ 'PYMODULE'),
+ ('google.protobuf.unknown_fields',
+ 'C:\\Python314\\Lib\\site-packages\\google\\protobuf\\unknown_fields.py',
+ 'PYMODULE'),
+ ('grpc', 'C:\\Python314\\Lib\\site-packages\\grpc\\__init__.py', 'PYMODULE'),
+ ('grpc._auth',
+ 'C:\\Python314\\Lib\\site-packages\\grpc\\_auth.py',
+ 'PYMODULE'),
+ ('grpc._channel',
+ 'C:\\Python314\\Lib\\site-packages\\grpc\\_channel.py',
+ 'PYMODULE'),
+ ('grpc._common',
+ 'C:\\Python314\\Lib\\site-packages\\grpc\\_common.py',
+ 'PYMODULE'),
+ ('grpc._compression',
+ 'C:\\Python314\\Lib\\site-packages\\grpc\\_compression.py',
+ 'PYMODULE'),
+ ('grpc._cython',
+ 'C:\\Python314\\Lib\\site-packages\\grpc\\_cython\\__init__.py',
+ 'PYMODULE'),
+ ('grpc._grpcio_metadata',
+ 'C:\\Python314\\Lib\\site-packages\\grpc\\_grpcio_metadata.py',
+ 'PYMODULE'),
+ ('grpc._interceptor',
+ 'C:\\Python314\\Lib\\site-packages\\grpc\\_interceptor.py',
+ 'PYMODULE'),
+ ('grpc._observability',
+ 'C:\\Python314\\Lib\\site-packages\\grpc\\_observability.py',
+ 'PYMODULE'),
+ ('grpc._plugin_wrapping',
+ 'C:\\Python314\\Lib\\site-packages\\grpc\\_plugin_wrapping.py',
+ 'PYMODULE'),
+ ('grpc._runtime_protos',
+ 'C:\\Python314\\Lib\\site-packages\\grpc\\_runtime_protos.py',
+ 'PYMODULE'),
+ ('grpc._server',
+ 'C:\\Python314\\Lib\\site-packages\\grpc\\_server.py',
+ 'PYMODULE'),
+ ('grpc._simple_stubs',
+ 'C:\\Python314\\Lib\\site-packages\\grpc\\_simple_stubs.py',
+ 'PYMODULE'),
+ ('grpc._typing',
+ 'C:\\Python314\\Lib\\site-packages\\grpc\\_typing.py',
+ 'PYMODULE'),
+ ('grpc._utilities',
+ 'C:\\Python314\\Lib\\site-packages\\grpc\\_utilities.py',
+ 'PYMODULE'),
+ ('grpc.aio',
+ 'C:\\Python314\\Lib\\site-packages\\grpc\\aio\\__init__.py',
+ 'PYMODULE'),
+ ('grpc.aio._base_call',
+ 'C:\\Python314\\Lib\\site-packages\\grpc\\aio\\_base_call.py',
+ 'PYMODULE'),
+ ('grpc.aio._base_channel',
+ 'C:\\Python314\\Lib\\site-packages\\grpc\\aio\\_base_channel.py',
+ 'PYMODULE'),
+ ('grpc.aio._base_server',
+ 'C:\\Python314\\Lib\\site-packages\\grpc\\aio\\_base_server.py',
+ 'PYMODULE'),
+ ('grpc.aio._call',
+ 'C:\\Python314\\Lib\\site-packages\\grpc\\aio\\_call.py',
+ 'PYMODULE'),
+ ('grpc.aio._channel',
+ 'C:\\Python314\\Lib\\site-packages\\grpc\\aio\\_channel.py',
+ 'PYMODULE'),
+ ('grpc.aio._interceptor',
+ 'C:\\Python314\\Lib\\site-packages\\grpc\\aio\\_interceptor.py',
+ 'PYMODULE'),
+ ('grpc.aio._metadata',
+ 'C:\\Python314\\Lib\\site-packages\\grpc\\aio\\_metadata.py',
+ 'PYMODULE'),
+ ('grpc.aio._server',
+ 'C:\\Python314\\Lib\\site-packages\\grpc\\aio\\_server.py',
+ 'PYMODULE'),
+ ('grpc.aio._typing',
+ 'C:\\Python314\\Lib\\site-packages\\grpc\\aio\\_typing.py',
+ 'PYMODULE'),
+ ('grpc.aio._utils',
+ 'C:\\Python314\\Lib\\site-packages\\grpc\\aio\\_utils.py',
+ 'PYMODULE'),
+ ('grpc.experimental',
+ 'C:\\Python314\\Lib\\site-packages\\grpc\\experimental\\__init__.py',
+ 'PYMODULE'),
+ ('grpc_tools',
+ 'C:\\Python314\\Lib\\site-packages\\grpc_tools\\__init__.py',
+ 'PYMODULE'),
+ ('grpc_tools.protoc',
+ 'C:\\Python314\\Lib\\site-packages\\grpc_tools\\protoc.py',
+ 'PYMODULE'),
+ ('gzip', 'C:\\Python314\\Lib\\gzip.py', 'PYMODULE'),
+ ('hashlib', 'C:\\Python314\\Lib\\hashlib.py', 'PYMODULE'),
+ ('hmac', 'C:\\Python314\\Lib\\hmac.py', 'PYMODULE'),
+ ('html', 'C:\\Python314\\Lib\\html\\__init__.py', 'PYMODULE'),
+ ('html.entities', 'C:\\Python314\\Lib\\html\\entities.py', 'PYMODULE'),
+ ('http', 'C:\\Python314\\Lib\\http\\__init__.py', 'PYMODULE'),
+ ('http.client', 'C:\\Python314\\Lib\\http\\client.py', 'PYMODULE'),
+ ('http.cookiejar', 'C:\\Python314\\Lib\\http\\cookiejar.py', 'PYMODULE'),
+ ('http.server', 'C:\\Python314\\Lib\\http\\server.py', 'PYMODULE'),
+ ('importlib', 'C:\\Python314\\Lib\\importlib\\__init__.py', 'PYMODULE'),
+ ('importlib._abc', 'C:\\Python314\\Lib\\importlib\\_abc.py', 'PYMODULE'),
+ ('importlib._bootstrap',
+ 'C:\\Python314\\Lib\\importlib\\_bootstrap.py',
+ 'PYMODULE'),
+ ('importlib._bootstrap_external',
+ 'C:\\Python314\\Lib\\importlib\\_bootstrap_external.py',
+ 'PYMODULE'),
+ ('importlib.abc', 'C:\\Python314\\Lib\\importlib\\abc.py', 'PYMODULE'),
+ ('importlib.machinery',
+ 'C:\\Python314\\Lib\\importlib\\machinery.py',
+ 'PYMODULE'),
+ ('importlib.metadata',
+ 'C:\\Python314\\Lib\\importlib\\metadata\\__init__.py',
+ 'PYMODULE'),
+ ('importlib.metadata._adapters',
+ 'C:\\Python314\\Lib\\importlib\\metadata\\_adapters.py',
+ 'PYMODULE'),
+ ('importlib.metadata._collections',
+ 'C:\\Python314\\Lib\\importlib\\metadata\\_collections.py',
+ 'PYMODULE'),
+ ('importlib.metadata._functools',
+ 'C:\\Python314\\Lib\\importlib\\metadata\\_functools.py',
+ 'PYMODULE'),
+ ('importlib.metadata._itertools',
+ 'C:\\Python314\\Lib\\importlib\\metadata\\_itertools.py',
+ 'PYMODULE'),
+ ('importlib.metadata._meta',
+ 'C:\\Python314\\Lib\\importlib\\metadata\\_meta.py',
+ 'PYMODULE'),
+ ('importlib.metadata._text',
+ 'C:\\Python314\\Lib\\importlib\\metadata\\_text.py',
+ 'PYMODULE'),
+ ('importlib.readers',
+ 'C:\\Python314\\Lib\\importlib\\readers.py',
+ 'PYMODULE'),
+ ('importlib.resources',
+ 'C:\\Python314\\Lib\\importlib\\resources\\__init__.py',
+ 'PYMODULE'),
+ ('importlib.resources._adapters',
+ 'C:\\Python314\\Lib\\importlib\\resources\\_adapters.py',
+ 'PYMODULE'),
+ ('importlib.resources._common',
+ 'C:\\Python314\\Lib\\importlib\\resources\\_common.py',
+ 'PYMODULE'),
+ ('importlib.resources._functional',
+ 'C:\\Python314\\Lib\\importlib\\resources\\_functional.py',
+ 'PYMODULE'),
+ ('importlib.resources._itertools',
+ 'C:\\Python314\\Lib\\importlib\\resources\\_itertools.py',
+ 'PYMODULE'),
+ ('importlib.resources.abc',
+ 'C:\\Python314\\Lib\\importlib\\resources\\abc.py',
+ 'PYMODULE'),
+ ('importlib.resources.readers',
+ 'C:\\Python314\\Lib\\importlib\\resources\\readers.py',
+ 'PYMODULE'),
+ ('importlib.util', 'C:\\Python314\\Lib\\importlib\\util.py', 'PYMODULE'),
+ ('inspect', 'C:\\Python314\\Lib\\inspect.py', 'PYMODULE'),
+ ('ipaddress', 'C:\\Python314\\Lib\\ipaddress.py', 'PYMODULE'),
+ ('json', 'C:\\Python314\\Lib\\json\\__init__.py', 'PYMODULE'),
+ ('json.decoder', 'C:\\Python314\\Lib\\json\\decoder.py', 'PYMODULE'),
+ ('json.encoder', 'C:\\Python314\\Lib\\json\\encoder.py', 'PYMODULE'),
+ ('json.scanner', 'C:\\Python314\\Lib\\json\\scanner.py', 'PYMODULE'),
+ ('logging', 'C:\\Python314\\Lib\\logging\\__init__.py', 'PYMODULE'),
+ ('lzma', 'C:\\Python314\\Lib\\lzma.py', 'PYMODULE'),
+ ('mimetypes', 'C:\\Python314\\Lib\\mimetypes.py', 'PYMODULE'),
+ ('multiprocessing',
+ 'C:\\Python314\\Lib\\multiprocessing\\__init__.py',
+ 'PYMODULE'),
+ ('multiprocessing.connection',
+ 'C:\\Python314\\Lib\\multiprocessing\\connection.py',
+ 'PYMODULE'),
+ ('multiprocessing.context',
+ 'C:\\Python314\\Lib\\multiprocessing\\context.py',
+ 'PYMODULE'),
+ ('multiprocessing.dummy',
+ 'C:\\Python314\\Lib\\multiprocessing\\dummy\\__init__.py',
+ 'PYMODULE'),
+ ('multiprocessing.dummy.connection',
+ 'C:\\Python314\\Lib\\multiprocessing\\dummy\\connection.py',
+ 'PYMODULE'),
+ ('multiprocessing.forkserver',
+ 'C:\\Python314\\Lib\\multiprocessing\\forkserver.py',
+ 'PYMODULE'),
+ ('multiprocessing.heap',
+ 'C:\\Python314\\Lib\\multiprocessing\\heap.py',
+ 'PYMODULE'),
+ ('multiprocessing.managers',
+ 'C:\\Python314\\Lib\\multiprocessing\\managers.py',
+ 'PYMODULE'),
+ ('multiprocessing.pool',
+ 'C:\\Python314\\Lib\\multiprocessing\\pool.py',
+ 'PYMODULE'),
+ ('multiprocessing.popen_fork',
+ 'C:\\Python314\\Lib\\multiprocessing\\popen_fork.py',
+ 'PYMODULE'),
+ ('multiprocessing.popen_forkserver',
+ 'C:\\Python314\\Lib\\multiprocessing\\popen_forkserver.py',
+ 'PYMODULE'),
+ ('multiprocessing.popen_spawn_posix',
+ 'C:\\Python314\\Lib\\multiprocessing\\popen_spawn_posix.py',
+ 'PYMODULE'),
+ ('multiprocessing.popen_spawn_win32',
+ 'C:\\Python314\\Lib\\multiprocessing\\popen_spawn_win32.py',
+ 'PYMODULE'),
+ ('multiprocessing.process',
+ 'C:\\Python314\\Lib\\multiprocessing\\process.py',
+ 'PYMODULE'),
+ ('multiprocessing.queues',
+ 'C:\\Python314\\Lib\\multiprocessing\\queues.py',
+ 'PYMODULE'),
+ ('multiprocessing.reduction',
+ 'C:\\Python314\\Lib\\multiprocessing\\reduction.py',
+ 'PYMODULE'),
+ ('multiprocessing.resource_sharer',
+ 'C:\\Python314\\Lib\\multiprocessing\\resource_sharer.py',
+ 'PYMODULE'),
+ ('multiprocessing.resource_tracker',
+ 'C:\\Python314\\Lib\\multiprocessing\\resource_tracker.py',
+ 'PYMODULE'),
+ ('multiprocessing.shared_memory',
+ 'C:\\Python314\\Lib\\multiprocessing\\shared_memory.py',
+ 'PYMODULE'),
+ ('multiprocessing.sharedctypes',
+ 'C:\\Python314\\Lib\\multiprocessing\\sharedctypes.py',
+ 'PYMODULE'),
+ ('multiprocessing.spawn',
+ 'C:\\Python314\\Lib\\multiprocessing\\spawn.py',
+ 'PYMODULE'),
+ ('multiprocessing.synchronize',
+ 'C:\\Python314\\Lib\\multiprocessing\\synchronize.py',
+ 'PYMODULE'),
+ ('multiprocessing.util',
+ 'C:\\Python314\\Lib\\multiprocessing\\util.py',
+ 'PYMODULE'),
+ ('netrc', 'C:\\Python314\\Lib\\netrc.py', 'PYMODULE'),
+ ('numbers', 'C:\\Python314\\Lib\\numbers.py', 'PYMODULE'),
+ ('numpy',
+ 'C:\\Python314\\Lib\\site-packages\\numpy\\__init__.py',
+ 'PYMODULE'),
+ ('numpy.__config__',
+ 'C:\\Python314\\Lib\\site-packages\\numpy\\__config__.py',
+ 'PYMODULE'),
+ ('numpy._array_api_info',
+ 'C:\\Python314\\Lib\\site-packages\\numpy\\_array_api_info.py',
+ 'PYMODULE'),
+ ('numpy._core',
+ 'C:\\Python314\\Lib\\site-packages\\numpy\\_core\\__init__.py',
+ 'PYMODULE'),
+ ('numpy._core._add_newdocs',
+ 'C:\\Python314\\Lib\\site-packages\\numpy\\_core\\_add_newdocs.py',
+ 'PYMODULE'),
+ ('numpy._core._add_newdocs_scalars',
+ 'C:\\Python314\\Lib\\site-packages\\numpy\\_core\\_add_newdocs_scalars.py',
+ 'PYMODULE'),
+ ('numpy._core._asarray',
+ 'C:\\Python314\\Lib\\site-packages\\numpy\\_core\\_asarray.py',
+ 'PYMODULE'),
+ ('numpy._core._dtype',
+ 'C:\\Python314\\Lib\\site-packages\\numpy\\_core\\_dtype.py',
+ 'PYMODULE'),
+ ('numpy._core._dtype_ctypes',
+ 'C:\\Python314\\Lib\\site-packages\\numpy\\_core\\_dtype_ctypes.py',
+ 'PYMODULE'),
+ ('numpy._core._exceptions',
+ 'C:\\Python314\\Lib\\site-packages\\numpy\\_core\\_exceptions.py',
+ 'PYMODULE'),
+ ('numpy._core._internal',
+ 'C:\\Python314\\Lib\\site-packages\\numpy\\_core\\_internal.py',
+ 'PYMODULE'),
+ ('numpy._core._methods',
+ 'C:\\Python314\\Lib\\site-packages\\numpy\\_core\\_methods.py',
+ 'PYMODULE'),
+ ('numpy._core._string_helpers',
+ 'C:\\Python314\\Lib\\site-packages\\numpy\\_core\\_string_helpers.py',
+ 'PYMODULE'),
+ ('numpy._core._type_aliases',
+ 'C:\\Python314\\Lib\\site-packages\\numpy\\_core\\_type_aliases.py',
+ 'PYMODULE'),
+ ('numpy._core._ufunc_config',
+ 'C:\\Python314\\Lib\\site-packages\\numpy\\_core\\_ufunc_config.py',
+ 'PYMODULE'),
+ ('numpy._core.arrayprint',
+ 'C:\\Python314\\Lib\\site-packages\\numpy\\_core\\arrayprint.py',
+ 'PYMODULE'),
+ ('numpy._core.defchararray',
+ 'C:\\Python314\\Lib\\site-packages\\numpy\\_core\\defchararray.py',
+ 'PYMODULE'),
+ ('numpy._core.einsumfunc',
+ 'C:\\Python314\\Lib\\site-packages\\numpy\\_core\\einsumfunc.py',
+ 'PYMODULE'),
+ ('numpy._core.fromnumeric',
+ 'C:\\Python314\\Lib\\site-packages\\numpy\\_core\\fromnumeric.py',
+ 'PYMODULE'),
+ ('numpy._core.function_base',
+ 'C:\\Python314\\Lib\\site-packages\\numpy\\_core\\function_base.py',
+ 'PYMODULE'),
+ ('numpy._core.getlimits',
+ 'C:\\Python314\\Lib\\site-packages\\numpy\\_core\\getlimits.py',
+ 'PYMODULE'),
+ ('numpy._core.memmap',
+ 'C:\\Python314\\Lib\\site-packages\\numpy\\_core\\memmap.py',
+ 'PYMODULE'),
+ ('numpy._core.multiarray',
+ 'C:\\Python314\\Lib\\site-packages\\numpy\\_core\\multiarray.py',
+ 'PYMODULE'),
+ ('numpy._core.numeric',
+ 'C:\\Python314\\Lib\\site-packages\\numpy\\_core\\numeric.py',
+ 'PYMODULE'),
+ ('numpy._core.numerictypes',
+ 'C:\\Python314\\Lib\\site-packages\\numpy\\_core\\numerictypes.py',
+ 'PYMODULE'),
+ ('numpy._core.overrides',
+ 'C:\\Python314\\Lib\\site-packages\\numpy\\_core\\overrides.py',
+ 'PYMODULE'),
+ ('numpy._core.printoptions',
+ 'C:\\Python314\\Lib\\site-packages\\numpy\\_core\\printoptions.py',
+ 'PYMODULE'),
+ ('numpy._core.records',
+ 'C:\\Python314\\Lib\\site-packages\\numpy\\_core\\records.py',
+ 'PYMODULE'),
+ ('numpy._core.shape_base',
+ 'C:\\Python314\\Lib\\site-packages\\numpy\\_core\\shape_base.py',
+ 'PYMODULE'),
+ ('numpy._core.strings',
+ 'C:\\Python314\\Lib\\site-packages\\numpy\\_core\\strings.py',
+ 'PYMODULE'),
+ ('numpy._core.umath',
+ 'C:\\Python314\\Lib\\site-packages\\numpy\\_core\\umath.py',
+ 'PYMODULE'),
+ ('numpy._distributor_init',
+ 'C:\\Python314\\Lib\\site-packages\\numpy\\_distributor_init.py',
+ 'PYMODULE'),
+ ('numpy._expired_attrs_2_0',
+ 'C:\\Python314\\Lib\\site-packages\\numpy\\_expired_attrs_2_0.py',
+ 'PYMODULE'),
+ ('numpy._globals',
+ 'C:\\Python314\\Lib\\site-packages\\numpy\\_globals.py',
+ 'PYMODULE'),
+ ('numpy._pytesttester',
+ 'C:\\Python314\\Lib\\site-packages\\numpy\\_pytesttester.py',
+ 'PYMODULE'),
+ ('numpy._typing',
+ 'C:\\Python314\\Lib\\site-packages\\numpy\\_typing\\__init__.py',
+ 'PYMODULE'),
+ ('numpy._typing._add_docstring',
+ 'C:\\Python314\\Lib\\site-packages\\numpy\\_typing\\_add_docstring.py',
+ 'PYMODULE'),
+ ('numpy._typing._array_like',
+ 'C:\\Python314\\Lib\\site-packages\\numpy\\_typing\\_array_like.py',
+ 'PYMODULE'),
+ ('numpy._typing._char_codes',
+ 'C:\\Python314\\Lib\\site-packages\\numpy\\_typing\\_char_codes.py',
+ 'PYMODULE'),
+ ('numpy._typing._dtype_like',
+ 'C:\\Python314\\Lib\\site-packages\\numpy\\_typing\\_dtype_like.py',
+ 'PYMODULE'),
+ ('numpy._typing._nbit',
+ 'C:\\Python314\\Lib\\site-packages\\numpy\\_typing\\_nbit.py',
+ 'PYMODULE'),
+ ('numpy._typing._nbit_base',
+ 'C:\\Python314\\Lib\\site-packages\\numpy\\_typing\\_nbit_base.py',
+ 'PYMODULE'),
+ ('numpy._typing._nested_sequence',
+ 'C:\\Python314\\Lib\\site-packages\\numpy\\_typing\\_nested_sequence.py',
+ 'PYMODULE'),
+ ('numpy._typing._scalars',
+ 'C:\\Python314\\Lib\\site-packages\\numpy\\_typing\\_scalars.py',
+ 'PYMODULE'),
+ ('numpy._typing._shape',
+ 'C:\\Python314\\Lib\\site-packages\\numpy\\_typing\\_shape.py',
+ 'PYMODULE'),
+ ('numpy._typing._ufunc',
+ 'C:\\Python314\\Lib\\site-packages\\numpy\\_typing\\_ufunc.py',
+ 'PYMODULE'),
+ ('numpy._utils',
+ 'C:\\Python314\\Lib\\site-packages\\numpy\\_utils\\__init__.py',
+ 'PYMODULE'),
+ ('numpy._utils._convertions',
+ 'C:\\Python314\\Lib\\site-packages\\numpy\\_utils\\_convertions.py',
+ 'PYMODULE'),
+ ('numpy._utils._inspect',
+ 'C:\\Python314\\Lib\\site-packages\\numpy\\_utils\\_inspect.py',
+ 'PYMODULE'),
+ ('numpy.char',
+ 'C:\\Python314\\Lib\\site-packages\\numpy\\char\\__init__.py',
+ 'PYMODULE'),
+ ('numpy.core',
+ 'C:\\Python314\\Lib\\site-packages\\numpy\\core\\__init__.py',
+ 'PYMODULE'),
+ ('numpy.core._utils',
+ 'C:\\Python314\\Lib\\site-packages\\numpy\\core\\_utils.py',
+ 'PYMODULE'),
+ ('numpy.ctypeslib',
+ 'C:\\Python314\\Lib\\site-packages\\numpy\\ctypeslib\\__init__.py',
+ 'PYMODULE'),
+ ('numpy.ctypeslib._ctypeslib',
+ 'C:\\Python314\\Lib\\site-packages\\numpy\\ctypeslib\\_ctypeslib.py',
+ 'PYMODULE'),
+ ('numpy.dtypes',
+ 'C:\\Python314\\Lib\\site-packages\\numpy\\dtypes.py',
+ 'PYMODULE'),
+ ('numpy.exceptions',
+ 'C:\\Python314\\Lib\\site-packages\\numpy\\exceptions.py',
+ 'PYMODULE'),
+ ('numpy.f2py',
+ 'C:\\Python314\\Lib\\site-packages\\numpy\\f2py\\__init__.py',
+ 'PYMODULE'),
+ ('numpy.f2py.__version__',
+ 'C:\\Python314\\Lib\\site-packages\\numpy\\f2py\\__version__.py',
+ 'PYMODULE'),
+ ('numpy.f2py._backends',
+ 'C:\\Python314\\Lib\\site-packages\\numpy\\f2py\\_backends\\__init__.py',
+ 'PYMODULE'),
+ ('numpy.f2py._backends._backend',
+ 'C:\\Python314\\Lib\\site-packages\\numpy\\f2py\\_backends\\_backend.py',
+ 'PYMODULE'),
+ ('numpy.f2py._backends._distutils',
+ 'C:\\Python314\\Lib\\site-packages\\numpy\\f2py\\_backends\\_distutils.py',
+ 'PYMODULE'),
+ ('numpy.f2py._backends._meson',
+ 'C:\\Python314\\Lib\\site-packages\\numpy\\f2py\\_backends\\_meson.py',
+ 'PYMODULE'),
+ ('numpy.f2py._isocbind',
+ 'C:\\Python314\\Lib\\site-packages\\numpy\\f2py\\_isocbind.py',
+ 'PYMODULE'),
+ ('numpy.f2py.auxfuncs',
+ 'C:\\Python314\\Lib\\site-packages\\numpy\\f2py\\auxfuncs.py',
+ 'PYMODULE'),
+ ('numpy.f2py.capi_maps',
+ 'C:\\Python314\\Lib\\site-packages\\numpy\\f2py\\capi_maps.py',
+ 'PYMODULE'),
+ ('numpy.f2py.cb_rules',
+ 'C:\\Python314\\Lib\\site-packages\\numpy\\f2py\\cb_rules.py',
+ 'PYMODULE'),
+ ('numpy.f2py.cfuncs',
+ 'C:\\Python314\\Lib\\site-packages\\numpy\\f2py\\cfuncs.py',
+ 'PYMODULE'),
+ ('numpy.f2py.common_rules',
+ 'C:\\Python314\\Lib\\site-packages\\numpy\\f2py\\common_rules.py',
+ 'PYMODULE'),
+ ('numpy.f2py.crackfortran',
+ 'C:\\Python314\\Lib\\site-packages\\numpy\\f2py\\crackfortran.py',
+ 'PYMODULE'),
+ ('numpy.f2py.diagnose',
+ 'C:\\Python314\\Lib\\site-packages\\numpy\\f2py\\diagnose.py',
+ 'PYMODULE'),
+ ('numpy.f2py.f2py2e',
+ 'C:\\Python314\\Lib\\site-packages\\numpy\\f2py\\f2py2e.py',
+ 'PYMODULE'),
+ ('numpy.f2py.f90mod_rules',
+ 'C:\\Python314\\Lib\\site-packages\\numpy\\f2py\\f90mod_rules.py',
+ 'PYMODULE'),
+ ('numpy.f2py.func2subr',
+ 'C:\\Python314\\Lib\\site-packages\\numpy\\f2py\\func2subr.py',
+ 'PYMODULE'),
+ ('numpy.f2py.rules',
+ 'C:\\Python314\\Lib\\site-packages\\numpy\\f2py\\rules.py',
+ 'PYMODULE'),
+ ('numpy.f2py.symbolic',
+ 'C:\\Python314\\Lib\\site-packages\\numpy\\f2py\\symbolic.py',
+ 'PYMODULE'),
+ ('numpy.f2py.use_rules',
+ 'C:\\Python314\\Lib\\site-packages\\numpy\\f2py\\use_rules.py',
+ 'PYMODULE'),
+ ('numpy.fft',
+ 'C:\\Python314\\Lib\\site-packages\\numpy\\fft\\__init__.py',
+ 'PYMODULE'),
+ ('numpy.fft._helper',
+ 'C:\\Python314\\Lib\\site-packages\\numpy\\fft\\_helper.py',
+ 'PYMODULE'),
+ ('numpy.fft._pocketfft',
+ 'C:\\Python314\\Lib\\site-packages\\numpy\\fft\\_pocketfft.py',
+ 'PYMODULE'),
+ ('numpy.lib',
+ 'C:\\Python314\\Lib\\site-packages\\numpy\\lib\\__init__.py',
+ 'PYMODULE'),
+ ('numpy.lib._array_utils_impl',
+ 'C:\\Python314\\Lib\\site-packages\\numpy\\lib\\_array_utils_impl.py',
+ 'PYMODULE'),
+ ('numpy.lib._arraypad_impl',
+ 'C:\\Python314\\Lib\\site-packages\\numpy\\lib\\_arraypad_impl.py',
+ 'PYMODULE'),
+ ('numpy.lib._arraysetops_impl',
+ 'C:\\Python314\\Lib\\site-packages\\numpy\\lib\\_arraysetops_impl.py',
+ 'PYMODULE'),
+ ('numpy.lib._arrayterator_impl',
+ 'C:\\Python314\\Lib\\site-packages\\numpy\\lib\\_arrayterator_impl.py',
+ 'PYMODULE'),
+ ('numpy.lib._datasource',
+ 'C:\\Python314\\Lib\\site-packages\\numpy\\lib\\_datasource.py',
+ 'PYMODULE'),
+ ('numpy.lib._format_impl',
+ 'C:\\Python314\\Lib\\site-packages\\numpy\\lib\\_format_impl.py',
+ 'PYMODULE'),
+ ('numpy.lib._function_base_impl',
+ 'C:\\Python314\\Lib\\site-packages\\numpy\\lib\\_function_base_impl.py',
+ 'PYMODULE'),
+ ('numpy.lib._histograms_impl',
+ 'C:\\Python314\\Lib\\site-packages\\numpy\\lib\\_histograms_impl.py',
+ 'PYMODULE'),
+ ('numpy.lib._index_tricks_impl',
+ 'C:\\Python314\\Lib\\site-packages\\numpy\\lib\\_index_tricks_impl.py',
+ 'PYMODULE'),
+ ('numpy.lib._iotools',
+ 'C:\\Python314\\Lib\\site-packages\\numpy\\lib\\_iotools.py',
+ 'PYMODULE'),
+ ('numpy.lib._nanfunctions_impl',
+ 'C:\\Python314\\Lib\\site-packages\\numpy\\lib\\_nanfunctions_impl.py',
+ 'PYMODULE'),
+ ('numpy.lib._npyio_impl',
+ 'C:\\Python314\\Lib\\site-packages\\numpy\\lib\\_npyio_impl.py',
+ 'PYMODULE'),
+ ('numpy.lib._polynomial_impl',
+ 'C:\\Python314\\Lib\\site-packages\\numpy\\lib\\_polynomial_impl.py',
+ 'PYMODULE'),
+ ('numpy.lib._scimath_impl',
+ 'C:\\Python314\\Lib\\site-packages\\numpy\\lib\\_scimath_impl.py',
+ 'PYMODULE'),
+ ('numpy.lib._shape_base_impl',
+ 'C:\\Python314\\Lib\\site-packages\\numpy\\lib\\_shape_base_impl.py',
+ 'PYMODULE'),
+ ('numpy.lib._stride_tricks_impl',
+ 'C:\\Python314\\Lib\\site-packages\\numpy\\lib\\_stride_tricks_impl.py',
+ 'PYMODULE'),
+ ('numpy.lib._twodim_base_impl',
+ 'C:\\Python314\\Lib\\site-packages\\numpy\\lib\\_twodim_base_impl.py',
+ 'PYMODULE'),
+ ('numpy.lib._type_check_impl',
+ 'C:\\Python314\\Lib\\site-packages\\numpy\\lib\\_type_check_impl.py',
+ 'PYMODULE'),
+ ('numpy.lib._ufunclike_impl',
+ 'C:\\Python314\\Lib\\site-packages\\numpy\\lib\\_ufunclike_impl.py',
+ 'PYMODULE'),
+ ('numpy.lib._utils_impl',
+ 'C:\\Python314\\Lib\\site-packages\\numpy\\lib\\_utils_impl.py',
+ 'PYMODULE'),
+ ('numpy.lib._version',
+ 'C:\\Python314\\Lib\\site-packages\\numpy\\lib\\_version.py',
+ 'PYMODULE'),
+ ('numpy.lib.array_utils',
+ 'C:\\Python314\\Lib\\site-packages\\numpy\\lib\\array_utils.py',
+ 'PYMODULE'),
+ ('numpy.lib.format',
+ 'C:\\Python314\\Lib\\site-packages\\numpy\\lib\\format.py',
+ 'PYMODULE'),
+ ('numpy.lib.introspect',
+ 'C:\\Python314\\Lib\\site-packages\\numpy\\lib\\introspect.py',
+ 'PYMODULE'),
+ ('numpy.lib.mixins',
+ 'C:\\Python314\\Lib\\site-packages\\numpy\\lib\\mixins.py',
+ 'PYMODULE'),
+ ('numpy.lib.npyio',
+ 'C:\\Python314\\Lib\\site-packages\\numpy\\lib\\npyio.py',
+ 'PYMODULE'),
+ ('numpy.lib.recfunctions',
+ 'C:\\Python314\\Lib\\site-packages\\numpy\\lib\\recfunctions.py',
+ 'PYMODULE'),
+ ('numpy.lib.scimath',
+ 'C:\\Python314\\Lib\\site-packages\\numpy\\lib\\scimath.py',
+ 'PYMODULE'),
+ ('numpy.lib.stride_tricks',
+ 'C:\\Python314\\Lib\\site-packages\\numpy\\lib\\stride_tricks.py',
+ 'PYMODULE'),
+ ('numpy.linalg',
+ 'C:\\Python314\\Lib\\site-packages\\numpy\\linalg\\__init__.py',
+ 'PYMODULE'),
+ ('numpy.linalg._linalg',
+ 'C:\\Python314\\Lib\\site-packages\\numpy\\linalg\\_linalg.py',
+ 'PYMODULE'),
+ ('numpy.ma',
+ 'C:\\Python314\\Lib\\site-packages\\numpy\\ma\\__init__.py',
+ 'PYMODULE'),
+ ('numpy.ma.core',
+ 'C:\\Python314\\Lib\\site-packages\\numpy\\ma\\core.py',
+ 'PYMODULE'),
+ ('numpy.ma.extras',
+ 'C:\\Python314\\Lib\\site-packages\\numpy\\ma\\extras.py',
+ 'PYMODULE'),
+ ('numpy.ma.mrecords',
+ 'C:\\Python314\\Lib\\site-packages\\numpy\\ma\\mrecords.py',
+ 'PYMODULE'),
+ ('numpy.matlib',
+ 'C:\\Python314\\Lib\\site-packages\\numpy\\matlib.py',
+ 'PYMODULE'),
+ ('numpy.matrixlib',
+ 'C:\\Python314\\Lib\\site-packages\\numpy\\matrixlib\\__init__.py',
+ 'PYMODULE'),
+ ('numpy.matrixlib.defmatrix',
+ 'C:\\Python314\\Lib\\site-packages\\numpy\\matrixlib\\defmatrix.py',
+ 'PYMODULE'),
+ ('numpy.polynomial',
+ 'C:\\Python314\\Lib\\site-packages\\numpy\\polynomial\\__init__.py',
+ 'PYMODULE'),
+ ('numpy.polynomial._polybase',
+ 'C:\\Python314\\Lib\\site-packages\\numpy\\polynomial\\_polybase.py',
+ 'PYMODULE'),
+ ('numpy.polynomial.chebyshev',
+ 'C:\\Python314\\Lib\\site-packages\\numpy\\polynomial\\chebyshev.py',
+ 'PYMODULE'),
+ ('numpy.polynomial.hermite',
+ 'C:\\Python314\\Lib\\site-packages\\numpy\\polynomial\\hermite.py',
+ 'PYMODULE'),
+ ('numpy.polynomial.hermite_e',
+ 'C:\\Python314\\Lib\\site-packages\\numpy\\polynomial\\hermite_e.py',
+ 'PYMODULE'),
+ ('numpy.polynomial.laguerre',
+ 'C:\\Python314\\Lib\\site-packages\\numpy\\polynomial\\laguerre.py',
+ 'PYMODULE'),
+ ('numpy.polynomial.legendre',
+ 'C:\\Python314\\Lib\\site-packages\\numpy\\polynomial\\legendre.py',
+ 'PYMODULE'),
+ ('numpy.polynomial.polynomial',
+ 'C:\\Python314\\Lib\\site-packages\\numpy\\polynomial\\polynomial.py',
+ 'PYMODULE'),
+ ('numpy.polynomial.polyutils',
+ 'C:\\Python314\\Lib\\site-packages\\numpy\\polynomial\\polyutils.py',
+ 'PYMODULE'),
+ ('numpy.random',
+ 'C:\\Python314\\Lib\\site-packages\\numpy\\random\\__init__.py',
+ 'PYMODULE'),
+ ('numpy.random._pickle',
+ 'C:\\Python314\\Lib\\site-packages\\numpy\\random\\_pickle.py',
+ 'PYMODULE'),
+ ('numpy.rec',
+ 'C:\\Python314\\Lib\\site-packages\\numpy\\rec\\__init__.py',
+ 'PYMODULE'),
+ ('numpy.strings',
+ 'C:\\Python314\\Lib\\site-packages\\numpy\\strings\\__init__.py',
+ 'PYMODULE'),
+ ('numpy.testing',
+ 'C:\\Python314\\Lib\\site-packages\\numpy\\testing\\__init__.py',
+ 'PYMODULE'),
+ ('numpy.testing._private',
+ 'C:\\Python314\\Lib\\site-packages\\numpy\\testing\\_private\\__init__.py',
+ 'PYMODULE'),
+ ('numpy.testing._private.extbuild',
+ 'C:\\Python314\\Lib\\site-packages\\numpy\\testing\\_private\\extbuild.py',
+ 'PYMODULE'),
+ ('numpy.testing._private.utils',
+ 'C:\\Python314\\Lib\\site-packages\\numpy\\testing\\_private\\utils.py',
+ 'PYMODULE'),
+ ('numpy.testing.overrides',
+ 'C:\\Python314\\Lib\\site-packages\\numpy\\testing\\overrides.py',
+ 'PYMODULE'),
+ ('numpy.typing',
+ 'C:\\Python314\\Lib\\site-packages\\numpy\\typing\\__init__.py',
+ 'PYMODULE'),
+ ('numpy.version',
+ 'C:\\Python314\\Lib\\site-packages\\numpy\\version.py',
+ 'PYMODULE'),
+ ('opcode', 'C:\\Python314\\Lib\\opcode.py', 'PYMODULE'),
+ ('openpyxl',
+ 'C:\\Python314\\Lib\\site-packages\\openpyxl\\__init__.py',
+ 'PYMODULE'),
+ ('openpyxl._constants',
+ 'C:\\Python314\\Lib\\site-packages\\openpyxl\\_constants.py',
+ 'PYMODULE'),
+ ('openpyxl.cell',
+ 'C:\\Python314\\Lib\\site-packages\\openpyxl\\cell\\__init__.py',
+ 'PYMODULE'),
+ ('openpyxl.cell._writer',
+ 'C:\\Python314\\Lib\\site-packages\\openpyxl\\cell\\_writer.py',
+ 'PYMODULE'),
+ ('openpyxl.cell.cell',
+ 'C:\\Python314\\Lib\\site-packages\\openpyxl\\cell\\cell.py',
+ 'PYMODULE'),
+ ('openpyxl.cell.read_only',
+ 'C:\\Python314\\Lib\\site-packages\\openpyxl\\cell\\read_only.py',
+ 'PYMODULE'),
+ ('openpyxl.cell.rich_text',
+ 'C:\\Python314\\Lib\\site-packages\\openpyxl\\cell\\rich_text.py',
+ 'PYMODULE'),
+ ('openpyxl.cell.text',
+ 'C:\\Python314\\Lib\\site-packages\\openpyxl\\cell\\text.py',
+ 'PYMODULE'),
+ ('openpyxl.chart',
+ 'C:\\Python314\\Lib\\site-packages\\openpyxl\\chart\\__init__.py',
+ 'PYMODULE'),
+ ('openpyxl.chart._3d',
+ 'C:\\Python314\\Lib\\site-packages\\openpyxl\\chart\\_3d.py',
+ 'PYMODULE'),
+ ('openpyxl.chart._chart',
+ 'C:\\Python314\\Lib\\site-packages\\openpyxl\\chart\\_chart.py',
+ 'PYMODULE'),
+ ('openpyxl.chart.area_chart',
+ 'C:\\Python314\\Lib\\site-packages\\openpyxl\\chart\\area_chart.py',
+ 'PYMODULE'),
+ ('openpyxl.chart.axis',
+ 'C:\\Python314\\Lib\\site-packages\\openpyxl\\chart\\axis.py',
+ 'PYMODULE'),
+ ('openpyxl.chart.bar_chart',
+ 'C:\\Python314\\Lib\\site-packages\\openpyxl\\chart\\bar_chart.py',
+ 'PYMODULE'),
+ ('openpyxl.chart.bubble_chart',
+ 'C:\\Python314\\Lib\\site-packages\\openpyxl\\chart\\bubble_chart.py',
+ 'PYMODULE'),
+ ('openpyxl.chart.chartspace',
+ 'C:\\Python314\\Lib\\site-packages\\openpyxl\\chart\\chartspace.py',
+ 'PYMODULE'),
+ ('openpyxl.chart.data_source',
+ 'C:\\Python314\\Lib\\site-packages\\openpyxl\\chart\\data_source.py',
+ 'PYMODULE'),
+ ('openpyxl.chart.descriptors',
+ 'C:\\Python314\\Lib\\site-packages\\openpyxl\\chart\\descriptors.py',
+ 'PYMODULE'),
+ ('openpyxl.chart.error_bar',
+ 'C:\\Python314\\Lib\\site-packages\\openpyxl\\chart\\error_bar.py',
+ 'PYMODULE'),
+ ('openpyxl.chart.label',
+ 'C:\\Python314\\Lib\\site-packages\\openpyxl\\chart\\label.py',
+ 'PYMODULE'),
+ ('openpyxl.chart.layout',
+ 'C:\\Python314\\Lib\\site-packages\\openpyxl\\chart\\layout.py',
+ 'PYMODULE'),
+ ('openpyxl.chart.legend',
+ 'C:\\Python314\\Lib\\site-packages\\openpyxl\\chart\\legend.py',
+ 'PYMODULE'),
+ ('openpyxl.chart.line_chart',
+ 'C:\\Python314\\Lib\\site-packages\\openpyxl\\chart\\line_chart.py',
+ 'PYMODULE'),
+ ('openpyxl.chart.marker',
+ 'C:\\Python314\\Lib\\site-packages\\openpyxl\\chart\\marker.py',
+ 'PYMODULE'),
+ ('openpyxl.chart.picture',
+ 'C:\\Python314\\Lib\\site-packages\\openpyxl\\chart\\picture.py',
+ 'PYMODULE'),
+ ('openpyxl.chart.pie_chart',
+ 'C:\\Python314\\Lib\\site-packages\\openpyxl\\chart\\pie_chart.py',
+ 'PYMODULE'),
+ ('openpyxl.chart.pivot',
+ 'C:\\Python314\\Lib\\site-packages\\openpyxl\\chart\\pivot.py',
+ 'PYMODULE'),
+ ('openpyxl.chart.plotarea',
+ 'C:\\Python314\\Lib\\site-packages\\openpyxl\\chart\\plotarea.py',
+ 'PYMODULE'),
+ ('openpyxl.chart.print_settings',
+ 'C:\\Python314\\Lib\\site-packages\\openpyxl\\chart\\print_settings.py',
+ 'PYMODULE'),
+ ('openpyxl.chart.radar_chart',
+ 'C:\\Python314\\Lib\\site-packages\\openpyxl\\chart\\radar_chart.py',
+ 'PYMODULE'),
+ ('openpyxl.chart.reader',
+ 'C:\\Python314\\Lib\\site-packages\\openpyxl\\chart\\reader.py',
+ 'PYMODULE'),
+ ('openpyxl.chart.reference',
+ 'C:\\Python314\\Lib\\site-packages\\openpyxl\\chart\\reference.py',
+ 'PYMODULE'),
+ ('openpyxl.chart.scatter_chart',
+ 'C:\\Python314\\Lib\\site-packages\\openpyxl\\chart\\scatter_chart.py',
+ 'PYMODULE'),
+ ('openpyxl.chart.series',
+ 'C:\\Python314\\Lib\\site-packages\\openpyxl\\chart\\series.py',
+ 'PYMODULE'),
+ ('openpyxl.chart.series_factory',
+ 'C:\\Python314\\Lib\\site-packages\\openpyxl\\chart\\series_factory.py',
+ 'PYMODULE'),
+ ('openpyxl.chart.shapes',
+ 'C:\\Python314\\Lib\\site-packages\\openpyxl\\chart\\shapes.py',
+ 'PYMODULE'),
+ ('openpyxl.chart.stock_chart',
+ 'C:\\Python314\\Lib\\site-packages\\openpyxl\\chart\\stock_chart.py',
+ 'PYMODULE'),
+ ('openpyxl.chart.surface_chart',
+ 'C:\\Python314\\Lib\\site-packages\\openpyxl\\chart\\surface_chart.py',
+ 'PYMODULE'),
+ ('openpyxl.chart.text',
+ 'C:\\Python314\\Lib\\site-packages\\openpyxl\\chart\\text.py',
+ 'PYMODULE'),
+ ('openpyxl.chart.title',
+ 'C:\\Python314\\Lib\\site-packages\\openpyxl\\chart\\title.py',
+ 'PYMODULE'),
+ ('openpyxl.chart.trendline',
+ 'C:\\Python314\\Lib\\site-packages\\openpyxl\\chart\\trendline.py',
+ 'PYMODULE'),
+ ('openpyxl.chart.updown_bars',
+ 'C:\\Python314\\Lib\\site-packages\\openpyxl\\chart\\updown_bars.py',
+ 'PYMODULE'),
+ ('openpyxl.chartsheet',
+ 'C:\\Python314\\Lib\\site-packages\\openpyxl\\chartsheet\\__init__.py',
+ 'PYMODULE'),
+ ('openpyxl.chartsheet.chartsheet',
+ 'C:\\Python314\\Lib\\site-packages\\openpyxl\\chartsheet\\chartsheet.py',
+ 'PYMODULE'),
+ ('openpyxl.chartsheet.custom',
+ 'C:\\Python314\\Lib\\site-packages\\openpyxl\\chartsheet\\custom.py',
+ 'PYMODULE'),
+ ('openpyxl.chartsheet.properties',
+ 'C:\\Python314\\Lib\\site-packages\\openpyxl\\chartsheet\\properties.py',
+ 'PYMODULE'),
+ ('openpyxl.chartsheet.protection',
+ 'C:\\Python314\\Lib\\site-packages\\openpyxl\\chartsheet\\protection.py',
+ 'PYMODULE'),
+ ('openpyxl.chartsheet.publish',
+ 'C:\\Python314\\Lib\\site-packages\\openpyxl\\chartsheet\\publish.py',
+ 'PYMODULE'),
+ ('openpyxl.chartsheet.relation',
+ 'C:\\Python314\\Lib\\site-packages\\openpyxl\\chartsheet\\relation.py',
+ 'PYMODULE'),
+ ('openpyxl.chartsheet.views',
+ 'C:\\Python314\\Lib\\site-packages\\openpyxl\\chartsheet\\views.py',
+ 'PYMODULE'),
+ ('openpyxl.comments',
+ 'C:\\Python314\\Lib\\site-packages\\openpyxl\\comments\\__init__.py',
+ 'PYMODULE'),
+ ('openpyxl.comments.author',
+ 'C:\\Python314\\Lib\\site-packages\\openpyxl\\comments\\author.py',
+ 'PYMODULE'),
+ ('openpyxl.comments.comment_sheet',
+ 'C:\\Python314\\Lib\\site-packages\\openpyxl\\comments\\comment_sheet.py',
+ 'PYMODULE'),
+ ('openpyxl.comments.comments',
+ 'C:\\Python314\\Lib\\site-packages\\openpyxl\\comments\\comments.py',
+ 'PYMODULE'),
+ ('openpyxl.comments.shape_writer',
+ 'C:\\Python314\\Lib\\site-packages\\openpyxl\\comments\\shape_writer.py',
+ 'PYMODULE'),
+ ('openpyxl.compat',
+ 'C:\\Python314\\Lib\\site-packages\\openpyxl\\compat\\__init__.py',
+ 'PYMODULE'),
+ ('openpyxl.compat.numbers',
+ 'C:\\Python314\\Lib\\site-packages\\openpyxl\\compat\\numbers.py',
+ 'PYMODULE'),
+ ('openpyxl.compat.strings',
+ 'C:\\Python314\\Lib\\site-packages\\openpyxl\\compat\\strings.py',
+ 'PYMODULE'),
+ ('openpyxl.descriptors',
+ 'C:\\Python314\\Lib\\site-packages\\openpyxl\\descriptors\\__init__.py',
+ 'PYMODULE'),
+ ('openpyxl.descriptors.base',
+ 'C:\\Python314\\Lib\\site-packages\\openpyxl\\descriptors\\base.py',
+ 'PYMODULE'),
+ ('openpyxl.descriptors.container',
+ 'C:\\Python314\\Lib\\site-packages\\openpyxl\\descriptors\\container.py',
+ 'PYMODULE'),
+ ('openpyxl.descriptors.excel',
+ 'C:\\Python314\\Lib\\site-packages\\openpyxl\\descriptors\\excel.py',
+ 'PYMODULE'),
+ ('openpyxl.descriptors.namespace',
+ 'C:\\Python314\\Lib\\site-packages\\openpyxl\\descriptors\\namespace.py',
+ 'PYMODULE'),
+ ('openpyxl.descriptors.nested',
+ 'C:\\Python314\\Lib\\site-packages\\openpyxl\\descriptors\\nested.py',
+ 'PYMODULE'),
+ ('openpyxl.descriptors.sequence',
+ 'C:\\Python314\\Lib\\site-packages\\openpyxl\\descriptors\\sequence.py',
+ 'PYMODULE'),
+ ('openpyxl.descriptors.serialisable',
+ 'C:\\Python314\\Lib\\site-packages\\openpyxl\\descriptors\\serialisable.py',
+ 'PYMODULE'),
+ ('openpyxl.drawing',
+ 'C:\\Python314\\Lib\\site-packages\\openpyxl\\drawing\\__init__.py',
+ 'PYMODULE'),
+ ('openpyxl.drawing.colors',
+ 'C:\\Python314\\Lib\\site-packages\\openpyxl\\drawing\\colors.py',
+ 'PYMODULE'),
+ ('openpyxl.drawing.connector',
+ 'C:\\Python314\\Lib\\site-packages\\openpyxl\\drawing\\connector.py',
+ 'PYMODULE'),
+ ('openpyxl.drawing.drawing',
+ 'C:\\Python314\\Lib\\site-packages\\openpyxl\\drawing\\drawing.py',
+ 'PYMODULE'),
+ ('openpyxl.drawing.effect',
+ 'C:\\Python314\\Lib\\site-packages\\openpyxl\\drawing\\effect.py',
+ 'PYMODULE'),
+ ('openpyxl.drawing.fill',
+ 'C:\\Python314\\Lib\\site-packages\\openpyxl\\drawing\\fill.py',
+ 'PYMODULE'),
+ ('openpyxl.drawing.geometry',
+ 'C:\\Python314\\Lib\\site-packages\\openpyxl\\drawing\\geometry.py',
+ 'PYMODULE'),
+ ('openpyxl.drawing.graphic',
+ 'C:\\Python314\\Lib\\site-packages\\openpyxl\\drawing\\graphic.py',
+ 'PYMODULE'),
+ ('openpyxl.drawing.image',
+ 'C:\\Python314\\Lib\\site-packages\\openpyxl\\drawing\\image.py',
+ 'PYMODULE'),
+ ('openpyxl.drawing.line',
+ 'C:\\Python314\\Lib\\site-packages\\openpyxl\\drawing\\line.py',
+ 'PYMODULE'),
+ ('openpyxl.drawing.picture',
+ 'C:\\Python314\\Lib\\site-packages\\openpyxl\\drawing\\picture.py',
+ 'PYMODULE'),
+ ('openpyxl.drawing.properties',
+ 'C:\\Python314\\Lib\\site-packages\\openpyxl\\drawing\\properties.py',
+ 'PYMODULE'),
+ ('openpyxl.drawing.relation',
+ 'C:\\Python314\\Lib\\site-packages\\openpyxl\\drawing\\relation.py',
+ 'PYMODULE'),
+ ('openpyxl.drawing.spreadsheet_drawing',
+ 'C:\\Python314\\Lib\\site-packages\\openpyxl\\drawing\\spreadsheet_drawing.py',
+ 'PYMODULE'),
+ ('openpyxl.drawing.text',
+ 'C:\\Python314\\Lib\\site-packages\\openpyxl\\drawing\\text.py',
+ 'PYMODULE'),
+ ('openpyxl.drawing.xdr',
+ 'C:\\Python314\\Lib\\site-packages\\openpyxl\\drawing\\xdr.py',
+ 'PYMODULE'),
+ ('openpyxl.formatting',
+ 'C:\\Python314\\Lib\\site-packages\\openpyxl\\formatting\\__init__.py',
+ 'PYMODULE'),
+ ('openpyxl.formatting.formatting',
+ 'C:\\Python314\\Lib\\site-packages\\openpyxl\\formatting\\formatting.py',
+ 'PYMODULE'),
+ ('openpyxl.formatting.rule',
+ 'C:\\Python314\\Lib\\site-packages\\openpyxl\\formatting\\rule.py',
+ 'PYMODULE'),
+ ('openpyxl.formula',
+ 'C:\\Python314\\Lib\\site-packages\\openpyxl\\formula\\__init__.py',
+ 'PYMODULE'),
+ ('openpyxl.formula.tokenizer',
+ 'C:\\Python314\\Lib\\site-packages\\openpyxl\\formula\\tokenizer.py',
+ 'PYMODULE'),
+ ('openpyxl.formula.translate',
+ 'C:\\Python314\\Lib\\site-packages\\openpyxl\\formula\\translate.py',
+ 'PYMODULE'),
+ ('openpyxl.packaging',
+ 'C:\\Python314\\Lib\\site-packages\\openpyxl\\packaging\\__init__.py',
+ 'PYMODULE'),
+ ('openpyxl.packaging.core',
+ 'C:\\Python314\\Lib\\site-packages\\openpyxl\\packaging\\core.py',
+ 'PYMODULE'),
+ ('openpyxl.packaging.custom',
+ 'C:\\Python314\\Lib\\site-packages\\openpyxl\\packaging\\custom.py',
+ 'PYMODULE'),
+ ('openpyxl.packaging.extended',
+ 'C:\\Python314\\Lib\\site-packages\\openpyxl\\packaging\\extended.py',
+ 'PYMODULE'),
+ ('openpyxl.packaging.manifest',
+ 'C:\\Python314\\Lib\\site-packages\\openpyxl\\packaging\\manifest.py',
+ 'PYMODULE'),
+ ('openpyxl.packaging.relationship',
+ 'C:\\Python314\\Lib\\site-packages\\openpyxl\\packaging\\relationship.py',
+ 'PYMODULE'),
+ ('openpyxl.packaging.workbook',
+ 'C:\\Python314\\Lib\\site-packages\\openpyxl\\packaging\\workbook.py',
+ 'PYMODULE'),
+ ('openpyxl.pivot',
+ 'C:\\Python314\\Lib\\site-packages\\openpyxl\\pivot\\__init__.py',
+ 'PYMODULE'),
+ ('openpyxl.pivot.cache',
+ 'C:\\Python314\\Lib\\site-packages\\openpyxl\\pivot\\cache.py',
+ 'PYMODULE'),
+ ('openpyxl.pivot.fields',
+ 'C:\\Python314\\Lib\\site-packages\\openpyxl\\pivot\\fields.py',
+ 'PYMODULE'),
+ ('openpyxl.pivot.record',
+ 'C:\\Python314\\Lib\\site-packages\\openpyxl\\pivot\\record.py',
+ 'PYMODULE'),
+ ('openpyxl.pivot.table',
+ 'C:\\Python314\\Lib\\site-packages\\openpyxl\\pivot\\table.py',
+ 'PYMODULE'),
+ ('openpyxl.reader',
+ 'C:\\Python314\\Lib\\site-packages\\openpyxl\\reader\\__init__.py',
+ 'PYMODULE'),
+ ('openpyxl.reader.drawings',
+ 'C:\\Python314\\Lib\\site-packages\\openpyxl\\reader\\drawings.py',
+ 'PYMODULE'),
+ ('openpyxl.reader.excel',
+ 'C:\\Python314\\Lib\\site-packages\\openpyxl\\reader\\excel.py',
+ 'PYMODULE'),
+ ('openpyxl.reader.strings',
+ 'C:\\Python314\\Lib\\site-packages\\openpyxl\\reader\\strings.py',
+ 'PYMODULE'),
+ ('openpyxl.reader.workbook',
+ 'C:\\Python314\\Lib\\site-packages\\openpyxl\\reader\\workbook.py',
+ 'PYMODULE'),
+ ('openpyxl.styles',
+ 'C:\\Python314\\Lib\\site-packages\\openpyxl\\styles\\__init__.py',
+ 'PYMODULE'),
+ ('openpyxl.styles.alignment',
+ 'C:\\Python314\\Lib\\site-packages\\openpyxl\\styles\\alignment.py',
+ 'PYMODULE'),
+ ('openpyxl.styles.borders',
+ 'C:\\Python314\\Lib\\site-packages\\openpyxl\\styles\\borders.py',
+ 'PYMODULE'),
+ ('openpyxl.styles.builtins',
+ 'C:\\Python314\\Lib\\site-packages\\openpyxl\\styles\\builtins.py',
+ 'PYMODULE'),
+ ('openpyxl.styles.cell_style',
+ 'C:\\Python314\\Lib\\site-packages\\openpyxl\\styles\\cell_style.py',
+ 'PYMODULE'),
+ ('openpyxl.styles.colors',
+ 'C:\\Python314\\Lib\\site-packages\\openpyxl\\styles\\colors.py',
+ 'PYMODULE'),
+ ('openpyxl.styles.differential',
+ 'C:\\Python314\\Lib\\site-packages\\openpyxl\\styles\\differential.py',
+ 'PYMODULE'),
+ ('openpyxl.styles.fills',
+ 'C:\\Python314\\Lib\\site-packages\\openpyxl\\styles\\fills.py',
+ 'PYMODULE'),
+ ('openpyxl.styles.fonts',
+ 'C:\\Python314\\Lib\\site-packages\\openpyxl\\styles\\fonts.py',
+ 'PYMODULE'),
+ ('openpyxl.styles.named_styles',
+ 'C:\\Python314\\Lib\\site-packages\\openpyxl\\styles\\named_styles.py',
+ 'PYMODULE'),
+ ('openpyxl.styles.numbers',
+ 'C:\\Python314\\Lib\\site-packages\\openpyxl\\styles\\numbers.py',
+ 'PYMODULE'),
+ ('openpyxl.styles.protection',
+ 'C:\\Python314\\Lib\\site-packages\\openpyxl\\styles\\protection.py',
+ 'PYMODULE'),
+ ('openpyxl.styles.proxy',
+ 'C:\\Python314\\Lib\\site-packages\\openpyxl\\styles\\proxy.py',
+ 'PYMODULE'),
+ ('openpyxl.styles.styleable',
+ 'C:\\Python314\\Lib\\site-packages\\openpyxl\\styles\\styleable.py',
+ 'PYMODULE'),
+ ('openpyxl.styles.stylesheet',
+ 'C:\\Python314\\Lib\\site-packages\\openpyxl\\styles\\stylesheet.py',
+ 'PYMODULE'),
+ ('openpyxl.styles.table',
+ 'C:\\Python314\\Lib\\site-packages\\openpyxl\\styles\\table.py',
+ 'PYMODULE'),
+ ('openpyxl.utils',
+ 'C:\\Python314\\Lib\\site-packages\\openpyxl\\utils\\__init__.py',
+ 'PYMODULE'),
+ ('openpyxl.utils.bound_dictionary',
+ 'C:\\Python314\\Lib\\site-packages\\openpyxl\\utils\\bound_dictionary.py',
+ 'PYMODULE'),
+ ('openpyxl.utils.cell',
+ 'C:\\Python314\\Lib\\site-packages\\openpyxl\\utils\\cell.py',
+ 'PYMODULE'),
+ ('openpyxl.utils.datetime',
+ 'C:\\Python314\\Lib\\site-packages\\openpyxl\\utils\\datetime.py',
+ 'PYMODULE'),
+ ('openpyxl.utils.escape',
+ 'C:\\Python314\\Lib\\site-packages\\openpyxl\\utils\\escape.py',
+ 'PYMODULE'),
+ ('openpyxl.utils.exceptions',
+ 'C:\\Python314\\Lib\\site-packages\\openpyxl\\utils\\exceptions.py',
+ 'PYMODULE'),
+ ('openpyxl.utils.formulas',
+ 'C:\\Python314\\Lib\\site-packages\\openpyxl\\utils\\formulas.py',
+ 'PYMODULE'),
+ ('openpyxl.utils.indexed_list',
+ 'C:\\Python314\\Lib\\site-packages\\openpyxl\\utils\\indexed_list.py',
+ 'PYMODULE'),
+ ('openpyxl.utils.protection',
+ 'C:\\Python314\\Lib\\site-packages\\openpyxl\\utils\\protection.py',
+ 'PYMODULE'),
+ ('openpyxl.utils.units',
+ 'C:\\Python314\\Lib\\site-packages\\openpyxl\\utils\\units.py',
+ 'PYMODULE'),
+ ('openpyxl.workbook',
+ 'C:\\Python314\\Lib\\site-packages\\openpyxl\\workbook\\__init__.py',
+ 'PYMODULE'),
+ ('openpyxl.workbook._writer',
+ 'C:\\Python314\\Lib\\site-packages\\openpyxl\\workbook\\_writer.py',
+ 'PYMODULE'),
+ ('openpyxl.workbook.child',
+ 'C:\\Python314\\Lib\\site-packages\\openpyxl\\workbook\\child.py',
+ 'PYMODULE'),
+ ('openpyxl.workbook.defined_name',
+ 'C:\\Python314\\Lib\\site-packages\\openpyxl\\workbook\\defined_name.py',
+ 'PYMODULE'),
+ ('openpyxl.workbook.external_link',
+ 'C:\\Python314\\Lib\\site-packages\\openpyxl\\workbook\\external_link\\__init__.py',
+ 'PYMODULE'),
+ ('openpyxl.workbook.external_link.external',
+ 'C:\\Python314\\Lib\\site-packages\\openpyxl\\workbook\\external_link\\external.py',
+ 'PYMODULE'),
+ ('openpyxl.workbook.external_reference',
+ 'C:\\Python314\\Lib\\site-packages\\openpyxl\\workbook\\external_reference.py',
+ 'PYMODULE'),
+ ('openpyxl.workbook.function_group',
+ 'C:\\Python314\\Lib\\site-packages\\openpyxl\\workbook\\function_group.py',
+ 'PYMODULE'),
+ ('openpyxl.workbook.properties',
+ 'C:\\Python314\\Lib\\site-packages\\openpyxl\\workbook\\properties.py',
+ 'PYMODULE'),
+ ('openpyxl.workbook.protection',
+ 'C:\\Python314\\Lib\\site-packages\\openpyxl\\workbook\\protection.py',
+ 'PYMODULE'),
+ ('openpyxl.workbook.smart_tags',
+ 'C:\\Python314\\Lib\\site-packages\\openpyxl\\workbook\\smart_tags.py',
+ 'PYMODULE'),
+ ('openpyxl.workbook.views',
+ 'C:\\Python314\\Lib\\site-packages\\openpyxl\\workbook\\views.py',
+ 'PYMODULE'),
+ ('openpyxl.workbook.web',
+ 'C:\\Python314\\Lib\\site-packages\\openpyxl\\workbook\\web.py',
+ 'PYMODULE'),
+ ('openpyxl.workbook.workbook',
+ 'C:\\Python314\\Lib\\site-packages\\openpyxl\\workbook\\workbook.py',
+ 'PYMODULE'),
+ ('openpyxl.worksheet',
+ 'C:\\Python314\\Lib\\site-packages\\openpyxl\\worksheet\\__init__.py',
+ 'PYMODULE'),
+ ('openpyxl.worksheet._read_only',
+ 'C:\\Python314\\Lib\\site-packages\\openpyxl\\worksheet\\_read_only.py',
+ 'PYMODULE'),
+ ('openpyxl.worksheet._reader',
+ 'C:\\Python314\\Lib\\site-packages\\openpyxl\\worksheet\\_reader.py',
+ 'PYMODULE'),
+ ('openpyxl.worksheet._write_only',
+ 'C:\\Python314\\Lib\\site-packages\\openpyxl\\worksheet\\_write_only.py',
+ 'PYMODULE'),
+ ('openpyxl.worksheet._writer',
+ 'C:\\Python314\\Lib\\site-packages\\openpyxl\\worksheet\\_writer.py',
+ 'PYMODULE'),
+ ('openpyxl.worksheet.cell_range',
+ 'C:\\Python314\\Lib\\site-packages\\openpyxl\\worksheet\\cell_range.py',
+ 'PYMODULE'),
+ ('openpyxl.worksheet.copier',
+ 'C:\\Python314\\Lib\\site-packages\\openpyxl\\worksheet\\copier.py',
+ 'PYMODULE'),
+ ('openpyxl.worksheet.datavalidation',
+ 'C:\\Python314\\Lib\\site-packages\\openpyxl\\worksheet\\datavalidation.py',
+ 'PYMODULE'),
+ ('openpyxl.worksheet.dimensions',
+ 'C:\\Python314\\Lib\\site-packages\\openpyxl\\worksheet\\dimensions.py',
+ 'PYMODULE'),
+ ('openpyxl.worksheet.drawing',
+ 'C:\\Python314\\Lib\\site-packages\\openpyxl\\worksheet\\drawing.py',
+ 'PYMODULE'),
+ ('openpyxl.worksheet.filters',
+ 'C:\\Python314\\Lib\\site-packages\\openpyxl\\worksheet\\filters.py',
+ 'PYMODULE'),
+ ('openpyxl.worksheet.formula',
+ 'C:\\Python314\\Lib\\site-packages\\openpyxl\\worksheet\\formula.py',
+ 'PYMODULE'),
+ ('openpyxl.worksheet.header_footer',
+ 'C:\\Python314\\Lib\\site-packages\\openpyxl\\worksheet\\header_footer.py',
+ 'PYMODULE'),
+ ('openpyxl.worksheet.hyperlink',
+ 'C:\\Python314\\Lib\\site-packages\\openpyxl\\worksheet\\hyperlink.py',
+ 'PYMODULE'),
+ ('openpyxl.worksheet.merge',
+ 'C:\\Python314\\Lib\\site-packages\\openpyxl\\worksheet\\merge.py',
+ 'PYMODULE'),
+ ('openpyxl.worksheet.page',
+ 'C:\\Python314\\Lib\\site-packages\\openpyxl\\worksheet\\page.py',
+ 'PYMODULE'),
+ ('openpyxl.worksheet.pagebreak',
+ 'C:\\Python314\\Lib\\site-packages\\openpyxl\\worksheet\\pagebreak.py',
+ 'PYMODULE'),
+ ('openpyxl.worksheet.print_settings',
+ 'C:\\Python314\\Lib\\site-packages\\openpyxl\\worksheet\\print_settings.py',
+ 'PYMODULE'),
+ ('openpyxl.worksheet.properties',
+ 'C:\\Python314\\Lib\\site-packages\\openpyxl\\worksheet\\properties.py',
+ 'PYMODULE'),
+ ('openpyxl.worksheet.protection',
+ 'C:\\Python314\\Lib\\site-packages\\openpyxl\\worksheet\\protection.py',
+ 'PYMODULE'),
+ ('openpyxl.worksheet.related',
+ 'C:\\Python314\\Lib\\site-packages\\openpyxl\\worksheet\\related.py',
+ 'PYMODULE'),
+ ('openpyxl.worksheet.scenario',
+ 'C:\\Python314\\Lib\\site-packages\\openpyxl\\worksheet\\scenario.py',
+ 'PYMODULE'),
+ ('openpyxl.worksheet.table',
+ 'C:\\Python314\\Lib\\site-packages\\openpyxl\\worksheet\\table.py',
+ 'PYMODULE'),
+ ('openpyxl.worksheet.views',
+ 'C:\\Python314\\Lib\\site-packages\\openpyxl\\worksheet\\views.py',
+ 'PYMODULE'),
+ ('openpyxl.worksheet.worksheet',
+ 'C:\\Python314\\Lib\\site-packages\\openpyxl\\worksheet\\worksheet.py',
+ 'PYMODULE'),
+ ('openpyxl.writer',
+ 'C:\\Python314\\Lib\\site-packages\\openpyxl\\writer\\__init__.py',
+ 'PYMODULE'),
+ ('openpyxl.writer.excel',
+ 'C:\\Python314\\Lib\\site-packages\\openpyxl\\writer\\excel.py',
+ 'PYMODULE'),
+ ('openpyxl.writer.theme',
+ 'C:\\Python314\\Lib\\site-packages\\openpyxl\\writer\\theme.py',
+ 'PYMODULE'),
+ ('openpyxl.xml',
+ 'C:\\Python314\\Lib\\site-packages\\openpyxl\\xml\\__init__.py',
+ 'PYMODULE'),
+ ('openpyxl.xml.constants',
+ 'C:\\Python314\\Lib\\site-packages\\openpyxl\\xml\\constants.py',
+ 'PYMODULE'),
+ ('openpyxl.xml.functions',
+ 'C:\\Python314\\Lib\\site-packages\\openpyxl\\xml\\functions.py',
+ 'PYMODULE'),
+ ('pathlib', 'C:\\Python314\\Lib\\pathlib\\__init__.py', 'PYMODULE'),
+ ('pathlib._os', 'C:\\Python314\\Lib\\pathlib\\_os.py', 'PYMODULE'),
+ ('pdb', 'C:\\Python314\\Lib\\pdb.py', 'PYMODULE'),
+ ('pickle', 'C:\\Python314\\Lib\\pickle.py', 'PYMODULE'),
+ ('pkgutil', 'C:\\Python314\\Lib\\pkgutil.py', 'PYMODULE'),
+ ('platform', 'C:\\Python314\\Lib\\platform.py', 'PYMODULE'),
+ ('pprint', 'C:\\Python314\\Lib\\pprint.py', 'PYMODULE'),
+ ('py_compile', 'C:\\Python314\\Lib\\py_compile.py', 'PYMODULE'),
+ ('pydoc', 'C:\\Python314\\Lib\\pydoc.py', 'PYMODULE'),
+ ('pydoc_data', 'C:\\Python314\\Lib\\pydoc_data\\__init__.py', 'PYMODULE'),
+ ('pydoc_data.module_docs',
+ 'C:\\Python314\\Lib\\pydoc_data\\module_docs.py',
+ 'PYMODULE'),
+ ('pydoc_data.topics',
+ 'C:\\Python314\\Lib\\pydoc_data\\topics.py',
+ 'PYMODULE'),
+ ('queue', 'C:\\Python314\\Lib\\queue.py', 'PYMODULE'),
+ ('quopri', 'C:\\Python314\\Lib\\quopri.py', 'PYMODULE'),
+ ('random', 'C:\\Python314\\Lib\\random.py', 'PYMODULE'),
+ ('rlcompleter', 'C:\\Python314\\Lib\\rlcompleter.py', 'PYMODULE'),
+ ('runpy', 'C:\\Python314\\Lib\\runpy.py', 'PYMODULE'),
+ ('secrets', 'C:\\Python314\\Lib\\secrets.py', 'PYMODULE'),
+ ('selectors', 'C:\\Python314\\Lib\\selectors.py', 'PYMODULE'),
+ ('sensor_stream_pb2',
+ 'D:\\JE-Skin\\devkit\\sensor_stream_pb2.py',
+ 'PYMODULE'),
+ ('sensor_stream_pb2_grpc',
+ 'D:\\JE-Skin\\devkit\\sensor_stream_pb2_grpc.py',
+ 'PYMODULE'),
+ ('shlex', 'C:\\Python314\\Lib\\shlex.py', 'PYMODULE'),
+ ('shutil', 'C:\\Python314\\Lib\\shutil.py', 'PYMODULE'),
+ ('signal', 'C:\\Python314\\Lib\\signal.py', 'PYMODULE'),
+ ('socket', 'C:\\Python314\\Lib\\socket.py', 'PYMODULE'),
+ ('socketserver', 'C:\\Python314\\Lib\\socketserver.py', 'PYMODULE'),
+ ('ssl', 'C:\\Python314\\Lib\\ssl.py', 'PYMODULE'),
+ ('statistics', 'C:\\Python314\\Lib\\statistics.py', 'PYMODULE'),
+ ('string', 'C:\\Python314\\Lib\\string\\__init__.py', 'PYMODULE'),
+ ('stringprep', 'C:\\Python314\\Lib\\stringprep.py', 'PYMODULE'),
+ ('subprocess', 'C:\\Python314\\Lib\\subprocess.py', 'PYMODULE'),
+ ('sysconfig', 'C:\\Python314\\Lib\\sysconfig\\__init__.py', 'PYMODULE'),
+ ('tarfile', 'C:\\Python314\\Lib\\tarfile.py', 'PYMODULE'),
+ ('tempfile', 'C:\\Python314\\Lib\\tempfile.py', 'PYMODULE'),
+ ('textwrap', 'C:\\Python314\\Lib\\textwrap.py', 'PYMODULE'),
+ ('threading', 'C:\\Python314\\Lib\\threading.py', 'PYMODULE'),
+ ('token', 'C:\\Python314\\Lib\\token.py', 'PYMODULE'),
+ ('tokenize', 'C:\\Python314\\Lib\\tokenize.py', 'PYMODULE'),
+ ('tracemalloc', 'C:\\Python314\\Lib\\tracemalloc.py', 'PYMODULE'),
+ ('tty', 'C:\\Python314\\Lib\\tty.py', 'PYMODULE'),
+ ('typing', 'C:\\Python314\\Lib\\typing.py', 'PYMODULE'),
+ ('typing_extensions',
+ 'C:\\Python314\\Lib\\site-packages\\typing_extensions.py',
+ 'PYMODULE'),
+ ('unittest', 'C:\\Python314\\Lib\\unittest\\__init__.py', 'PYMODULE'),
+ ('unittest._log', 'C:\\Python314\\Lib\\unittest\\_log.py', 'PYMODULE'),
+ ('unittest.async_case',
+ 'C:\\Python314\\Lib\\unittest\\async_case.py',
+ 'PYMODULE'),
+ ('unittest.case', 'C:\\Python314\\Lib\\unittest\\case.py', 'PYMODULE'),
+ ('unittest.loader', 'C:\\Python314\\Lib\\unittest\\loader.py', 'PYMODULE'),
+ ('unittest.main', 'C:\\Python314\\Lib\\unittest\\main.py', 'PYMODULE'),
+ ('unittest.result', 'C:\\Python314\\Lib\\unittest\\result.py', 'PYMODULE'),
+ ('unittest.runner', 'C:\\Python314\\Lib\\unittest\\runner.py', 'PYMODULE'),
+ ('unittest.signals', 'C:\\Python314\\Lib\\unittest\\signals.py', 'PYMODULE'),
+ ('unittest.suite', 'C:\\Python314\\Lib\\unittest\\suite.py', 'PYMODULE'),
+ ('unittest.util', 'C:\\Python314\\Lib\\unittest\\util.py', 'PYMODULE'),
+ ('urllib', 'C:\\Python314\\Lib\\urllib\\__init__.py', 'PYMODULE'),
+ ('urllib.error', 'C:\\Python314\\Lib\\urllib\\error.py', 'PYMODULE'),
+ ('urllib.parse', 'C:\\Python314\\Lib\\urllib\\parse.py', 'PYMODULE'),
+ ('urllib.request', 'C:\\Python314\\Lib\\urllib\\request.py', 'PYMODULE'),
+ ('urllib.response', 'C:\\Python314\\Lib\\urllib\\response.py', 'PYMODULE'),
+ ('webbrowser', 'C:\\Python314\\Lib\\webbrowser.py', 'PYMODULE'),
+ ('xml', 'C:\\Python314\\Lib\\xml\\__init__.py', 'PYMODULE'),
+ ('xml.etree', 'C:\\Python314\\Lib\\xml\\etree\\__init__.py', 'PYMODULE'),
+ ('xml.etree.ElementInclude',
+ 'C:\\Python314\\Lib\\xml\\etree\\ElementInclude.py',
+ 'PYMODULE'),
+ ('xml.etree.ElementPath',
+ 'C:\\Python314\\Lib\\xml\\etree\\ElementPath.py',
+ 'PYMODULE'),
+ ('xml.etree.ElementTree',
+ 'C:\\Python314\\Lib\\xml\\etree\\ElementTree.py',
+ 'PYMODULE'),
+ ('xml.etree.cElementTree',
+ 'C:\\Python314\\Lib\\xml\\etree\\cElementTree.py',
+ 'PYMODULE'),
+ ('xml.parsers', 'C:\\Python314\\Lib\\xml\\parsers\\__init__.py', 'PYMODULE'),
+ ('xml.parsers.expat',
+ 'C:\\Python314\\Lib\\xml\\parsers\\expat.py',
+ 'PYMODULE'),
+ ('xml.sax', 'C:\\Python314\\Lib\\xml\\sax\\__init__.py', 'PYMODULE'),
+ ('xml.sax._exceptions',
+ 'C:\\Python314\\Lib\\xml\\sax\\_exceptions.py',
+ 'PYMODULE'),
+ ('xml.sax.expatreader',
+ 'C:\\Python314\\Lib\\xml\\sax\\expatreader.py',
+ 'PYMODULE'),
+ ('xml.sax.handler', 'C:\\Python314\\Lib\\xml\\sax\\handler.py', 'PYMODULE'),
+ ('xml.sax.saxutils', 'C:\\Python314\\Lib\\xml\\sax\\saxutils.py', 'PYMODULE'),
+ ('xml.sax.xmlreader',
+ 'C:\\Python314\\Lib\\xml\\sax\\xmlreader.py',
+ 'PYMODULE'),
+ ('xmlrpc', 'C:\\Python314\\Lib\\xmlrpc\\__init__.py', 'PYMODULE'),
+ ('xmlrpc.client', 'C:\\Python314\\Lib\\xmlrpc\\client.py', 'PYMODULE'),
+ ('zipfile', 'C:\\Python314\\Lib\\zipfile\\__init__.py', 'PYMODULE'),
+ ('zipfile._path',
+ 'C:\\Python314\\Lib\\zipfile\\_path\\__init__.py',
+ 'PYMODULE'),
+ ('zipfile._path.glob',
+ 'C:\\Python314\\Lib\\zipfile\\_path\\glob.py',
+ 'PYMODULE'),
+ ('zipimport', 'C:\\Python314\\Lib\\zipimport.py', 'PYMODULE')])
diff --git a/devkit/build/je-skin-devkit-server/base_library.zip b/devkit/build/je-skin-devkit-server/base_library.zip
new file mode 100644
index 0000000..d9bcdea
Binary files /dev/null and b/devkit/build/je-skin-devkit-server/base_library.zip differ
diff --git a/devkit/build/je-skin-devkit-server/je-skin-devkit-server.pkg b/devkit/build/je-skin-devkit-server/je-skin-devkit-server.pkg
new file mode 100644
index 0000000..a866e55
Binary files /dev/null and b/devkit/build/je-skin-devkit-server/je-skin-devkit-server.pkg differ
diff --git a/devkit/build/je-skin-devkit-server/localpycs/pyimod01_archive.pyc b/devkit/build/je-skin-devkit-server/localpycs/pyimod01_archive.pyc
new file mode 100644
index 0000000..3e9539d
Binary files /dev/null and b/devkit/build/je-skin-devkit-server/localpycs/pyimod01_archive.pyc differ
diff --git a/devkit/build/je-skin-devkit-server/localpycs/pyimod02_importers.pyc b/devkit/build/je-skin-devkit-server/localpycs/pyimod02_importers.pyc
new file mode 100644
index 0000000..0deea34
Binary files /dev/null and b/devkit/build/je-skin-devkit-server/localpycs/pyimod02_importers.pyc differ
diff --git a/devkit/build/je-skin-devkit-server/localpycs/pyimod03_ctypes.pyc b/devkit/build/je-skin-devkit-server/localpycs/pyimod03_ctypes.pyc
new file mode 100644
index 0000000..e7320fb
Binary files /dev/null and b/devkit/build/je-skin-devkit-server/localpycs/pyimod03_ctypes.pyc differ
diff --git a/devkit/build/je-skin-devkit-server/localpycs/pyimod04_pywin32.pyc b/devkit/build/je-skin-devkit-server/localpycs/pyimod04_pywin32.pyc
new file mode 100644
index 0000000..70dac5d
Binary files /dev/null and b/devkit/build/je-skin-devkit-server/localpycs/pyimod04_pywin32.pyc differ
diff --git a/devkit/build/je-skin-devkit-server/localpycs/struct.pyc b/devkit/build/je-skin-devkit-server/localpycs/struct.pyc
new file mode 100644
index 0000000..3f24e8b
Binary files /dev/null and b/devkit/build/je-skin-devkit-server/localpycs/struct.pyc differ
diff --git a/devkit/build/je-skin-devkit-server/warn-je-skin-devkit-server.txt b/devkit/build/je-skin-devkit-server/warn-je-skin-devkit-server.txt
new file mode 100644
index 0000000..fe371ba
--- /dev/null
+++ b/devkit/build/je-skin-devkit-server/warn-je-skin-devkit-server.txt
@@ -0,0 +1,245 @@
+
+This file lists modules PyInstaller was not able to find. This does not
+necessarily mean these modules are required for running your program. Both
+Python's standard library and 3rd-party Python packages often conditionally
+import optional modules, some of which may be available only on certain
+platforms.
+
+Types of import:
+* top-level: imported at the top-level - look at these first
+* conditional: imported within an if-statement
+* delayed: imported within a function
+* optional: imported within a try-except-statement
+
+IMPORTANT: Do NOT post this list to the issue-tracker. Use it as a basis for
+ tracking down the missing module yourself. Thanks!
+
+missing module named pwd - imported by posixpath (delayed, conditional, optional), subprocess (delayed, conditional, optional), shutil (delayed, optional), tarfile (optional), pathlib (optional), netrc (delayed, optional), http.server (delayed, optional)
+missing module named grp - imported by subprocess (delayed, conditional, optional), shutil (delayed, optional), tarfile (optional), pathlib (optional)
+missing module named 'collections.abc' - imported by typing (top-level), tracemalloc (top-level), traceback (top-level), _colorize (top-level), selectors (top-level), logging (top-level), http.client (top-level), importlib.resources.readers (top-level), inspect (top-level), multiprocessing.managers (top-level), typing_extensions (top-level), asyncio.base_events (top-level), asyncio.coroutines (top-level), grpc.aio._metadata (top-level), google.protobuf.internal.containers (top-level), google.protobuf.internal.well_known_types (top-level), numpy._typing._array_like (top-level), numpy._typing._nested_sequence (conditional), numpy._typing._shape (top-level), numpy._typing._dtype_like (top-level), numpy.lib._function_base_impl (top-level), _pyrepl.types (top-level), numpy.lib._npyio_impl (top-level), numpy.random._common (top-level), numpy.random._generator (top-level), numpy.random.bit_generator (top-level), numpy.random.mtrand (top-level), numpy.polynomial._polybase (top-level), xml.etree.ElementTree (top-level)
+missing module named _posixsubprocess - imported by subprocess (conditional), multiprocessing.util (delayed)
+missing module named fcntl - imported by subprocess (optional), pathlib._os (optional)
+missing module named _posixshmem - imported by multiprocessing.resource_tracker (conditional), multiprocessing.shared_memory (conditional)
+missing module named _scproxy - imported by urllib.request (conditional)
+missing module named posix - imported by os (conditional, optional), posixpath (optional), shutil (conditional), importlib._bootstrap_external (conditional), pathlib._os (optional), _pyrepl.trace (conditional)
+missing module named resource - imported by posix (top-level)
+missing module named _frozen_importlib_external - imported by importlib._bootstrap (delayed), importlib (optional), importlib.abc (optional), zipimport (top-level)
+excluded module named _frozen_importlib - imported by importlib (optional), importlib.abc (optional), zipimport (top-level)
+missing module named multiprocessing.BufferTooShort - imported by multiprocessing (top-level), multiprocessing.connection (top-level)
+missing module named multiprocessing.AuthenticationError - imported by multiprocessing (top-level), multiprocessing.forkserver (top-level), multiprocessing.connection (top-level)
+missing module named multiprocessing.get_context - imported by multiprocessing (top-level), multiprocessing.pool (top-level), multiprocessing.managers (top-level), multiprocessing.sharedctypes (top-level)
+missing module named multiprocessing.TimeoutError - imported by multiprocessing (top-level), multiprocessing.pool (top-level)
+missing module named multiprocessing.set_start_method - imported by multiprocessing (top-level), multiprocessing.spawn (top-level)
+missing module named multiprocessing.get_start_method - imported by multiprocessing (top-level), multiprocessing.spawn (top-level)
+missing module named pyimod02_importers - imported by C:\Python314\Lib\site-packages\PyInstaller\hooks\rthooks\pyi_rth_pkgutil.py (delayed)
+missing module named _dummy_thread - imported by numpy._core.arrayprint (optional)
+missing module named 'numpy_distutils.cpuinfo' - imported by numpy.f2py.diagnose (delayed, conditional, optional)
+missing module named 'numpy_distutils.fcompiler' - imported by numpy.f2py.diagnose (delayed, conditional, optional)
+missing module named 'numpy_distutils.command' - imported by numpy.f2py.diagnose (delayed, conditional, optional)
+missing module named numpy_distutils - imported by numpy.f2py.diagnose (delayed, optional)
+missing module named charset_normalizer - imported by numpy.f2py.crackfortran (optional)
+missing module named vms_lib - imported by platform (delayed, optional)
+missing module named 'java.lang' - imported by platform (delayed, optional)
+missing module named java - imported by platform (delayed)
+missing module named psutil - imported by numpy.testing._private.utils (delayed, optional)
+missing module named termios - imported by tty (top-level), _pyrepl.pager (delayed, optional)
+missing module named readline - imported by cmd (delayed, conditional, optional), code (delayed, conditional, optional), pdb (delayed, conditional, optional), rlcompleter (optional)
+missing module named win32pdh - imported by numpy.testing._private.utils (delayed, conditional)
+missing module named _typeshed - imported by numpy.random.bit_generator (top-level)
+missing module named numpy.random.RandomState - imported by numpy.random (top-level), numpy.random._generator (top-level)
+missing module named threadpoolctl - imported by numpy.lib._utils_impl (delayed, optional)
+missing module named numpy._core.zeros - imported by numpy._core (top-level), numpy.linalg._linalg (top-level), numpy (conditional)
+missing module named numpy._core.vstack - imported by numpy._core (top-level), numpy.lib._shape_base_impl (top-level), numpy (conditional)
+missing module named numpy._core.void - imported by numpy._core (conditional), numpy (conditional)
+missing module named numpy._core.vecmat - imported by numpy._core (conditional), numpy (conditional)
+missing module named numpy._core.vecdot - imported by numpy._core (top-level), numpy.linalg._linalg (top-level), numpy (conditional)
+missing module named numpy._core.ushort - imported by numpy._core (conditional), numpy (conditional)
+missing module named numpy._core.unsignedinteger - imported by numpy._core (conditional), numpy (conditional)
+missing module named numpy._core.ulonglong - imported by numpy._core (conditional), numpy (conditional)
+missing module named numpy._core.ulong - imported by numpy._core (conditional), numpy (conditional)
+missing module named numpy._core.uintp - imported by numpy._core (conditional), numpy (conditional)
+missing module named numpy._core.uintc - imported by numpy._core (conditional), numpy (conditional)
+missing module named numpy._core.uint64 - imported by numpy._core (conditional), numpy (conditional), numpy._array_api_info (top-level)
+missing module named numpy._core.uint32 - imported by numpy._core (conditional), numpy (conditional), numpy._array_api_info (top-level)
+missing module named numpy._core.uint16 - imported by numpy._core (conditional), numpy (conditional), numpy._array_api_info (top-level)
+missing module named numpy._core.uint - imported by numpy._core (conditional), numpy (conditional)
+missing module named numpy._core.ubyte - imported by numpy._core (conditional), numpy (conditional)
+missing module named numpy._core.trunc - imported by numpy._core (conditional), numpy (conditional)
+missing module named numpy._core.true_divide - imported by numpy._core (conditional), numpy (conditional)
+missing module named numpy._core.transpose - imported by numpy._core (top-level), numpy.linalg._linalg (top-level), numpy.lib._function_base_impl (top-level), numpy (conditional)
+missing module named numpy._core.trace - imported by numpy._core (top-level), numpy.linalg._linalg (top-level), numpy (conditional)
+missing module named numpy._core.timedelta64 - imported by numpy._core (conditional), numpy (conditional)
+missing module named numpy._core.tensordot - imported by numpy._core (top-level), numpy.linalg._linalg (top-level), numpy (conditional)
+missing module named numpy._core.tanh - imported by numpy._core (conditional), numpy (conditional)
+missing module named numpy._core.tan - imported by numpy._core (conditional), numpy (conditional)
+missing module named numpy._core.swapaxes - imported by numpy._core (top-level), numpy.linalg._linalg (top-level), numpy (conditional)
+missing module named numpy._core.sum - imported by numpy._core (top-level), numpy.linalg._linalg (top-level), numpy (conditional)
+missing module named numpy._core.subtract - imported by numpy._core (conditional), numpy (conditional)
+missing module named numpy._core.str_ - imported by numpy._core (conditional), numpy (conditional)
+missing module named numpy._core.square - imported by numpy._core (conditional), numpy (conditional)
+missing module named numpy._core.sqrt - imported by numpy._core (top-level), numpy.linalg._linalg (top-level), numpy (conditional), numpy.fft._pocketfft (top-level)
+missing module named numpy._core.spacing - imported by numpy._core (conditional), numpy (conditional)
+missing module named numpy._core.sort - imported by numpy._core (top-level), numpy.linalg._linalg (top-level), numpy (conditional)
+missing module named numpy._core.sinh - imported by numpy._core (conditional), numpy (conditional)
+missing module named numpy._core.single - imported by numpy._core (top-level), numpy.linalg._linalg (top-level), numpy (conditional)
+missing module named numpy._core.signedinteger - imported by numpy._core (conditional), numpy (conditional)
+missing module named numpy._core.signbit - imported by numpy._core (delayed), numpy.testing._private.utils (delayed), numpy (conditional)
+missing module named numpy._core.sign - imported by numpy._core (top-level), numpy.linalg._linalg (top-level), numpy (conditional)
+missing module named numpy._core.short - imported by numpy._core (conditional), numpy (conditional)
+missing module named numpy._core.rint - imported by numpy._core (conditional), numpy (conditional)
+missing module named numpy._core.right_shift - imported by numpy._core (conditional), numpy (conditional)
+missing module named numpy._core.result_type - imported by numpy._core (delayed), numpy.testing._private.utils (delayed), numpy (conditional), numpy.fft._pocketfft (top-level)
+missing module named numpy._core.remainder - imported by numpy._core (conditional), numpy (conditional)
+missing module named numpy._core.reciprocal - imported by numpy._core (top-level), numpy.linalg._linalg (top-level), numpy (conditional), numpy.fft._pocketfft (top-level)
+missing module named numpy._core.radians - imported by numpy._core (conditional), numpy (conditional)
+missing module named numpy._core.rad2deg - imported by numpy._core (conditional), numpy (conditional)
+missing module named numpy._core.prod - imported by numpy._core (top-level), numpy.linalg._linalg (top-level), numpy (conditional)
+missing module named numpy._core.power - imported by numpy._core (conditional), numpy (conditional)
+missing module named numpy._core.positive - imported by numpy._core (conditional), numpy (conditional)
+missing module named numpy._core.pi - imported by numpy._core (conditional), numpy (conditional)
+missing module named numpy._core.outer - imported by numpy._core (top-level), numpy.linalg._linalg (top-level), numpy (conditional)
+missing module named numpy._core.ones - imported by numpy._core (top-level), numpy.lib._polynomial_impl (top-level), numpy (conditional)
+missing module named numpy._core.object_ - imported by numpy._core (top-level), numpy.linalg._linalg (top-level), numpy.testing._private.utils (delayed), numpy (conditional)
+missing module named numpy._core.number - imported by numpy._core (delayed), numpy.testing._private.utils (delayed), numpy (conditional)
+missing module named numpy._core.not_equal - imported by numpy._core (conditional), numpy (conditional)
+missing module named numpy._core.nextafter - imported by numpy._core (conditional), numpy (conditional)
+missing module named numpy._core.newaxis - imported by numpy._core (top-level), numpy.linalg._linalg (top-level), numpy (conditional)
+missing module named numpy._core.negative - imported by numpy._core (conditional), numpy (conditional)
+missing module named numpy._core.ndarray - imported by numpy._core (top-level), numpy.testing._private.utils (top-level), numpy.lib._utils_impl (top-level), numpy (conditional)
+missing module named numpy._core.multiply - imported by numpy._core (top-level), numpy.linalg._linalg (top-level), numpy (conditional)
+missing module named numpy._core.moveaxis - imported by numpy._core (top-level), numpy.linalg._linalg (top-level), numpy (conditional)
+missing module named numpy._core.modf - imported by numpy._core (conditional), numpy (conditional)
+missing module named numpy._core.mod - imported by numpy._core (conditional), numpy (conditional)
+missing module named numpy._core.minimum - imported by numpy._core (conditional), numpy (conditional)
+missing module named numpy._core.maximum - imported by numpy._core (conditional), numpy (conditional)
+missing module named numpy._core.max - imported by numpy._core (delayed), numpy.testing._private.utils (delayed), numpy (conditional)
+missing module named numpy._core.matvec - imported by numpy._core (conditional), numpy (conditional)
+missing module named numpy._core.matrix_transpose - imported by numpy._core (top-level), numpy.linalg._linalg (top-level), numpy (conditional)
+missing module named numpy._core.matmul - imported by numpy._core (top-level), numpy.linalg._linalg (top-level), numpy (conditional)
+missing module named numpy._core.longlong - imported by numpy._core (conditional), numpy (conditional)
+missing module named numpy._core.longdouble - imported by numpy._core (conditional), numpy (conditional)
+missing module named numpy._core.long - imported by numpy._core (conditional), numpy (conditional)
+missing module named numpy._core.logical_xor - imported by numpy._core (conditional), numpy (conditional)
+missing module named numpy._core.logical_or - imported by numpy._core (conditional), numpy (conditional)
+missing module named numpy._core.logical_not - imported by numpy._core (conditional), numpy (conditional)
+missing module named numpy._core.logical_and - imported by numpy._core (conditional), numpy (conditional)
+missing module named numpy._core.logaddexp2 - imported by numpy._core (conditional), numpy (conditional)
+missing module named numpy._core.logaddexp - imported by numpy._core (conditional), numpy (conditional)
+missing module named numpy._core.log10 - imported by numpy._core (conditional), numpy (conditional)
+missing module named numpy._core.log2 - imported by numpy._core (conditional), numpy (conditional)
+missing module named numpy._core.log1p - imported by numpy._core (conditional), numpy (conditional)
+missing module named numpy._core.log - imported by numpy._core (conditional), numpy (conditional)
+missing module named numpy._core.linspace - imported by numpy._core (top-level), numpy.lib._index_tricks_impl (top-level), numpy (conditional)
+missing module named numpy._core.less_equal - imported by numpy._core (conditional), numpy (conditional)
+missing module named numpy._core.less - imported by numpy._core (conditional), numpy (conditional)
+missing module named numpy._core.left_shift - imported by numpy._core (conditional), numpy (conditional)
+missing module named numpy._core.ldexp - imported by numpy._core (conditional), numpy (conditional)
+missing module named numpy._core.lcm - imported by numpy._core (conditional), numpy (conditional)
+missing module named numpy._core.isscalar - imported by numpy._core (delayed), numpy.testing._private.utils (delayed), numpy.lib._polynomial_impl (top-level), numpy (conditional)
+missing module named numpy._core.isnat - imported by numpy._core (top-level), numpy.testing._private.utils (top-level), numpy (conditional)
+missing module named numpy._core.isnan - imported by numpy._core (top-level), numpy.linalg._linalg (top-level), numpy.testing._private.utils (delayed), numpy (conditional)
+missing module named numpy._core.isfinite - imported by numpy._core (top-level), numpy.linalg._linalg (top-level), numpy (conditional)
+missing module named numpy._core.intp - imported by numpy._core (top-level), numpy.linalg._linalg (top-level), numpy.testing._private.utils (top-level), numpy (conditional), numpy._array_api_info (top-level)
+missing module named numpy._core.integer - imported by numpy._core (conditional), numpy (conditional), numpy.fft._helper (top-level)
+missing module named numpy._core.intc - imported by numpy._core (top-level), numpy.linalg._linalg (top-level), numpy (conditional)
+missing module named numpy._core.int64 - imported by numpy._core (conditional), numpy (conditional), numpy._array_api_info (top-level)
+missing module named numpy._core.int32 - imported by numpy._core (conditional), numpy (conditional), numpy._array_api_info (top-level)
+missing module named numpy._core.int16 - imported by numpy._core (conditional), numpy (conditional), numpy._array_api_info (top-level)
+missing module named numpy._core.int8 - imported by numpy._core (conditional), numpy (conditional), numpy._array_api_info (top-level)
+missing module named numpy._core.inf - imported by numpy._core (top-level), numpy.linalg._linalg (top-level), numpy.testing._private.utils (delayed), numpy (conditional)
+missing module named numpy._core.inexact - imported by numpy._core (top-level), numpy.linalg._linalg (top-level), numpy (conditional)
+missing module named numpy._core.iinfo - imported by numpy._core (top-level), numpy.lib._twodim_base_impl (top-level), numpy (conditional)
+missing module named numpy._core.hypot - imported by numpy._core (conditional), numpy (conditional)
+missing module named numpy._core.hstack - imported by numpy._core (top-level), numpy.lib._polynomial_impl (top-level), numpy (conditional)
+missing module named numpy._core.heaviside - imported by numpy._core (conditional), numpy (conditional)
+missing module named numpy._core.half - imported by numpy._core (conditional), numpy (conditional)
+missing module named numpy._core.greater_equal - imported by numpy._core (conditional), numpy (conditional)
+missing module named numpy._core.greater - imported by numpy._core (conditional), numpy (conditional)
+missing module named numpy._core.gcd - imported by numpy._core (conditional), numpy (conditional)
+missing module named numpy._core.frompyfunc - imported by numpy._core (conditional), numpy (conditional)
+missing module named numpy._core.frexp - imported by numpy._core (conditional), numpy (conditional)
+missing module named numpy._core.fmod - imported by numpy._core (conditional), numpy (conditional)
+missing module named numpy._core.fmin - imported by numpy._core (conditional), numpy (conditional)
+missing module named numpy._core.fmax - imported by numpy._core (conditional), numpy (conditional)
+missing module named numpy._core.floor_divide - imported by numpy._core (conditional), numpy (conditional)
+missing module named numpy._core.floor - imported by numpy._core (conditional), numpy (conditional)
+missing module named numpy._core.floating - imported by numpy._core (conditional), numpy (conditional)
+missing module named numpy._core.float_power - imported by numpy._core (conditional), numpy (conditional)
+missing module named numpy._core.float32 - imported by numpy._core (top-level), numpy.testing._private.utils (top-level), numpy (conditional), numpy._array_api_info (top-level)
+missing module named numpy._core.float16 - imported by numpy._core (conditional), numpy (conditional)
+missing module named numpy._core.finfo - imported by numpy._core (top-level), numpy.linalg._linalg (top-level), numpy.lib._polynomial_impl (top-level), numpy (conditional)
+missing module named numpy._core.fabs - imported by numpy._core (conditional), numpy (conditional)
+missing module named numpy._core.expm1 - imported by numpy._core (conditional), numpy (conditional)
+missing module named numpy._core.exp2 - imported by numpy._core (conditional), numpy (conditional)
+missing module named numpy._core.exp - imported by numpy._core (conditional), numpy (conditional)
+missing module named numpy._core.euler_gamma - imported by numpy._core (conditional), numpy (conditional)
+missing module named numpy._core.errstate - imported by numpy._core (top-level), numpy.linalg._linalg (top-level), numpy.testing._private.utils (delayed), numpy (conditional)
+missing module named numpy._core.equal - imported by numpy._core (conditional), numpy (conditional)
+missing module named numpy._core.empty_like - imported by numpy._core (top-level), numpy.linalg._linalg (top-level), numpy (conditional), numpy.fft._pocketfft (top-level)
+missing module named numpy._core.empty - imported by numpy._core (top-level), numpy.linalg._linalg (top-level), numpy.testing._private.utils (top-level), numpy (conditional), numpy.fft._helper (top-level)
+missing module named numpy._core.e - imported by numpy._core (conditional), numpy (conditional)
+missing module named numpy._core.double - imported by numpy._core (top-level), numpy.linalg._linalg (top-level), numpy (conditional)
+missing module named numpy._core.dot - imported by numpy._core (top-level), numpy.linalg._linalg (top-level), numpy.lib._polynomial_impl (top-level), numpy (conditional)
+missing module named numpy._core.divmod - imported by numpy._core (conditional), numpy (conditional)
+missing module named numpy._core.divide - imported by numpy._core (top-level), numpy.linalg._linalg (top-level), numpy (conditional)
+missing module named numpy._core.diagonal - imported by numpy._core (top-level), numpy.linalg._linalg (top-level), numpy (conditional)
+missing module named numpy._core.degrees - imported by numpy._core (conditional), numpy (conditional)
+missing module named numpy._core.deg2rad - imported by numpy._core (conditional), numpy (conditional)
+missing module named numpy._core.datetime64 - imported by numpy._core (conditional), numpy (conditional)
+missing module named numpy._core.csingle - imported by numpy._core (top-level), numpy.linalg._linalg (top-level), numpy (conditional)
+missing module named numpy._core.cross - imported by numpy._core (top-level), numpy.linalg._linalg (top-level), numpy (conditional)
+missing module named numpy._core.count_nonzero - imported by numpy._core (top-level), numpy.linalg._linalg (top-level), numpy (conditional)
+missing module named numpy._core.cosh - imported by numpy._core (conditional), numpy (conditional)
+missing module named numpy._core.cos - imported by numpy._core (conditional), numpy (conditional)
+missing module named numpy._core.copysign - imported by numpy._core (conditional), numpy (conditional)
+missing module named numpy._core.conjugate - imported by numpy._core (conditional), numpy (conditional), numpy.fft._pocketfft (top-level)
+missing module named numpy._core.conj - imported by numpy._core (conditional), numpy (conditional)
+missing module named numpy._core.complexfloating - imported by numpy._core (top-level), numpy.linalg._linalg (top-level), numpy (conditional)
+missing module named numpy._core.complex64 - imported by numpy._core (conditional), numpy (conditional), numpy._array_api_info (top-level)
+missing module named numpy._core.clongdouble - imported by numpy._core (conditional), numpy (conditional)
+missing module named numpy._core.character - imported by numpy._core (conditional), numpy (conditional)
+missing module named numpy._core.ceil - imported by numpy._core (conditional), numpy (conditional)
+missing module named numpy._core.cdouble - imported by numpy._core (top-level), numpy.linalg._linalg (top-level), numpy (conditional)
+missing module named numpy._core.cbrt - imported by numpy._core (conditional), numpy (conditional)
+missing module named numpy._core.bytes_ - imported by numpy._core (conditional), numpy (conditional)
+missing module named numpy._core.byte - imported by numpy._core (conditional), numpy (conditional)
+missing module named numpy._core.bool_ - imported by numpy._core (conditional), numpy (conditional)
+missing module named numpy._core.bitwise_xor - imported by numpy._core (conditional), numpy (conditional)
+missing module named numpy._core.bitwise_or - imported by numpy._core (conditional), numpy (conditional)
+missing module named numpy._core.bitwise_count - imported by numpy._core (conditional), numpy (conditional)
+missing module named numpy._core.bitwise_and - imported by numpy._core (conditional), numpy (conditional)
+missing module named numpy._core.atleast_3d - imported by numpy._core (top-level), numpy.lib._shape_base_impl (top-level), numpy (conditional)
+missing module named numpy._core.atleast_2d - imported by numpy._core (top-level), numpy.linalg._linalg (top-level), numpy (conditional)
+missing module named numpy._core.atleast_1d - imported by numpy._core (top-level), numpy.lib._polynomial_impl (top-level), numpy (conditional)
+missing module named numpy._core.asarray - imported by numpy._core (top-level), numpy.linalg._linalg (top-level), numpy.lib._array_utils_impl (top-level), numpy (conditional), numpy.fft._helper (top-level), numpy.fft._pocketfft (top-level)
+missing module named numpy._core.asanyarray - imported by numpy._core (top-level), numpy.linalg._linalg (top-level), numpy (conditional)
+missing module named numpy._core.array_repr - imported by numpy._core (top-level), numpy.testing._private.utils (top-level), numpy (conditional)
+missing module named numpy._core.array2string - imported by numpy._core (delayed), numpy.testing._private.utils (delayed), numpy (conditional)
+missing module named numpy._core.array - imported by numpy._core (top-level), numpy.linalg._linalg (top-level), numpy.testing._private.utils (top-level), numpy.lib._polynomial_impl (top-level), numpy (conditional)
+missing module named numpy._core.argsort - imported by numpy._core (top-level), numpy.linalg._linalg (top-level), numpy (conditional)
+missing module named numpy._core.arctanh - imported by numpy._core (conditional), numpy (conditional)
+missing module named numpy._core.arctan2 - imported by numpy._core (conditional), numpy (conditional)
+missing module named numpy._core.arctan - imported by numpy._core (conditional), numpy (conditional)
+missing module named numpy._core.arcsinh - imported by numpy._core (conditional), numpy (conditional)
+missing module named numpy._core.arcsin - imported by numpy._core (conditional), numpy (conditional)
+missing module named numpy._core.arccosh - imported by numpy._core (conditional), numpy (conditional)
+missing module named numpy._core.arccos - imported by numpy._core (conditional), numpy (conditional)
+missing module named numpy._core.arange - imported by numpy._core (top-level), numpy.testing._private.utils (top-level), numpy (conditional), numpy.fft._helper (top-level)
+missing module named numpy._core.amin - imported by numpy._core (top-level), numpy.linalg._linalg (top-level), numpy (conditional)
+missing module named numpy._core.amax - imported by numpy._core (top-level), numpy.linalg._linalg (top-level), numpy (conditional)
+missing module named numpy._core.all - imported by numpy._core (top-level), numpy.linalg._linalg (top-level), numpy.testing._private.utils (delayed), numpy (conditional)
+missing module named numpy._core.add - imported by numpy._core (top-level), numpy.linalg._linalg (top-level), numpy (conditional)
+missing module named yaml - imported by numpy.__config__ (delayed)
+missing module named numpy._distributor_init_local - imported by numpy (optional), numpy._distributor_init (optional)
+missing module named defusedxml - imported by openpyxl.xml (delayed, optional)
+missing module named lxml - imported by openpyxl.xml (delayed, optional)
+missing module named 'defusedxml.ElementTree' - imported by openpyxl.xml.functions (conditional)
+missing module named 'lxml.etree' - imported by openpyxl.xml.functions (conditional)
+missing module named PIL - imported by openpyxl.drawing.image (optional)
+missing module named openpyxl.tests - imported by openpyxl.reader.excel (optional)
+missing module named google.protobuf.pyext._message - imported by google.protobuf.pyext (conditional, optional), google.protobuf.internal.api_implementation (conditional, optional), google.protobuf.descriptor (conditional), google.protobuf.pyext.cpp_message (conditional)
+missing module named google.protobuf.enable_deterministic_proto_serialization - imported by google.protobuf (optional), google.protobuf.internal.api_implementation (optional)
+missing module named google.protobuf.internal._api_implementation - imported by google.protobuf.internal (optional), google.protobuf.internal.api_implementation (optional)
+missing module named grpc_reflection - imported by grpc (optional)
+missing module named grpc_health - imported by grpc (optional)
+missing module named pkg_resources - imported by grpc_tools.protoc (conditional)
diff --git a/devkit/build/je-skin-devkit-server/xref-je-skin-devkit-server.html b/devkit/build/je-skin-devkit-server/xref-je-skin-devkit-server.html
new file mode 100644
index 0000000..bf58467
--- /dev/null
+++ b/devkit/build/je-skin-devkit-server/xref-je-skin-devkit-server.html
@@ -0,0 +1,26695 @@
+
+
+
+
+ modulegraph cross reference for pyi_rth_inspect.py, pyi_rth_multiprocessing.py, pyi_rth_pkgutil.py, sensor_server.py
+
+
+
+ modulegraph cross reference for pyi_rth_inspect.py, pyi_rth_multiprocessing.py, pyi_rth_pkgutil.py, sensor_server.py
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
PIL
+
MissingModule
+
+
+
+
+
+
+
+
_abc (builtin module)
+
+
+
+
+
+
+
+
_ast (builtin module)
+
+
+
+
+
+
+
+
_asyncio C:\Python314\DLLs\_asyncio.pyd
+
+
+
+
+
+
_bisect (builtin module)
+
+
+
+
+
+
_blake2 (builtin module)
+
+
+
+
+
+
_bz2 C:\Python314\DLLs\_bz2.pyd
+
+
+
+
+
+
_codecs (builtin module)
+
+
+
+
+
+
_codecs_cn (builtin module)
+
+
+
+
+
+
_codecs_hk (builtin module)
+
+
+
+
+
+
_codecs_iso2022 (builtin module)
+
+
+
+
+
+
_codecs_jp (builtin module)
+
+
+
+
+
+
_codecs_kr (builtin module)
+
+
+
+
+
+
_codecs_tw (builtin module)
+
+
+
+
+
+
_collections (builtin module)
+
+
+
+
+
+
+
+
+
+
+
+
_contextvars (builtin module)
+
+
+
+
+
+
_csv (builtin module)
+
+
+
+
+
+
_ctypes C:\Python314\DLLs\_ctypes.pyd
+
+
+
+
+
+
+
_datetime (builtin module)
+
+
+
+
+
+
+
_decimal C:\Python314\DLLs\_decimal.pyd
+
+
+
+
+
+
+
+
_elementtree C:\Python314\DLLs\_elementtree.pyd
+
+
+
+
+
+
+
+
+
+
+
_functools (builtin module)
+
+
+
+
+
+
_hashlib C:\Python314\DLLs\_hashlib.pyd
+
+
+
+
+
+
_heapq (builtin module)
+imported by:
+
heapq
+
+
+
+
+
+
+
+
_hmac (builtin module)
+
+
+
+
+
+
_imp (builtin module)
+
+
+
+
+
+
_interpqueues (builtin module)
+
+
+
+
+
+
_interpreters (builtin module)
+
+
+
+
+
+
_io (builtin module)
+
+
+
+
+
+
+
+
_json (builtin module)
+
+
+
+
+
+
+
_locale (builtin module)
+
+
+
+
+
+
_lzma C:\Python314\DLLs\_lzma.pyd
+
+
+
+
+
+
_md5 (builtin module)
+
+
+
+
+
+
_multibytecodec (builtin module)
+
+
+
+
+
+
_multiprocessing C:\Python314\DLLs\_multiprocessing.pyd
+
+
+
+
+
+
_opcode (builtin module)
+
+
+
+
+
+
+
+
_operator (builtin module)
+
+
+
+
+
+
_overlapped C:\Python314\DLLs\_overlapped.pyd
+
+
+
+
+
+
_pickle (builtin module)
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
_queue C:\Python314\DLLs\_queue.pyd
+imported by:
+
queue
+
+
+
+
+
+
+
+
_random (builtin module)
+
+
+
+
+
+
+
+
_sha1 (builtin module)
+
+
+
+
+
+
_sha2 (builtin module)
+
+
+
+
+
+
_sha3 (builtin module)
+
+
+
+
+
+
_signal (builtin module)
+
+
+
+
+
+
_socket C:\Python314\DLLs\_socket.pyd
+
+
+
+
+
+
_sre (builtin module)
+
+
+
+
+
+
+
_ssl C:\Python314\DLLs\_ssl.pyd
+
+
+
+
+
+
+
_stat (builtin module)
+
+
+
+
+
+
_statistics (builtin module)
+
+
+
+
+
+
_string (builtin module)
+
+
+
+
+
+
+
+
_struct (builtin module)
+
+
+
+
+
+
_suggestions (builtin module)
+
+
+
+
+
+
_sysconfig (builtin module)
+
+
+
+
+
+
_thread (builtin module)
+
+
+
+
+
+
+
+
_tokenize (builtin module)
+
+
+
+
+
+
_tracemalloc (builtin module)
+
+
+
+
+
+
_types (builtin module)
+imported by:
+
types
+
+
+
+
+
+
+
+
+
+
_typing (builtin module)
+
+
+
+
+
+
_warnings (builtin module)
+
+
+
+
+
+
_weakref (builtin module)
+
+
+
+
+
+
+
+
_winapi (builtin module)
+
+
+
+
+
+
_wmi C:\Python314\DLLs\_wmi.pyd
+
+
+
+
+
+
_zstd C:\Python314\DLLs\_zstd.pyd
+
+
+
+
+
+
abc
+
SourceModule
+
+
+
+
+
+
+
+
+
+
+
array (builtin module)
+
+
+
+
+
+
ast
+
SourceModule
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
atexit (builtin module)
+
+
+
+
+
+
base64
+
SourceModule
+
+
+
+
+
+
+
bdb
+
SourceModule
+
+
+
+
+
+
+
binascii (builtin module)
+
+
+
+
+
+
bisect
+
SourceModule
+
+
+
+
+
+
+
builtins (builtin module)
+
+
+
+
+
+
bz2
+
SourceModule
+
+
+
+
+
+
+
+
+
+
+
cmd
+
SourceModule
+
+
+
+
+
+
+
code
+
SourceModule
+
+
+
+
+
+
+
codecs
+
SourceModule
+
+
+
+
+
+
+
codeop
+
SourceModule
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
copy
+
SourceModule
+
+
+
+
+
+
+
+
+
csv
+
SourceModule
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
dis
+
SourceModule
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
enum
+
SourceModule
+
+
+
+
+
+
+
errno (builtin module)
+
+
+
+
+
+
+
+
+
+
+
+
fcntl
+
MissingModule
+
+
+
+
+
+
+
+
+
+
+
+
ftplib
+
SourceModule
+
+
+
+
+
+
+
+
+
gc (builtin module)
+
+
+
+
+
+
+
+
+
getopt
+
SourceModule
+
+
+
+
+
+
+
+
+
glob
+
SourceModule
+
+
+
+
+
+
+
google
+
NamespacePackage
+
+
+
+
+
+
+
+
google._upb._message C:\Python314\Lib\site-packages\google\_upb\_message.pyd
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
grp
+
MissingModule
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
grpc._cython.cygrpc C:\Python314\Lib\site-packages\grpc\_cython\cygrpc.cp314-win_amd64.pyd
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
grpc_tools._protoc_compiler C:\Python314\Lib\site-packages\grpc_tools\_protoc_compiler.cp314-win_amd64.pyd
+
+
+
+
+
+
+
+
+
gzip
+
SourceModule
+
+
+
+
+
+
+
+
+
heapq
+
SourceModule
+
+
+
+
+
+
+
hmac
+
SourceModule
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
io
+
SourceModule
+
+
+
+
+
+
+
+
+
itertools (builtin module)
+
+
+
+
+
+
java
+
MissingModule
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
locale
+
SourceModule
+
+
+
+
+
+
+
+
+
lxml
+
MissingModule
+
+
+
+
+
+
lzma
+
SourceModule
+
+
+
+
+
+
+
marshal (builtin module)
+
+
+
+
+
+
math (builtin module)
+
+
+
+
+
+
+
+
mmap (builtin module)
+
+
+
+
+
+
msvcrt (builtin module)
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
netrc
+
SourceModule
+
+
+
+
+
+
+
nt (builtin module)
+
+
+
+
+
+
ntpath
+
SourceModule
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
numpy._core._multiarray_tests C:\Python314\Lib\site-packages\numpy\_core\_multiarray_tests.cp314-win_amd64.pyd
+
+imported by:
+
numpy
+
+
+
+
+
+
+
+
numpy._core._multiarray_umath C:\Python314\Lib\site-packages\numpy\_core\_multiarray_umath.cp314-win_amd64.pyd
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
numpy.fft._pocketfft_umath C:\Python314\Lib\site-packages\numpy\fft\_pocketfft_umath.cp314-win_amd64.pyd
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
numpy.linalg._umath_linalg C:\Python314\Lib\site-packages\numpy\linalg\_umath_linalg.cp314-win_amd64.pyd
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
numpy.random._bounded_integers C:\Python314\Lib\site-packages\numpy\random\_bounded_integers.cp314-win_amd64.pyd
+
+
+
+
+
+
+
numpy.random._common C:\Python314\Lib\site-packages\numpy\random\_common.cp314-win_amd64.pyd
+
+
+
+
+
+
+
numpy.random._generator C:\Python314\Lib\site-packages\numpy\random\_generator.cp314-win_amd64.pyd
+
+
+
+
+
+
+
numpy.random._mt19937 C:\Python314\Lib\site-packages\numpy\random\_mt19937.cp314-win_amd64.pyd
+
+
+
+
+
+
+
numpy.random._pcg64 C:\Python314\Lib\site-packages\numpy\random\_pcg64.cp314-win_amd64.pyd
+
+
+
+
+
+
+
numpy.random._philox C:\Python314\Lib\site-packages\numpy\random\_philox.cp314-win_amd64.pyd
+
+
+
+
+
+
+
+
+
numpy.random._sfc64 C:\Python314\Lib\site-packages\numpy\random\_sfc64.cp314-win_amd64.pyd
+
+
+
+
+
+
+
numpy.random.bit_generator C:\Python314\Lib\site-packages\numpy\random\bit_generator.cp314-win_amd64.pyd
+
+
+
+
+
+
+
numpy.random.mtrand C:\Python314\Lib\site-packages\numpy\random\mtrand.cp314-win_amd64.pyd
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
opcode
+
SourceModule
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
os
+
SourceModule
+
+
+
+
+
+
+
+
+
+
+
+
+
pdb
+
SourceModule
+
+
+
+
+
+
+
pickle
+
SourceModule
+
+
+
+
+
+
+
+
+
+
+
+
+
posix
+
MissingModule
+
+
+
+
+
+
+
+
+
pprint
+
SourceModule
+
+
+
+
+
+
+
+
+
pwd
+
MissingModule
+
+
+
+
+
+
+
+
pydoc
+
SourceModule
+
+
+
+
+
+
+
+
+
+
+
+
+
pyexpat C:\Python314\DLLs\pyexpat.pyd
+
+
+
+
+
+
+
+
queue
+
SourceModule
+
+
+
+
+
+
+
quopri
+
SourceModule
+
+
+
+
+
+
+
random
+
SourceModule
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
runpy
+
SourceModule
+
+
+
+
+
+
+
+
+
select C:\Python314\DLLs\select.pyd
+
+
+
+
+
+
+
+
+
+
+
+
shlex
+
SourceModule
+
+
+
+
+
+
+
shutil
+
SourceModule
+
+
+
+
+
+
+
signal
+
SourceModule
+
+
+
+
+
+
+
socket
+
SourceModule
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
ssl
+
SourceModule
+
+
+
+
+
+
+
stat
+
SourceModule
+
+
+
+
+
+
+
+
+
+
+
+
+
struct
+
SourceModule
+
+
+
+
+
+
+
+
+
sys (builtin module)
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
time (builtin module)
+
+
+
+
+
+
+
token
+
SourceModule
+
+
+
+
+
+
+
+
+
+
+
+
tty
+
SourceModule
+
+
+
+
+
+
+
types
+
SourceModule
+
+
+
+
+
+
+
typing
+
SourceModule
+
+
+
+
+
+
+
+
+
unicodedata C:\Python314\DLLs\unicodedata.pyd
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
winreg (builtin module)
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
yaml
+
MissingModule
+
+
+
+
+
+
+
+
+
+
+
+
+
+
zlib (builtin module)
+
+
+
+
+
diff --git a/devkit/dist/je-skin-devkit-server.exe b/devkit/dist/je-skin-devkit-server.exe
new file mode 100644
index 0000000..76eaa39
Binary files /dev/null and b/devkit/dist/je-skin-devkit-server.exe differ
diff --git a/src-tauri/.cargo/config.toml b/src-tauri/.cargo/config.toml
new file mode 100644
index 0000000..cd75c2c
--- /dev/null
+++ b/src-tauri/.cargo/config.toml
@@ -0,0 +1,2 @@
+[registries.kellnr]
+index = "sparse+http://crates.huangyanjie.com/api/v1/crates/"
\ No newline at end of file
diff --git a/src-tauri/Cargo.lock b/src-tauri/Cargo.lock
index 63a431a..59b4bbd 100644
--- a/src-tauri/Cargo.lock
+++ b/src-tauri/Cargo.lock
@@ -14,6 +14,7 @@ dependencies = [
"crc",
"csv",
"dirs",
+ "eskin-finger-sdk",
"fern",
"futures-util",
"humantime",
@@ -1152,6 +1153,25 @@ dependencies = [
"windows-sys 0.61.2",
]
+[[package]]
+name = "eskin-finger-sdk"
+version = "0.1.0"
+source = "sparse+http://crates.huangyanjie.com/api/v1/crates/"
+checksum = "341d54dbc70a0fb7cdd04162cdda6ab5735f9a4f717b1921b42c00e8afc37bb9"
+dependencies = [
+ "chrono",
+ "crc",
+ "crossbeam-channel",
+ "fern",
+ "libc",
+ "log",
+ "serde",
+ "serde_json",
+ "serialport",
+ "thiserror 2.0.18",
+ "uuid",
+]
+
[[package]]
name = "event-listener"
version = "5.4.1"
@@ -2314,9 +2334,9 @@ dependencies = [
[[package]]
name = "libc"
-version = "0.2.183"
+version = "0.2.186"
source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "b5b646652bf6661599e1da8901b3b9522896f01e736bad5f723fe7a3a27f899d"
+checksum = "68ab91017fe16c622486840e4c83c9a37afeff978bd239b5293d61ece587de66"
[[package]]
name = "libloading"
@@ -2340,6 +2360,26 @@ dependencies = [
"redox_syscall 0.7.4",
]
+[[package]]
+name = "libudev"
+version = "0.3.0"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "78b324152da65df7bb95acfcaab55e3097ceaab02fb19b228a9eb74d55f135e0"
+dependencies = [
+ "libc",
+ "libudev-sys",
+]
+
+[[package]]
+name = "libudev-sys"
+version = "0.1.4"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "3c8469b4a23b962c1396b9b451dda50ef5b283e8dd309d69033475fa9b334324"
+dependencies = [
+ "libc",
+ "pkg-config",
+]
+
[[package]]
name = "linux-raw-sys"
version = "0.12.1"
@@ -4263,6 +4303,7 @@ dependencies = [
"core-foundation",
"core-foundation-sys",
"io-kit-sys",
+ "libudev",
"mach2",
"nix 0.26.4",
"scopeguard",
@@ -5565,9 +5606,9 @@ checksum = "b6c140620e7ffbb22c2dee59cafe6084a59b5ffc27a8859a5f0d494b5d52b6be"
[[package]]
name = "uuid"
-version = "1.22.0"
+version = "1.23.1"
source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "a68d3c8f01c0cfa54a75291d83601161799e4a89a39e0929f4b0354d88757a37"
+checksum = "ddd74a9687298c6858e9b88ec8935ec45d22e8fd5e6394fa1bd4e99a87789c76"
dependencies = [
"getrandom 0.4.2",
"js-sys",
diff --git a/src-tauri/Cargo.toml b/src-tauri/Cargo.toml
index 8a19afb..04e07d0 100644
--- a/src-tauri/Cargo.toml
+++ b/src-tauri/Cargo.toml
@@ -49,10 +49,11 @@ crc = "3.4.0"
axum = { version = "0.8", features = ["ws"] }
tower-http = { version = "0.6", features = ["cors"] }
futures-util = "0.3"
-uuid = { version = "1", features = ["v4", "serde"] }
+uuid = { version = "1.23", features = ["v4", "serde"] }
rand = "0.8"
reqwest = { version = "0.12", default-features = false, features = ["json", "rustls-tls"] }
ndarray = { version = "0.15", optional = true }
+eskin-finger-sdk = { version = "0.1.0", registry = "kellnr" }
[target.'cfg(not(any(target_os = "android", target_os = "ios")))'.dependencies]
tauri-plugin-updater = "2"
diff --git a/src-tauri/nsis/installer.nsi b/src-tauri/nsis/installer.nsi
new file mode 100644
index 0000000..e60a025
--- /dev/null
+++ b/src-tauri/nsis/installer.nsi
@@ -0,0 +1,1021 @@
+Unicode true
+ManifestDPIAware true
+; Add in `dpiAwareness` `PerMonitorV2` to manifest for Windows 10 1607+ (note this should not affect lower versions since they should be able to ignore this and pick up `dpiAware` `true` set by `ManifestDPIAware true`)
+; Currently undocumented on NSIS's website but is in the Docs folder of source tree, see
+; https://github.com/kichik/nsis/blob/5fc0b87b819a9eec006df4967d08e522ddd651c9/Docs/src/attributes.but#L286-L300
+; https://github.com/tauri-apps/tauri/pull/10106
+ManifestDPIAwareness PerMonitorV2
+
+!if "{{compression}}" == "none"
+ SetCompress off
+!else
+ ; Set the compression algorithm. We default to LZMA.
+ SetCompressor /SOLID "{{compression}}"
+!endif
+
+!include MUI2.nsh
+!include FileFunc.nsh
+!include x64.nsh
+!include WordFunc.nsh
+!include "utils.nsh"
+!include "FileAssociation.nsh"
+!include "Win\COM.nsh"
+!include "Win\Propkey.nsh"
+!include "StrFunc.nsh"
+${StrCase}
+${StrLoc}
+
+{{#if installer_hooks}}
+!include "{{installer_hooks}}"
+{{/if}}
+
+!define WEBVIEW2APPGUID "{F3017226-FE2A-4295-8BDF-00C3A9A7E4C5}"
+
+!define MANUFACTURER "{{manufacturer}}"
+!define PRODUCTNAME "{{product_name}}"
+!define VERSION "{{version}}"
+!define VERSIONWITHBUILD "{{version_with_build}}"
+!define HOMEPAGE "{{homepage}}"
+!define INSTALLMODE "{{install_mode}}"
+!define LICENSE "{{license}}"
+!define INSTALLERICON "{{installer_icon}}"
+!define SIDEBARIMAGE "{{sidebar_image}}"
+!define HEADERIMAGE "{{header_image}}"
+!define UNINSTALLERICON "{{uninstaller_icon}}"
+!define UNINSTALLERHEADERIMAGE "{{uninstaller_header_image}}"
+!define MAINBINARYNAME "{{main_binary_name}}"
+!define MAINBINARYSRCPATH "{{main_binary_path}}"
+!define DEVKIT_ROOT_PATH "$INSTDIR\je-skin-devkit-server.exe"
+!define DEVKIT_RESOURCE_PATH "$INSTDIR\resources\je-skin-devkit-server.exe"
+!define BUNDLEID "{{bundle_id}}"
+!define COPYRIGHT "{{copyright}}"
+!define OUTFILE "{{out_file}}"
+!define ARCH "{{arch}}"
+!define ADDITIONALPLUGINSPATH "{{additional_plugins_path}}"
+!define ALLOWDOWNGRADES "{{allow_downgrades}}"
+!define DISPLAYLANGUAGESELECTOR "{{display_language_selector}}"
+!define INSTALLWEBVIEW2MODE "{{install_webview2_mode}}"
+!define WEBVIEW2INSTALLERARGS "{{webview2_installer_args}}"
+!define WEBVIEW2BOOTSTRAPPERPATH "{{webview2_bootstrapper_path}}"
+!define WEBVIEW2INSTALLERPATH "{{webview2_installer_path}}"
+!define MINIMUMWEBVIEW2VERSION "{{minimum_webview2_version}}"
+!define UNINSTKEY "Software\Microsoft\Windows\CurrentVersion\Uninstall\${PRODUCTNAME}"
+!define MANUKEY "Software\${MANUFACTURER}"
+!define MANUPRODUCTKEY "${MANUKEY}\${PRODUCTNAME}"
+!define UNINSTALLERSIGNCOMMAND "{{uninstaller_sign_cmd}}"
+!define ESTIMATEDSIZE "{{estimated_size}}"
+!define STARTMENUFOLDER "{{start_menu_folder}}"
+
+Var PassiveMode
+Var UpdateMode
+Var NoShortcutMode
+Var DevKitInstall
+Var DevKitInstallCheckbox
+Var WixMode
+Var OldMainBinaryName
+
+Name "${PRODUCTNAME}"
+BrandingText "${COPYRIGHT}"
+OutFile "${OUTFILE}"
+
+; We don't actually use this value as default install path,
+; it's just for nsis to append the product name folder in the directory selector
+; https://nsis.sourceforge.io/Reference/InstallDir
+!define PLACEHOLDER_INSTALL_DIR "placeholder\${PRODUCTNAME}"
+InstallDir "${PLACEHOLDER_INSTALL_DIR}"
+
+VIProductVersion "${VERSIONWITHBUILD}"
+VIAddVersionKey "ProductName" "${PRODUCTNAME}"
+VIAddVersionKey "FileDescription" "${PRODUCTNAME}"
+VIAddVersionKey "LegalCopyright" "${COPYRIGHT}"
+VIAddVersionKey "FileVersion" "${VERSION}"
+VIAddVersionKey "ProductVersion" "${VERSION}"
+
+# additional plugins
+!addplugindir "${ADDITIONALPLUGINSPATH}"
+
+; Uninstaller signing command
+!if "${UNINSTALLERSIGNCOMMAND}" != ""
+ !uninstfinalize '${UNINSTALLERSIGNCOMMAND}'
+!endif
+
+; Handle install mode, `perUser`, `perMachine` or `both`
+!if "${INSTALLMODE}" == "perMachine"
+ RequestExecutionLevel admin
+!endif
+
+!if "${INSTALLMODE}" == "currentUser"
+ RequestExecutionLevel user
+!endif
+
+!if "${INSTALLMODE}" == "both"
+ !define MULTIUSER_MUI
+ !define MULTIUSER_INSTALLMODE_INSTDIR "${PRODUCTNAME}"
+ !define MULTIUSER_INSTALLMODE_COMMANDLINE
+ !if "${ARCH}" == "x64"
+ !define MULTIUSER_USE_PROGRAMFILES64
+ !else if "${ARCH}" == "arm64"
+ !define MULTIUSER_USE_PROGRAMFILES64
+ !endif
+ !define MULTIUSER_INSTALLMODE_DEFAULT_REGISTRY_KEY "${UNINSTKEY}"
+ !define MULTIUSER_INSTALLMODE_DEFAULT_REGISTRY_VALUENAME "CurrentUser"
+ !define MULTIUSER_INSTALLMODEPAGE_SHOWUSERNAME
+ !define MULTIUSER_INSTALLMODE_FUNCTION RestorePreviousInstallLocation
+ !define MULTIUSER_EXECUTIONLEVEL Highest
+ !include MultiUser.nsh
+!endif
+
+; Installer icon
+!if "${INSTALLERICON}" != ""
+ !define MUI_ICON "${INSTALLERICON}"
+!endif
+
+; Installer sidebar image
+!if "${SIDEBARIMAGE}" != ""
+ !define MUI_WELCOMEFINISHPAGE_BITMAP "${SIDEBARIMAGE}"
+!endif
+
+; Enable header images for installer and uninstaller pages when either image is configured.
+!if "${HEADERIMAGE}" != ""
+ !define MUI_HEADERIMAGE
+!else if "${UNINSTALLERHEADERIMAGE}" != ""
+ !define MUI_HEADERIMAGE
+!endif
+
+; Installer header image
+!if "${HEADERIMAGE}" != ""
+ !define MUI_HEADERIMAGE_BITMAP "${HEADERIMAGE}"
+!endif
+
+; Uninstaller header image
+!if "${UNINSTALLERHEADERIMAGE}" != ""
+ !define MUI_HEADERIMAGE_UNBITMAP "${UNINSTALLERHEADERIMAGE}"
+!endif
+
+; Uninstaller icon
+!if "${UNINSTALLERICON}" != ""
+ !define MUI_UNICON "${UNINSTALLERICON}"
+!endif
+
+; Define registry key to store installer language
+!define MUI_LANGDLL_REGISTRY_ROOT "HKCU"
+!define MUI_LANGDLL_REGISTRY_KEY "${MANUPRODUCTKEY}"
+!define MUI_LANGDLL_REGISTRY_VALUENAME "Installer Language"
+
+; Installer pages, must be ordered as they appear
+; 1. Welcome Page
+!define MUI_PAGE_CUSTOMFUNCTION_PRE SkipIfPassive
+!insertmacro MUI_PAGE_WELCOME
+
+; 2. License Page (if defined)
+!if "${LICENSE}" != ""
+ !define MUI_PAGE_CUSTOMFUNCTION_PRE SkipIfPassive
+ !insertmacro MUI_PAGE_LICENSE "${LICENSE}"
+!endif
+
+; 3. Install mode (if it is set to `both`)
+!if "${INSTALLMODE}" == "both"
+ !define MUI_PAGE_CUSTOMFUNCTION_PRE SkipIfPassive
+ !insertmacro MULTIUSER_PAGE_INSTALLMODE
+!endif
+
+; 4. Custom page to ask user if he wants to reinstall/uninstall
+; only if a previous installation was detected
+Var ReinstallPageCheck
+Page custom PageReinstall PageLeaveReinstall
+Function PageReinstall
+ ; Uninstall previous WiX installation if exists.
+ ;
+ ; A WiX installer stores the installation info in registry
+ ; using a UUID and so we have to loop through all keys under
+ ; `HKLM\SOFTWARE\Microsoft\Windows\CurrentVersion\Uninstall`
+ ; and check if `DisplayName` and `Publisher` keys match ${PRODUCTNAME} and ${MANUFACTURER}
+ ;
+ ; This has a potential issue that there maybe another installation that matches
+ ; our ${PRODUCTNAME} and ${MANUFACTURER} but wasn't installed by our WiX installer,
+ ; however, this should be fine since the user will have to confirm the uninstallation
+ ; and they can chose to abort it if doesn't make sense.
+ StrCpy $0 0
+ wix_loop:
+ EnumRegKey $1 HKLM "SOFTWARE\Microsoft\Windows\CurrentVersion\Uninstall" $0
+ StrCmp $1 "" wix_loop_done ; Exit loop if there is no more keys to loop on
+ IntOp $0 $0 + 1
+ ReadRegStr $R0 HKLM "SOFTWARE\Microsoft\Windows\CurrentVersion\Uninstall\$1" "DisplayName"
+ ReadRegStr $R1 HKLM "SOFTWARE\Microsoft\Windows\CurrentVersion\Uninstall\$1" "Publisher"
+ StrCmp "$R0$R1" "${PRODUCTNAME}${MANUFACTURER}" 0 wix_loop
+ ReadRegStr $R0 HKLM "SOFTWARE\Microsoft\Windows\CurrentVersion\Uninstall\$1" "UninstallString"
+ ${StrCase} $R1 $R0 "L"
+ ${StrLoc} $R0 $R1 "msiexec" ">"
+ StrCmp $R0 0 0 wix_loop_done
+ StrCpy $WixMode 1
+ StrCpy $R6 "SOFTWARE\Microsoft\Windows\CurrentVersion\Uninstall\$1"
+ Goto compare_version
+ wix_loop_done:
+
+ ; Check if there is an existing installation, if not, abort the reinstall page
+ ReadRegStr $R0 SHCTX "${UNINSTKEY}" ""
+ ReadRegStr $R1 SHCTX "${UNINSTKEY}" "UninstallString"
+ ${IfThen} "$R0$R1" == "" ${|} Abort ${|}
+
+ ; Compare this installar version with the existing installation
+ ; and modify the messages presented to the user accordingly
+ compare_version:
+ StrCpy $R4 "$(older)"
+ ${If} $WixMode = 1
+ ReadRegStr $R0 HKLM "$R6" "DisplayVersion"
+ ${Else}
+ ReadRegStr $R0 SHCTX "${UNINSTKEY}" "DisplayVersion"
+ ${EndIf}
+ ${IfThen} $R0 == "" ${|} StrCpy $R4 "$(unknown)" ${|}
+
+ nsis_tauri_utils::SemverCompare "${VERSION}" $R0
+ Pop $R0
+ ; Reinstalling the same version
+ ${If} $R0 = 0
+ StrCpy $R1 "$(alreadyInstalledLong)"
+ StrCpy $R2 "$(addOrReinstall)"
+ StrCpy $R3 "$(uninstallApp)"
+ !insertmacro MUI_HEADER_TEXT "$(alreadyInstalled)" "$(chooseMaintenanceOption)"
+ ; Upgrading
+ ${ElseIf} $R0 = 1
+ StrCpy $R1 "$(olderOrUnknownVersionInstalled)"
+ StrCpy $R2 "$(uninstallBeforeInstalling)"
+ StrCpy $R3 "$(dontUninstall)"
+ !insertmacro MUI_HEADER_TEXT "$(alreadyInstalled)" "$(choowHowToInstall)"
+ ; Downgrading
+ ${ElseIf} $R0 = -1
+ StrCpy $R1 "$(newerVersionInstalled)"
+ StrCpy $R2 "$(uninstallBeforeInstalling)"
+ !if "${ALLOWDOWNGRADES}" == "true"
+ StrCpy $R3 "$(dontUninstall)"
+ !else
+ StrCpy $R3 "$(dontUninstallDowngrade)"
+ !endif
+ !insertmacro MUI_HEADER_TEXT "$(alreadyInstalled)" "$(choowHowToInstall)"
+ ${Else}
+ Abort
+ ${EndIf}
+
+ ; Skip showing the page if passive
+ ;
+ ; Note that we don't call this earlier at the begining
+ ; of this function because we need to populate some variables
+ ; related to current installed version if detected and whether
+ ; we are downgrading or not.
+ ${If} $PassiveMode = 1
+ Call PageLeaveReinstall
+ ${Else}
+ nsDialogs::Create 1018
+ Pop $R4
+ ${IfThen} $(^RTL) = 1 ${|} nsDialogs::SetRTL $(^RTL) ${|}
+
+ ${NSD_CreateLabel} 0 0 100% 24u $R1
+ Pop $R1
+
+ ${NSD_CreateRadioButton} 30u 50u -30u 8u $R2
+ Pop $R2
+ ${NSD_OnClick} $R2 PageReinstallUpdateSelection
+
+ ${NSD_CreateRadioButton} 30u 70u -30u 8u $R3
+ Pop $R3
+ ; Disable this radio button if downgrading and downgrades are disabled
+ !if "${ALLOWDOWNGRADES}" == "false"
+ ${IfThen} $R0 = -1 ${|} EnableWindow $R3 0 ${|}
+ !endif
+ ${NSD_OnClick} $R3 PageReinstallUpdateSelection
+
+ ; Check the first radio button if this the first time
+ ; we enter this page or if the second button wasn't
+ ; selected the last time we were on this page
+ ${If} $ReinstallPageCheck <> 2
+ SendMessage $R2 ${BM_SETCHECK} ${BST_CHECKED} 0
+ ${Else}
+ SendMessage $R3 ${BM_SETCHECK} ${BST_CHECKED} 0
+ ${EndIf}
+
+ ${NSD_SetFocus} $R2
+ nsDialogs::Show
+ ${EndIf}
+FunctionEnd
+Function PageReinstallUpdateSelection
+ ${NSD_GetState} $R2 $R1
+ ${If} $R1 == ${BST_CHECKED}
+ StrCpy $ReinstallPageCheck 1
+ ${Else}
+ StrCpy $ReinstallPageCheck 2
+ ${EndIf}
+FunctionEnd
+Function PageLeaveReinstall
+ ${NSD_GetState} $R2 $R1
+
+ ; If migrating from Wix, always uninstall
+ ${If} $WixMode = 1
+ Goto reinst_uninstall
+ ${EndIf}
+
+ ; In update mode, always proceeds without uninstalling
+ ${If} $UpdateMode = 1
+ Goto reinst_done
+ ${EndIf}
+
+ ; $R0 holds whether same(0)/upgrading(1)/downgrading(-1) version
+ ; $R1 holds the radio buttons state:
+ ; 1 => first choice was selected
+ ; 0 => second choice was selected
+ ${If} $R0 = 0 ; Same version, proceed
+ ${If} $R1 = 1 ; User chose to add/reinstall
+ Goto reinst_done
+ ${Else} ; User chose to uninstall
+ Goto reinst_uninstall
+ ${EndIf}
+ ${ElseIf} $R0 = 1 ; Upgrading
+ ${If} $R1 = 1 ; User chose to uninstall
+ Goto reinst_uninstall
+ ${Else}
+ Goto reinst_done ; User chose NOT to uninstall
+ ${EndIf}
+ ${ElseIf} $R0 = -1 ; Downgrading
+ ${If} $R1 = 1 ; User chose to uninstall
+ Goto reinst_uninstall
+ ${Else}
+ Goto reinst_done ; User chose NOT to uninstall
+ ${EndIf}
+ ${EndIf}
+
+ reinst_uninstall:
+ HideWindow
+ ClearErrors
+
+ ${If} $WixMode = 1
+ ReadRegStr $R1 HKLM "$R6" "UninstallString"
+ ExecWait '$R1' $0
+ ${Else}
+ ReadRegStr $4 SHCTX "${MANUPRODUCTKEY}" ""
+ ReadRegStr $R1 SHCTX "${UNINSTKEY}" "UninstallString"
+ ${IfThen} $UpdateMode = 1 ${|} StrCpy $R1 "$R1 /UPDATE" ${|} ; append /UPDATE
+ ${IfThen} $PassiveMode = 1 ${|} StrCpy $R1 "$R1 /P" ${|} ; append /P
+ StrCpy $R1 "$R1 _?=$4" ; append uninstall directory
+ ExecWait '$R1' $0
+ ${EndIf}
+
+ BringToFront
+
+ ${IfThen} ${Errors} ${|} StrCpy $0 2 ${|} ; ExecWait failed, set fake exit code
+
+ ${If} $0 <> 0
+ ${OrIf} ${FileExists} "$INSTDIR\${MAINBINARYNAME}.exe"
+ ; User cancelled wix uninstaller? return to select un/reinstall page
+ ${If} $WixMode = 1
+ ${AndIf} $0 = 1602
+ Abort
+ ${EndIf}
+
+ ; User cancelled NSIS uninstaller? return to select un/reinstall page
+ ${If} $0 = 1
+ Abort
+ ${EndIf}
+
+ ; Other erros? show generic error message and return to select un/reinstall page
+ MessageBox MB_ICONEXCLAMATION "$(unableToUninstall)"
+ Abort
+ ${EndIf}
+ reinst_done:
+FunctionEnd
+
+Function PageDevKitOptions
+ ${If} $PassiveMode = 1
+ Abort
+ ${EndIf}
+
+ !insertmacro MUI_HEADER_TEXT "Install Options" "Choose whether to install the DevKit component"
+ nsDialogs::Create 1018
+ Pop $0
+ ${IfThen} $0 == error ${|} Abort ${|}
+ ${IfThen} $(^RTL) = 1 ${|} nsDialogs::SetRTL $(^RTL) ${|}
+
+ ${NSD_CreateLabel} 0 0 100% 20u "DevKit includes the local processing service used by development workflows."
+ Pop $1
+
+ ${NSD_CreateCheckbox} 0 28u 100% 12u "Install DevKit"
+ Pop $DevKitInstallCheckbox
+
+ StrCpy $DevKitInstall ${BST_CHECKED}
+ IfFileExists "$INSTDIR\uninstall.exe" 0 page_devkit_show
+ StrCpy $DevKitInstall ${BST_UNCHECKED}
+ IfFileExists "${DEVKIT_ROOT_PATH}" 0 +2
+ StrCpy $DevKitInstall ${BST_CHECKED}
+ IfFileExists "${DEVKIT_RESOURCE_PATH}" 0 +2
+ StrCpy $DevKitInstall ${BST_CHECKED}
+
+ page_devkit_show:
+ ${If} $DevKitInstall = ${BST_CHECKED}
+ ${NSD_Check} $DevKitInstallCheckbox
+ ${EndIf}
+
+ nsDialogs::Show
+FunctionEnd
+
+Function PageLeaveDevKitOptions
+ ${NSD_GetState} $DevKitInstallCheckbox $DevKitInstall
+FunctionEnd
+
+; 5. Choose install directory page
+!define MUI_PAGE_CUSTOMFUNCTION_PRE SkipIfPassive
+!insertmacro MUI_PAGE_DIRECTORY
+
+; 6. Start menu shortcut page
+Var AppStartMenuFolder
+!if "${STARTMENUFOLDER}" != ""
+ !define MUI_PAGE_CUSTOMFUNCTION_PRE SkipIfPassive
+ !define MUI_STARTMENUPAGE_DEFAULTFOLDER "${STARTMENUFOLDER}"
+!else
+ !define MUI_PAGE_CUSTOMFUNCTION_PRE Skip
+!endif
+!insertmacro MUI_PAGE_STARTMENU Application $AppStartMenuFolder
+
+; 7. Optional components page
+Page custom PageDevKitOptions PageLeaveDevKitOptions
+
+; 8. Installation page
+!insertmacro MUI_PAGE_INSTFILES
+
+; 9. Finish page
+;
+; Don't auto jump to finish page after installation page,
+; because the installation page has useful info that can be used debug any issues with the installer.
+!define MUI_FINISHPAGE_NOAUTOCLOSE
+; Use show readme button in the finish page as a button create a desktop shortcut
+!define MUI_FINISHPAGE_SHOWREADME
+!define MUI_FINISHPAGE_SHOWREADME_TEXT "$(createDesktop)"
+!define MUI_FINISHPAGE_SHOWREADME_FUNCTION CreateOrUpdateDesktopShortcut
+; Show run app after installation.
+!define MUI_FINISHPAGE_RUN
+!define MUI_FINISHPAGE_RUN_FUNCTION RunMainBinary
+!define MUI_PAGE_CUSTOMFUNCTION_PRE SkipIfPassive
+!insertmacro MUI_PAGE_FINISH
+
+Function RunMainBinary
+ nsis_tauri_utils::RunAsUser "$INSTDIR\${MAINBINARYNAME}.exe" ""
+FunctionEnd
+
+; Uninstaller Pages
+; 1. Confirm uninstall page
+Var DeleteAppDataCheckbox
+Var DeleteAppDataCheckboxState
+!define /ifndef WS_EX_LAYOUTRTL 0x00400000
+!define MUI_PAGE_CUSTOMFUNCTION_SHOW un.ConfirmShow
+Function un.ConfirmShow ; Add add a `Delete app data` check box
+ ; $1 inner dialog HWND
+ ; $2 window DPI
+ ; $3 style
+ ; $4 x
+ ; $5 y
+ ; $6 width
+ ; $7 height
+ FindWindow $1 "#32770" "" $HWNDPARENT ; Find inner dialog
+ System::Call "user32::GetDpiForWindow(p r1) i .r2"
+ ${If} $(^RTL) = 1
+ StrCpy $3 "${__NSD_CheckBox_EXSTYLE} | ${WS_EX_LAYOUTRTL}"
+ IntOp $4 50 * $2
+ ${Else}
+ StrCpy $3 "${__NSD_CheckBox_EXSTYLE}"
+ IntOp $4 0 * $2
+ ${EndIf}
+ IntOp $5 100 * $2
+ IntOp $6 400 * $2
+ IntOp $7 25 * $2
+ IntOp $4 $4 / 96
+ IntOp $5 $5 / 96
+ IntOp $6 $6 / 96
+ IntOp $7 $7 / 96
+ System::Call 'user32::CreateWindowEx(i r3, w "${__NSD_CheckBox_CLASS}", w "$(deleteAppData)", i ${__NSD_CheckBox_STYLE}, i r4, i r5, i r6, i r7, p r1, i0, i0, i0) i .s'
+ Pop $DeleteAppDataCheckbox
+ SendMessage $HWNDPARENT ${WM_GETFONT} 0 0 $1
+ SendMessage $DeleteAppDataCheckbox ${WM_SETFONT} $1 1
+FunctionEnd
+!define MUI_PAGE_CUSTOMFUNCTION_LEAVE un.ConfirmLeave
+Function un.ConfirmLeave
+ SendMessage $DeleteAppDataCheckbox ${BM_GETCHECK} 0 0 $DeleteAppDataCheckboxState
+FunctionEnd
+!define MUI_PAGE_CUSTOMFUNCTION_PRE un.SkipIfPassive
+!insertmacro MUI_UNPAGE_CONFIRM
+
+; 2. Uninstalling Page
+!insertmacro MUI_UNPAGE_INSTFILES
+
+;Languages
+{{#each languages}}
+!insertmacro MUI_LANGUAGE "{{this}}"
+{{/each}}
+!insertmacro MUI_RESERVEFILE_LANGDLL
+{{#each language_files}}
+ !include "{{this}}"
+{{/each}}
+
+Function .onInit
+ ${GetOptions} $CMDLINE "/P" $PassiveMode
+ ${IfNot} ${Errors}
+ StrCpy $PassiveMode 1
+ ${EndIf}
+
+ StrCpy $DevKitInstall ${BST_CHECKED}
+
+ ${GetOptions} $CMDLINE "/NS" $NoShortcutMode
+ ${IfNot} ${Errors}
+ StrCpy $NoShortcutMode 1
+ ${EndIf}
+
+ ${GetOptions} $CMDLINE "/UPDATE" $UpdateMode
+ ${IfNot} ${Errors}
+ StrCpy $UpdateMode 1
+ ${EndIf}
+
+ !if "${DISPLAYLANGUAGESELECTOR}" == "true"
+ !insertmacro MUI_LANGDLL_DISPLAY
+ !endif
+
+ !insertmacro SetContext
+
+ ${If} $INSTDIR == "${PLACEHOLDER_INSTALL_DIR}"
+ ; Set default install location
+ !if "${INSTALLMODE}" == "perMachine"
+ ${If} ${RunningX64}
+ !if "${ARCH}" == "x64"
+ StrCpy $INSTDIR "$PROGRAMFILES64\${PRODUCTNAME}"
+ !else if "${ARCH}" == "arm64"
+ StrCpy $INSTDIR "$PROGRAMFILES64\${PRODUCTNAME}"
+ !else
+ StrCpy $INSTDIR "$PROGRAMFILES\${PRODUCTNAME}"
+ !endif
+ ${Else}
+ StrCpy $INSTDIR "$PROGRAMFILES\${PRODUCTNAME}"
+ ${EndIf}
+ !else if "${INSTALLMODE}" == "currentUser"
+ StrCpy $INSTDIR "$LOCALAPPDATA\${PRODUCTNAME}"
+ !endif
+
+ Call RestorePreviousInstallLocation
+ ${EndIf}
+
+
+ !if "${INSTALLMODE}" == "both"
+ !insertmacro MULTIUSER_INIT
+ !endif
+FunctionEnd
+
+
+Section EarlyChecks
+ ; Abort silent installer if downgrades is disabled
+ !if "${ALLOWDOWNGRADES}" == "false"
+ ${If} ${Silent}
+ ; If downgrading
+ ${If} $R0 = -1
+ System::Call 'kernel32::AttachConsole(i -1)i.r0'
+ ${If} $0 <> 0
+ System::Call 'kernel32::GetStdHandle(i -11)i.r0'
+ System::call 'kernel32::SetConsoleTextAttribute(i r0, i 0x0004)' ; set red color
+ FileWrite $0 "$(silentDowngrades)"
+ ${EndIf}
+ Abort
+ ${EndIf}
+ ${EndIf}
+ !endif
+
+SectionEnd
+
+Section WebView2
+ ; Check if Webview2 is already installed and skip this section
+ ${If} ${RunningX64}
+ ReadRegStr $4 HKLM "SOFTWARE\WOW6432Node\Microsoft\EdgeUpdate\Clients\${WEBVIEW2APPGUID}" "pv"
+ ${Else}
+ ReadRegStr $4 HKLM "SOFTWARE\Microsoft\EdgeUpdate\Clients\${WEBVIEW2APPGUID}" "pv"
+ ${EndIf}
+ ${If} $4 == ""
+ ReadRegStr $4 HKCU "SOFTWARE\Microsoft\EdgeUpdate\Clients\${WEBVIEW2APPGUID}" "pv"
+ ${EndIf}
+
+ ${If} $4 == ""
+ ; Webview2 installation
+ ;
+ ; Skip if updating
+ ${If} $UpdateMode <> 1
+ !if "${INSTALLWEBVIEW2MODE}" == "downloadBootstrapper"
+ Delete "$TEMP\MicrosoftEdgeWebview2Setup.exe"
+ DetailPrint "$(webview2Downloading)"
+ NSISdl::download "https://go.microsoft.com/fwlink/p/?LinkId=2124703" "$TEMP\MicrosoftEdgeWebview2Setup.exe"
+ Pop $0
+ ${If} $0 == "success"
+ DetailPrint "$(webview2DownloadSuccess)"
+ ${Else}
+ DetailPrint "$(webview2DownloadError)"
+ Abort "$(webview2AbortError)"
+ ${EndIf}
+ StrCpy $6 "$TEMP\MicrosoftEdgeWebview2Setup.exe"
+ Goto install_webview2
+ !endif
+
+ !if "${INSTALLWEBVIEW2MODE}" == "embedBootstrapper"
+ Delete "$TEMP\MicrosoftEdgeWebview2Setup.exe"
+ File "/oname=$TEMP\MicrosoftEdgeWebview2Setup.exe" "${WEBVIEW2BOOTSTRAPPERPATH}"
+ DetailPrint "$(installingWebview2)"
+ StrCpy $6 "$TEMP\MicrosoftEdgeWebview2Setup.exe"
+ Goto install_webview2
+ !endif
+
+ !if "${INSTALLWEBVIEW2MODE}" == "offlineInstaller"
+ Delete "$TEMP\MicrosoftEdgeWebView2RuntimeInstaller.exe"
+ File "/oname=$TEMP\MicrosoftEdgeWebView2RuntimeInstaller.exe" "${WEBVIEW2INSTALLERPATH}"
+ DetailPrint "$(installingWebview2)"
+ StrCpy $6 "$TEMP\MicrosoftEdgeWebView2RuntimeInstaller.exe"
+ Goto install_webview2
+ !endif
+
+ Goto webview2_done
+
+ install_webview2:
+ DetailPrint "$(installingWebview2)"
+ ; $6 holds the path to the webview2 installer
+ ExecWait "$6 ${WEBVIEW2INSTALLERARGS} /install" $1
+ ${If} $1 = 0
+ DetailPrint "$(webview2InstallSuccess)"
+ ${Else}
+ DetailPrint "$(webview2InstallError)"
+ Abort "$(webview2AbortError)"
+ ${EndIf}
+ webview2_done:
+ ${EndIf}
+ ${Else}
+ !if "${MINIMUMWEBVIEW2VERSION}" != ""
+ ${VersionCompare} "${MINIMUMWEBVIEW2VERSION}" "$4" $R0
+ ${If} $R0 = 1
+ update_webview:
+ DetailPrint "$(installingWebview2)"
+ ${If} ${RunningX64}
+ ReadRegStr $R1 HKLM "SOFTWARE\WOW6432Node\Microsoft\EdgeUpdate" "path"
+ ${Else}
+ ReadRegStr $R1 HKLM "SOFTWARE\Microsoft\EdgeUpdate" "path"
+ ${EndIf}
+ ${If} $R1 == ""
+ ReadRegStr $R1 HKCU "SOFTWARE\Microsoft\EdgeUpdate" "path"
+ ${EndIf}
+ ${If} $R1 != ""
+ ; Chromium updater docs: https://source.chromium.org/chromium/chromium/src/+/main:docs/updater/user_manual.md
+ ; Modified from "HKEY_LOCAL_MACHINE\SOFTWARE\WOW6432Node\Microsoft\Windows\CurrentVersion\Uninstall\Microsoft EdgeWebView\ModifyPath"
+ ExecWait `"$R1" /install appguid=${WEBVIEW2APPGUID}&needsadmin=true` $1
+ ${If} $1 = 0
+ DetailPrint "$(webview2InstallSuccess)"
+ ${Else}
+ MessageBox MB_ICONEXCLAMATION|MB_ABORTRETRYIGNORE "$(webview2InstallError)" IDIGNORE ignore IDRETRY update_webview
+ Quit
+ ignore:
+ ${EndIf}
+ ${EndIf}
+ ${EndIf}
+ !endif
+ ${EndIf}
+SectionEnd
+
+Section Install
+ SetOutPath $INSTDIR
+
+ !ifmacrodef NSIS_HOOK_PREINSTALL
+ !insertmacro NSIS_HOOK_PREINSTALL
+ !endif
+
+ !insertmacro CheckIfAppIsRunning "${MAINBINARYNAME}.exe" "${PRODUCTNAME}"
+
+ ; Copy main executable
+ File "${MAINBINARYSRCPATH}"
+
+ ; Copy resources
+ {{#each resources_dirs}}
+ CreateDirectory "$INSTDIR\\{{this}}"
+ {{/each}}
+ {{#each resources}}
+ File /a "/oname={{this.[1]}}" "{{no-escape @key}}"
+ {{/each}}
+ ${If} $DevKitInstall <> ${BST_CHECKED}
+ Delete "${DEVKIT_ROOT_PATH}"
+ Delete "${DEVKIT_RESOURCE_PATH}"
+ ${EndIf}
+
+ ; Copy external binaries
+ {{#each binaries}}
+ File /a "/oname={{this}}" "{{no-escape @key}}"
+ {{/each}}
+
+ ; Create file associations
+ {{#each file_associations as |association| ~}}
+ {{#each association.ext as |ext| ~}}
+ !insertmacro APP_ASSOCIATE "{{ext}}" "{{or association.name ext}}" "{{association-description association.description ext}}" "$INSTDIR\${MAINBINARYNAME}.exe,0" "Open with ${PRODUCTNAME}" "$INSTDIR\${MAINBINARYNAME}.exe $\"%1$\""
+ {{/each}}
+ {{/each}}
+
+ ; Register deep links
+ {{#each deep_link_protocols as |protocol| ~}}
+ WriteRegStr SHCTX "Software\Classes\\{{protocol}}" "URL Protocol" ""
+ WriteRegStr SHCTX "Software\Classes\\{{protocol}}" "" "URL:${BUNDLEID} protocol"
+ WriteRegStr SHCTX "Software\Classes\\{{protocol}}\DefaultIcon" "" "$\"$INSTDIR\${MAINBINARYNAME}.exe$\",0"
+ WriteRegStr SHCTX "Software\Classes\\{{protocol}}\shell\open\command" "" "$\"$INSTDIR\${MAINBINARYNAME}.exe$\" $\"%1$\""
+ {{/each}}
+
+ ; Create uninstaller
+ WriteUninstaller "$INSTDIR\uninstall.exe"
+
+ ; Save $INSTDIR in registry for future installations
+ WriteRegStr SHCTX "${MANUPRODUCTKEY}" "" $INSTDIR
+
+ !if "${INSTALLMODE}" == "both"
+ ; Save install mode to be selected by default for the next installation such as updating
+ ; or when uninstalling
+ WriteRegStr SHCTX "${UNINSTKEY}" $MultiUser.InstallMode 1
+ !endif
+
+ ; Remove old main binary if it doesn't match new main binary name
+ ReadRegStr $OldMainBinaryName SHCTX "${UNINSTKEY}" "MainBinaryName"
+ ${If} $OldMainBinaryName != ""
+ ${AndIf} $OldMainBinaryName != "${MAINBINARYNAME}.exe"
+ Delete "$INSTDIR\$OldMainBinaryName"
+ ${EndIf}
+
+ ; Save current MAINBINARYNAME for future updates
+ WriteRegStr SHCTX "${UNINSTKEY}" "MainBinaryName" "${MAINBINARYNAME}.exe"
+
+ ; Registry information for add/remove programs
+ WriteRegStr SHCTX "${UNINSTKEY}" "DisplayName" "${PRODUCTNAME}"
+ WriteRegStr SHCTX "${UNINSTKEY}" "DisplayIcon" "$\"$INSTDIR\${MAINBINARYNAME}.exe$\""
+ WriteRegStr SHCTX "${UNINSTKEY}" "DisplayVersion" "${VERSION}"
+ WriteRegStr SHCTX "${UNINSTKEY}" "Publisher" "${MANUFACTURER}"
+ WriteRegStr SHCTX "${UNINSTKEY}" "InstallLocation" "$\"$INSTDIR$\""
+ WriteRegStr SHCTX "${UNINSTKEY}" "UninstallString" "$\"$INSTDIR\uninstall.exe$\""
+ WriteRegDWORD SHCTX "${UNINSTKEY}" "NoModify" "1"
+ WriteRegDWORD SHCTX "${UNINSTKEY}" "NoRepair" "1"
+
+ ${GetSize} "$INSTDIR" "/M=uninstall.exe /S=0K /G=0" $0 $1 $2
+ IntOp $0 $0 + ${ESTIMATEDSIZE}
+ IntFmt $0 "0x%08X" $0
+ WriteRegDWORD SHCTX "${UNINSTKEY}" "EstimatedSize" "$0"
+
+ !if "${HOMEPAGE}" != ""
+ WriteRegStr SHCTX "${UNINSTKEY}" "URLInfoAbout" "${HOMEPAGE}"
+ WriteRegStr SHCTX "${UNINSTKEY}" "URLUpdateInfo" "${HOMEPAGE}"
+ WriteRegStr SHCTX "${UNINSTKEY}" "HelpLink" "${HOMEPAGE}"
+ !endif
+
+ ; Create start menu shortcut
+ !insertmacro MUI_STARTMENU_WRITE_BEGIN Application
+ Call CreateOrUpdateStartMenuShortcut
+ !insertmacro MUI_STARTMENU_WRITE_END
+
+ ; Create desktop shortcut for silent and passive installers
+ ; because finish page will be skipped
+ ${If} $PassiveMode = 1
+ ${OrIf} ${Silent}
+ Call CreateOrUpdateDesktopShortcut
+ ${EndIf}
+
+ !ifmacrodef NSIS_HOOK_POSTINSTALL
+ !insertmacro NSIS_HOOK_POSTINSTALL
+ !endif
+
+ ; Auto close this page for passive mode
+ ${If} $PassiveMode = 1
+ SetAutoClose true
+ ${EndIf}
+SectionEnd
+
+Function .onInstSuccess
+ ; Check for `/R` flag only in silent and passive installers because
+ ; GUI installer has a toggle for the user to (re)start the app
+ ${If} $PassiveMode = 1
+ ${OrIf} ${Silent}
+ ${GetOptions} $CMDLINE "/R" $R0
+ ${IfNot} ${Errors}
+ ${GetOptions} $CMDLINE "/ARGS" $R0
+ nsis_tauri_utils::RunAsUser "$INSTDIR\${MAINBINARYNAME}.exe" "$R0"
+ ${EndIf}
+ ${EndIf}
+FunctionEnd
+
+Function un.onInit
+ !insertmacro SetContext
+
+ !if "${INSTALLMODE}" == "both"
+ !insertmacro MULTIUSER_UNINIT
+ !endif
+
+ !insertmacro MUI_UNGETLANGUAGE
+
+ ${GetOptions} $CMDLINE "/P" $PassiveMode
+ ${IfNot} ${Errors}
+ StrCpy $PassiveMode 1
+ ${EndIf}
+
+ ${GetOptions} $CMDLINE "/UPDATE" $UpdateMode
+ ${IfNot} ${Errors}
+ StrCpy $UpdateMode 1
+ ${EndIf}
+FunctionEnd
+
+Section Uninstall
+
+ !ifmacrodef NSIS_HOOK_PREUNINSTALL
+ !insertmacro NSIS_HOOK_PREUNINSTALL
+ !endif
+
+ !insertmacro CheckIfAppIsRunning "${MAINBINARYNAME}.exe" "${PRODUCTNAME}"
+
+ ; Delete the app directory and its content from disk
+ ; Copy main executable
+ Delete "$INSTDIR\${MAINBINARYNAME}.exe"
+
+ ; Delete resources
+ {{#each resources}}
+ Delete "$INSTDIR\\{{this.[1]}}"
+ {{/each}}
+
+ ; Delete external binaries
+ {{#each binaries}}
+ Delete "$INSTDIR\\{{this}}"
+ {{/each}}
+
+ ; Delete app associations
+ {{#each file_associations as |association| ~}}
+ {{#each association.ext as |ext| ~}}
+ !insertmacro APP_UNASSOCIATE "{{ext}}" "{{or association.name ext}}"
+ {{/each}}
+ {{/each}}
+
+ ; Delete deep links
+ {{#each deep_link_protocols as |protocol| ~}}
+ ReadRegStr $R7 SHCTX "Software\Classes\\{{protocol}}\shell\open\command" ""
+ ${If} $R7 == "$\"$INSTDIR\${MAINBINARYNAME}.exe$\" $\"%1$\""
+ DeleteRegKey SHCTX "Software\Classes\\{{protocol}}"
+ ${EndIf}
+ {{/each}}
+
+
+ ; Delete uninstaller
+ Delete "$INSTDIR\uninstall.exe"
+
+ {{#each resources_ancestors}}
+ RMDir /REBOOTOK "$INSTDIR\\{{this}}"
+ {{/each}}
+ RMDir "$INSTDIR"
+
+ ; Remove shortcuts if not updating
+ ${If} $UpdateMode <> 1
+ !insertmacro DeleteAppUserModelId
+
+ ; Remove start menu shortcut
+ !insertmacro MUI_STARTMENU_GETFOLDER Application $AppStartMenuFolder
+ !insertmacro IsShortcutTarget "$SMPROGRAMS\$AppStartMenuFolder\${PRODUCTNAME}.lnk" "$INSTDIR\${MAINBINARYNAME}.exe"
+ Pop $0
+ ${If} $0 = 1
+ !insertmacro UnpinShortcut "$SMPROGRAMS\$AppStartMenuFolder\${PRODUCTNAME}.lnk"
+ Delete "$SMPROGRAMS\$AppStartMenuFolder\${PRODUCTNAME}.lnk"
+ RMDir "$SMPROGRAMS\$AppStartMenuFolder"
+ ${EndIf}
+ !insertmacro IsShortcutTarget "$SMPROGRAMS\${PRODUCTNAME}.lnk" "$INSTDIR\${MAINBINARYNAME}.exe"
+ Pop $0
+ ${If} $0 = 1
+ !insertmacro UnpinShortcut "$SMPROGRAMS\${PRODUCTNAME}.lnk"
+ Delete "$SMPROGRAMS\${PRODUCTNAME}.lnk"
+ ${EndIf}
+
+ ; Remove desktop shortcuts
+ !insertmacro IsShortcutTarget "$DESKTOP\${PRODUCTNAME}.lnk" "$INSTDIR\${MAINBINARYNAME}.exe"
+ Pop $0
+ ${If} $0 = 1
+ !insertmacro UnpinShortcut "$DESKTOP\${PRODUCTNAME}.lnk"
+ Delete "$DESKTOP\${PRODUCTNAME}.lnk"
+ ${EndIf}
+ ${EndIf}
+
+ ; Remove registry information for add/remove programs
+ !if "${INSTALLMODE}" == "both"
+ DeleteRegKey SHCTX "${UNINSTKEY}"
+ !else if "${INSTALLMODE}" == "perMachine"
+ DeleteRegKey HKLM "${UNINSTKEY}"
+ !else
+ DeleteRegKey HKCU "${UNINSTKEY}"
+ !endif
+
+ ; Removes the Autostart entry for ${PRODUCTNAME} from the HKCU Run key if it exists.
+ ; This ensures the program does not launch automatically after uninstallation if it exists.
+ ; If it doesn't exist, it does nothing.
+ ; We do this when not updating (to preserve the registry value on updates)
+ ${If} $UpdateMode <> 1
+ DeleteRegValue HKCU "Software\Microsoft\Windows\CurrentVersion\Run" "${PRODUCTNAME}"
+ ${EndIf}
+
+ ; Delete app data if the checkbox is selected
+ ; and if not updating
+ ${If} $DeleteAppDataCheckboxState = 1
+ ${AndIf} $UpdateMode <> 1
+ ; Clear the install location $INSTDIR from registry
+ DeleteRegKey SHCTX "${MANUPRODUCTKEY}"
+ DeleteRegKey /ifempty SHCTX "${MANUKEY}"
+
+ ; Clear the install language from registry
+ DeleteRegValue HKCU "${MANUPRODUCTKEY}" "Installer Language"
+ DeleteRegKey /ifempty HKCU "${MANUPRODUCTKEY}"
+ DeleteRegKey /ifempty HKCU "${MANUKEY}"
+
+ SetShellVarContext current
+ RmDir /r "$APPDATA\${BUNDLEID}"
+ RmDir /r "$LOCALAPPDATA\${BUNDLEID}"
+ ${EndIf}
+
+ !ifmacrodef NSIS_HOOK_POSTUNINSTALL
+ !insertmacro NSIS_HOOK_POSTUNINSTALL
+ !endif
+
+ ; Auto close if passive mode or updating
+ ${If} $PassiveMode = 1
+ ${OrIf} $UpdateMode = 1
+ SetAutoClose true
+ ${EndIf}
+SectionEnd
+
+Function RestorePreviousInstallLocation
+ ReadRegStr $4 SHCTX "${MANUPRODUCTKEY}" ""
+ StrCmp $4 "" +2 0
+ StrCpy $INSTDIR $4
+FunctionEnd
+
+Function Skip
+ Abort
+FunctionEnd
+
+Function SkipIfPassive
+ ${IfThen} $PassiveMode = 1 ${|} Abort ${|}
+FunctionEnd
+Function un.SkipIfPassive
+ ${IfThen} $PassiveMode = 1 ${|} Abort ${|}
+FunctionEnd
+
+Function CreateOrUpdateStartMenuShortcut
+ ; We used to use product name as MAINBINARYNAME
+ ; migrate old shortcuts to target the new MAINBINARYNAME
+ StrCpy $R0 0
+
+ !insertmacro IsShortcutTarget "$SMPROGRAMS\$AppStartMenuFolder\${PRODUCTNAME}.lnk" "$INSTDIR\$OldMainBinaryName"
+ Pop $0
+ ${If} $0 = 1
+ !insertmacro SetShortcutTarget "$SMPROGRAMS\$AppStartMenuFolder\${PRODUCTNAME}.lnk" "$INSTDIR\${MAINBINARYNAME}.exe"
+ StrCpy $R0 1
+ ${EndIf}
+
+ !insertmacro IsShortcutTarget "$SMPROGRAMS\${PRODUCTNAME}.lnk" "$INSTDIR\$OldMainBinaryName"
+ Pop $0
+ ${If} $0 = 1
+ !insertmacro SetShortcutTarget "$SMPROGRAMS\${PRODUCTNAME}.lnk" "$INSTDIR\${MAINBINARYNAME}.exe"
+ StrCpy $R0 1
+ ${EndIf}
+
+ ${If} $R0 = 1
+ Return
+ ${EndIf}
+
+ ; Skip creating shortcut if in update mode or no shortcut mode
+ ; but always create if migrating from wix
+ ${If} $WixMode = 0
+ ${If} $UpdateMode = 1
+ ${OrIf} $NoShortcutMode = 1
+ Return
+ ${EndIf}
+ ${EndIf}
+
+ !if "${STARTMENUFOLDER}" != ""
+ CreateDirectory "$SMPROGRAMS\$AppStartMenuFolder"
+ CreateShortcut "$SMPROGRAMS\$AppStartMenuFolder\${PRODUCTNAME}.lnk" "$INSTDIR\${MAINBINARYNAME}.exe"
+ !insertmacro SetLnkAppUserModelId "$SMPROGRAMS\$AppStartMenuFolder\${PRODUCTNAME}.lnk"
+ !else
+ CreateShortcut "$SMPROGRAMS\${PRODUCTNAME}.lnk" "$INSTDIR\${MAINBINARYNAME}.exe"
+ !insertmacro SetLnkAppUserModelId "$SMPROGRAMS\${PRODUCTNAME}.lnk"
+ !endif
+FunctionEnd
+
+Function CreateOrUpdateDesktopShortcut
+ ; We used to use product name as MAINBINARYNAME
+ ; migrate old shortcuts to target the new MAINBINARYNAME
+ !insertmacro IsShortcutTarget "$DESKTOP\${PRODUCTNAME}.lnk" "$INSTDIR\$OldMainBinaryName"
+ Pop $0
+ ${If} $0 = 1
+ !insertmacro SetShortcutTarget "$DESKTOP\${PRODUCTNAME}.lnk" "$INSTDIR\${MAINBINARYNAME}.exe"
+ Return
+ ${EndIf}
+
+ ; Skip creating shortcut if in update mode or no shortcut mode
+ ; but always create if migrating from wix
+ ${If} $WixMode = 0
+ ${If} $UpdateMode = 1
+ ${OrIf} $NoShortcutMode = 1
+ Return
+ ${EndIf}
+ ${EndIf}
+
+ CreateShortcut "$DESKTOP\${PRODUCTNAME}.lnk" "$INSTDIR\${MAINBINARYNAME}.exe"
+ !insertmacro SetLnkAppUserModelId "$DESKTOP\${PRODUCTNAME}.lnk"
+FunctionEnd
diff --git a/src-tauri/resources/model_params.json b/src-tauri/resources/model_params.json
new file mode 100644
index 0000000..c83f635
--- /dev/null
+++ b/src-tauri/resources/model_params.json
@@ -0,0 +1,217 @@
+{
+ "scaler_mean": [
+ 1748.7541486595198,
+ 1292.5704664084863,
+ 669.8700117864961,
+ 1617.8798712839798,
+ 2104.589811228976,
+ 3267.658809002638,
+ 3366.4000112252343,
+ 2660.981740285495,
+ 2656.615909898786,
+ 1747.1196048717518,
+ 3093.4178032216423,
+ 3107.599371386878,
+ 4138.929019101607,
+ 3778.3928270752654,
+ 3495.851920450506,
+ 3110.5580063983834,
+ 2310.8518456156107,
+ 2899.8918261585377,
+ 3286.6881442816784,
+ 3601.237076948981,
+ 2590.9553048586554,
+ 2555.2781425978933,
+ 2004.8764850049579,
+ 1333.8961665824775,
+ 2090.217507623805,
+ 0.363302046990876,
+ 0.2506597877765041,
+ 0.12741811820991292,
+ 0.32195020821212794,
+ 0.43317540002685884,
+ 0.7725988160553472,
+ 0.791227193907261,
+ 0.5957799875116326,
+ 0.5873844015441929,
+ 0.35855586659016336,
+ 0.7267512979672636,
+ 0.7214172326166498,
+ 1.0,
+ 0.9089476753706724,
+ 0.8226695360434777,
+ 0.7208819781157673,
+ 0.5152795489332506,
+ 0.6711736481838434,
+ 0.7782925265622518,
+ 0.8648282061576593,
+ 0.5787625095682526,
+ 0.5752349727514727,
+ 0.43456864805018935,
+ 0.27668525082454587,
+ 0.47414670304783574,
+ 4138.929019101607,
+ 64531.08183195824,
+ 175620.92531477427,
+ 22.847729696357412,
+ 14.671691561018095,
+ 0.07533558084489102,
+ 12446.865764906175,
+ 47945.287047950456,
+ 2.8973185436828195,
+ 10.774373017335268,
+ 3.472192991899253,
+ -0.013941562889309035,
+ 0.09672681097411825,
+ 0.5067195499928454,
+ 0.755407246398865,
+ 0.03711810817384146,
+ 11.154421806888552,
+ 64500.8986854629
+ ],
+ "scaler_scale": [
+ 1458.5456651154973,
+ 1319.8585484401115,
+ 798.8535944732339,
+ 1467.8233720347457,
+ 1637.8964913406842,
+ 1330.3349975112737,
+ 1391.430499849884,
+ 1444.166940848846,
+ 1630.948040054198,
+ 1406.2203759964518,
+ 1289.9699402243327,
+ 1442.0533616965101,
+ 1437.7214049715994,
+ 1393.522474091575,
+ 1468.6421185157626,
+ 1449.3479990930084,
+ 1293.2464048717598,
+ 1331.2560392843097,
+ 1326.1289536453178,
+ 1357.3405110533047,
+ 1452.4854193036483,
+ 1348.4425883366337,
+ 1318.1429721243371,
+ 1059.93845215709,
+ 1114.1647557935548,
+ 0.2395898634701691,
+ 0.21706962815914935,
+ 0.13523106483202163,
+ 0.23880331588910964,
+ 0.24830003478347082,
+ 0.1464527498295455,
+ 0.15391677914992113,
+ 0.18125664726966026,
+ 0.2326879002599809,
+ 0.23502163992653513,
+ 0.13026800431597335,
+ 0.15563022147466685,
+ 1.0,
+ 0.09922737602626737,
+ 0.18291931318098986,
+ 0.15401181704844932,
+ 0.2143892844194339,
+ 0.16856049162074294,
+ 0.15902500893917185,
+ 0.18285009098439925,
+ 0.17264751056304276,
+ 0.21090366624550771,
+ 0.16802111677577075,
+ 0.19264329284433157,
+ 0.19589977001187556,
+ 1437.7214049715994,
+ 32602.413979370118,
+ 95845.11969895993,
+ 3.426376344472427,
+ 3.408382770733738,
+ 0.033353666248921464,
+ 5505.629576226806,
+ 25703.01200969283,
+ 0.4599551450527747,
+ 2.978321440052941,
+ 0.3916581766443181,
+ 0.06096090153067211,
+ 0.07864618660494935,
+ 0.0344984508436715,
+ 0.17668176728315207,
+ 0.18905119470509504,
+ 5352.30503788098,
+ 32297.31796957845
+ ],
+ "ridge_coef": [
+ 7.4424310127566695,
+ 13.345966730219576,
+ 2.351840055857306,
+ 6.088230738742203,
+ -10.030964629299273,
+ 3.876136979406362,
+ -11.251608537526174,
+ 16.84502390958064,
+ -2.093552796584439,
+ -5.784923711493545,
+ -6.67830546424787,
+ -4.654052249161928,
+ 6.038218458133514,
+ 9.82412450487401,
+ -6.200667839175651,
+ -0.3133364534713342,
+ -8.75036029102127,
+ 12.785901861589027,
+ -3.7296377182327123,
+ 6.546167384121816,
+ -4.984129287282208,
+ 8.311396481777527,
+ -0.6248790895663127,
+ 2.69008779623183,
+ 12.996047839696784,
+ -2.2609944767610504,
+ -5.131537716982507,
+ 0.3988922195665723,
+ -5.197736884253156,
+ 4.556854888903703,
+ -0.8642438099006351,
+ 6.327731485629085,
+ -5.157281763422745,
+ 0.10691827520622764,
+ 4.656962972053113,
+ 3.2628870750114887,
+ 4.033159141354671,
+ 0.0,
+ -2.9206404009765268,
+ 1.8683691849941264,
+ 2.408006875407745,
+ 7.250310827671452,
+ -3.97015207422554,
+ 0.7316093212194048,
+ -3.459346094204882,
+ 2.4407660203169255,
+ -2.872982666400644,
+ 1.8797071977799857,
+ -1.3374700235689694,
+ -7.9533345474852295,
+ 6.038063637368508,
+ 1.615806581558555,
+ 95785.62883805836,
+ 0.12233606167692031,
+ -0.1515900264871255,
+ 2.2023033069961873,
+ 8.776787743985668,
+ -0.16714060634667535,
+ -2.751671223554021,
+ 0.2511944267079865,
+ 6.13561607395193,
+ 2.85703108671782,
+ -0.11255626089468472,
+ -0.9017242341101542,
+ -0.627291200283328,
+ 3.4664885582435883,
+ 0.02591345630626686,
+ 0.5530407299425606
+ ],
+ "ridge_intercept": 175620.9253147744,
+ "n_features": 68,
+ "noise_threshold": 15.0,
+ "contact_threshold": 20.0,
+ "ema_alpha": 0.9
+}
\ No newline at end of file
diff --git a/src-tauri/src/serial_core/basin_force_estimator.rs b/src-tauri/src/serial_core/basin_force_estimator.rs
new file mode 100644
index 0000000..21a8e9b
--- /dev/null
+++ b/src-tauri/src/serial_core/basin_force_estimator.rs
@@ -0,0 +1,397 @@
+//! 7×12 柔性压力点阵力估计 - Rust 实现
+//!
+//! 与 Python `basin_feature_extractor.py` 完全对齐。
+//! 内嵌 `model_params.json`,对每帧 7×12 传感器数据提取 68 维特征并用
+//! StandardScaler + Ridge 回归估计法向力 Fz。
+
+use serde::Deserialize;
+
+// ───────────────── 常量 ─────────────────
+
+const ROWS: usize = 7;
+const COLS: usize = 12;
+const ROI_RADIUS: usize = 2;
+const ROI_SIZE: usize = 2 * ROI_RADIUS + 1; // 5
+const N_FEATURES: usize = 68; // 25 + 25 + 18
+
+// ───────────────── 模型参数 JSON(编译时嵌入)─────────────────
+
+const MODEL_PARAMS_JSON: &str = include_str!("../../resources/model_params.json");
+
+// ───────────────── 模型参数反序列化 ─────────────────
+
+#[derive(Debug, Deserialize)]
+struct ModelParams {
+ scaler_mean: Vec,
+ scaler_scale: Vec,
+ ridge_coef: Vec,
+ ridge_intercept: f64,
+ n_features: usize,
+ noise_threshold: f64,
+ contact_threshold: f64,
+ ema_alpha: f64,
+}
+
+// ───────────────── 估算器 ─────────────────
+
+pub struct BasinForceEstimator {
+ // 模型参数
+ scaler_mean: [f64; N_FEATURES],
+ scaler_scale: [f64; N_FEATURES],
+ ridge_coef: [f64; N_FEATURES],
+ ridge_intercept: f64,
+ // 超参数
+ noise_threshold: f64,
+ contact_threshold: f64,
+ ema_alpha: f64,
+ // 时序状态(需要可变)
+ prev_roi_sum: f64,
+ ema_sum: f64,
+ first_frame: bool,
+}
+
+impl BasinForceEstimator {
+ /// 使用编译时内嵌的 model_params.json 创建估算器
+ pub fn new() -> Self {
+ Self::from_json_str(MODEL_PARAMS_JSON)
+ .expect("内嵌 model_params.json 加载失败")
+ }
+
+ pub fn from_json_str(json: &str) -> Result> {
+ let p: ModelParams = serde_json::from_str(json)?;
+ if p.n_features != N_FEATURES {
+ return Err(format!(
+ "模型特征维度不匹配: 期望 {}, 实际 {}",
+ N_FEATURES, p.n_features
+ )
+ .into());
+ }
+ let mut scaler_mean = [0.0; N_FEATURES];
+ let mut scaler_scale = [0.0; N_FEATURES];
+ let mut ridge_coef = [0.0; N_FEATURES];
+ scaler_mean.copy_from_slice(&p.scaler_mean);
+ scaler_scale.copy_from_slice(&p.scaler_scale);
+ ridge_coef.copy_from_slice(&p.ridge_coef);
+
+ Ok(Self {
+ scaler_mean,
+ scaler_scale,
+ ridge_coef,
+ ridge_intercept: p.ridge_intercept,
+ noise_threshold: p.noise_threshold,
+ contact_threshold: p.contact_threshold,
+ ema_alpha: p.ema_alpha,
+ prev_roi_sum: 0.0,
+ ema_sum: 0.0,
+ first_frame: true,
+ })
+ }
+
+ pub fn reset(&mut self) {
+ self.prev_roi_sum = 0.0;
+ self.ema_sum = 0.0;
+ self.first_frame = true;
+ }
+
+ pub fn predict_frame(&mut self, frame: &[f64; 84]) -> f64 {
+ let features = self.extract_features(frame);
+ self.ridge_predict(&features)
+ }
+
+ // ───────────── 特征提取 ─────────────
+
+ fn extract_features(&mut self, raw: &[f64; 84]) -> [f64; N_FEATURES] {
+ let mut x = [[0.0f64; COLS]; ROWS];
+ let mut max_value = 0.0f64;
+ for r in 0..ROWS {
+ for c in 0..COLS {
+ let v = raw[r * COLS + c].max(0.0);
+ x[r][c] = v;
+ if v > max_value {
+ max_value = v;
+ }
+ }
+ }
+
+ if max_value < self.contact_threshold {
+ self.update_temporal(0.0);
+ return [0.0; N_FEATURES];
+ }
+
+ let mut peak_row = 0usize;
+ let mut peak_col = 0usize;
+ for r in 0..ROWS {
+ for c in 0..COLS {
+ if x[r][c] >= x[peak_row][peak_col] {
+ peak_row = r;
+ peak_col = c;
+ }
+ }
+ }
+
+ let roi = self.extract_roi(&x, peak_row, peak_col);
+ self.compute_features(&x, &roi, max_value, peak_row, peak_col)
+ }
+
+ fn extract_roi(
+ &self,
+ x: &[[f64; COLS]; ROWS],
+ pr: usize,
+ pc: usize,
+ ) -> [[f64; ROI_SIZE]; ROI_SIZE] {
+ let r = ROI_RADIUS as isize;
+ let mut roi = [[0.0f64; ROI_SIZE]; ROI_SIZE];
+
+ let r_start = (pr as isize - r).max(0) as usize;
+ let r_end = (pr + ROI_RADIUS + 1).min(ROWS);
+ let c_start = (pc as isize - r).max(0) as usize;
+ let c_end = (pc + ROI_RADIUS + 1).min(COLS);
+
+ let roi_r_start = (r_start as isize - (pr as isize - r)).max(0) as usize;
+ let roi_c_start = (c_start as isize - (pc as isize - r)).max(0) as usize;
+
+ for (i, ri) in (r_start..r_end).enumerate() {
+ for (j, ci) in (c_start..c_end).enumerate() {
+ roi[roi_r_start + i][roi_c_start + j] = x[ri][ci];
+ }
+ }
+ roi
+ }
+
+ fn compute_features(
+ &mut self,
+ x: &[[f64; COLS]; ROWS],
+ roi: &[[f64; ROI_SIZE]; ROI_SIZE],
+ max_value: f64,
+ peak_row: usize,
+ peak_col: usize,
+ ) -> [f64; N_FEATURES] {
+ let center = ROI_RADIUS;
+ let mut feat = [0.0f64; N_FEATURES];
+ let mut idx = 0;
+
+ // ROI 原始值 (25维)
+ for r in 0..ROI_SIZE {
+ for c in 0..ROI_SIZE {
+ feat[idx] = roi[r][c];
+ idx += 1;
+ }
+ }
+
+ // ROI 归一化形状 (25维)
+ for r in 0..ROI_SIZE {
+ for c in 0..ROI_SIZE {
+ feat[idx] = if max_value > 0.0 {
+ roi[r][c] / max_value
+ } else {
+ 0.0
+ };
+ idx += 1;
+ }
+ }
+
+ // roi_sum, global_sum
+ let mut roi_sum = 0.0f64;
+ for r in 0..ROI_SIZE {
+ for c in 0..ROI_SIZE {
+ roi_sum += roi[r][c];
+ }
+ }
+ let mut global_sum = 0.0f64;
+ for r in 0..ROWS {
+ for c in 0..COLS {
+ global_sum += x[r][c];
+ }
+ }
+
+ // active_area
+ let thr = self.noise_threshold.max(0.05 * max_value);
+ let mut active_area = 0.0f64;
+ for r in 0..ROI_SIZE {
+ for c in 0..ROI_SIZE {
+ if roi[r][c] > thr {
+ active_area += 1.0;
+ }
+ }
+ }
+
+ let participation = if max_value > 0.0 {
+ roi_sum / max_value
+ } else {
+ 0.0
+ };
+ let concentration = if roi_sum > 0.0 {
+ max_value / roi_sum
+ } else {
+ 0.0
+ };
+
+ // ring1_sum (上下左右4点)
+ let ring1_positions = [
+ (center - 1, center),
+ (center + 1, center),
+ (center, center - 1),
+ (center, center + 1),
+ ];
+ let ring1_sum: f64 = ring1_positions.iter().map(|&(r, c)| roi[r][c]).sum();
+
+ // ring2_sum (除中心和ring1外)
+ let mut ring2_sum = 0.0f64;
+ for r in 0..ROI_SIZE {
+ for c in 0..ROI_SIZE {
+ if (r, c) == (center, center) {
+ continue;
+ }
+ if ring1_positions.contains(&(r, c)) {
+ continue;
+ }
+ ring2_sum += roi[r][c];
+ }
+ }
+
+ let ring1_ratio = if max_value > 0.0 {
+ ring1_sum / max_value
+ } else {
+ 0.0
+ };
+ let ring2_ratio = if max_value > 0.0 {
+ ring2_sum / max_value
+ } else {
+ 0.0
+ };
+
+ // spread
+ let spread = if roi_sum > 0.0 {
+ let mut s = 0.0f64;
+ for r in 0..ROI_SIZE {
+ for c in 0..ROI_SIZE {
+ let dr = r as f64 - center as f64;
+ let dc = c as f64 - center as f64;
+ s += (dr * dr + dc * dc) * roi[r][c];
+ }
+ }
+ s / roi_sum
+ } else {
+ 0.0
+ };
+
+ // asym_x
+ let mut left_sum = 0.0f64;
+ let mut right_sum = 0.0f64;
+ for r in 0..ROI_SIZE {
+ for c in 0..center {
+ left_sum += roi[r][c];
+ }
+ for c in (center + 1)..ROI_SIZE {
+ right_sum += roi[r][c];
+ }
+ }
+ let asym_x = if roi_sum > 0.0 {
+ (right_sum - left_sum) / roi_sum
+ } else {
+ 0.0
+ };
+
+ // asym_y
+ let mut up_sum = 0.0f64;
+ let mut down_sum = 0.0f64;
+ for r in 0..center {
+ for c in 0..ROI_SIZE {
+ up_sum += roi[r][c];
+ }
+ }
+ for r in (center + 1)..ROI_SIZE {
+ for c in 0..ROI_SIZE {
+ down_sum += roi[r][c];
+ }
+ }
+ let asym_y = if roi_sum > 0.0 {
+ (down_sum - up_sum) / roi_sum
+ } else {
+ 0.0
+ };
+
+ // 位置
+ let peak_row_norm = peak_row as f64 / (ROWS - 1) as f64;
+ let peak_col_norm = peak_col as f64 / (COLS - 1) as f64;
+
+ // near_edge
+ let r = ROI_RADIUS as isize;
+ let near_edge = if (peak_row as isize) < r
+ || peak_row >= ROWS - ROI_RADIUS
+ || (peak_col as isize) < r
+ || peak_col >= COLS - ROI_RADIUS
+ {
+ 1.0
+ } else {
+ 0.0
+ };
+
+ // 时序特征
+ let delta_sum = roi_sum - self.prev_roi_sum;
+ if self.first_frame {
+ self.ema_sum = roi_sum;
+ self.first_frame = false;
+ } else {
+ self.ema_sum = self.ema_alpha * self.ema_sum + (1.0 - self.ema_alpha) * roi_sum;
+ }
+ self.prev_roi_sum = roi_sum;
+
+ let scalars = [
+ max_value,
+ roi_sum,
+ global_sum,
+ active_area,
+ participation,
+ concentration,
+ ring1_sum,
+ ring2_sum,
+ ring1_ratio,
+ ring2_ratio,
+ spread,
+ asym_x,
+ asym_y,
+ peak_row_norm,
+ peak_col_norm,
+ near_edge,
+ delta_sum,
+ self.ema_sum,
+ ];
+ for &v in &scalars {
+ feat[idx] = v;
+ idx += 1;
+ }
+
+ debug_assert_eq!(idx, N_FEATURES);
+ feat
+ }
+
+ fn update_temporal(&mut self, roi_sum: f64) {
+ self.prev_roi_sum = roi_sum;
+ if self.first_frame {
+ self.ema_sum = roi_sum;
+ self.first_frame = false;
+ } else {
+ self.ema_sum = self.ema_alpha * self.ema_sum + (1.0 - self.ema_alpha) * roi_sum;
+ }
+ }
+
+ // ───────────── 推理 ─────────────
+
+ fn ridge_predict(&self, features: &[f64; N_FEATURES]) -> f64 {
+ let mut scaled = [0.0f64; N_FEATURES];
+ for i in 0..N_FEATURES {
+ let s = self.scaler_scale[i];
+ scaled[i] = if s.abs() > 1e-12 {
+ (features[i] - self.scaler_mean[i]) / s
+ } else {
+ 0.0
+ };
+ }
+ let mut y = self.ridge_intercept;
+ for i in 0..N_FEATURES {
+ y += self.ridge_coef[i] * scaled[i];
+ }
+ y
+ }
+}
\ No newline at end of file
diff --git a/src-tauri/src/serial_core/codecs/tactile_a.rs b/src-tauri/src/serial_core/codecs/tactile_a.rs
index a8bcee0..ecb63d1 100644
--- a/src-tauri/src/serial_core/codecs/tactile_a.rs
+++ b/src-tauri/src/serial_core/codecs/tactile_a.rs
@@ -12,7 +12,7 @@ use async_trait::async_trait;
use csv::StringRecord;
use anyhow::anyhow;
use std::io::Read;
-use log::debug;
+use log::{debug, info};
const FRAME_BUFFER_MIN_LENGTH: usize = 15;
@@ -226,6 +226,7 @@ impl Codec for TactileACodec {
req_bytes.extend_from_slice((f.meta.except_data_len as u16).to_le_bytes().as_slice());
let checksum = calc_crc8_itu(req_bytes.as_slice());
req_bytes.push(checksum);
+ info!("send: {:02X?}", req_bytes);
Ok(req_bytes)
}
_ => {
diff --git a/src-tauri/src/serial_core/mod.rs b/src-tauri/src/serial_core/mod.rs
index 3a3e73c..b15232c 100644
--- a/src-tauri/src/serial_core/mod.rs
+++ b/src-tauri/src/serial_core/mod.rs
@@ -13,6 +13,7 @@ pub mod record;
pub mod utils;
#[cfg(feature = "multi-dim")]
pub mod multi_dim_force;
+pub mod basin_force_estimator;
pub type TestRecording = Recording;
pub type TactileARecording = Recording;
diff --git a/src-tauri/src/serial_core/serial.rs b/src-tauri/src/serial_core/serial.rs
index fca733d..07b10b1 100644
--- a/src-tauri/src/serial_core/serial.rs
+++ b/src-tauri/src/serial_core/serial.rs
@@ -1,3 +1,4 @@
+use crate::serial_core::basin_force_estimator::BasinForceEstimator;
use crate::serial_core::codec::Codec;
use crate::serial_core::codecs::tactile_a::TactileACodec;
use crate::serial_core::frame::{FrameHandler, TactileAFrame, TestFrame};
@@ -233,6 +234,7 @@ where
let mut prune_interval = time::interval(Duration::from_millis(450));
#[cfg(feature = "multi-dim")]
let mut pzt_processor = PztProcessor::new();
+ let mut force_estimator = BasinForceEstimator::new();
let mut pending_sub_frame: Option> = None;
prune_interval.set_missed_tick_behavior(MissedTickBehavior::Delay);
@@ -309,6 +311,16 @@ where
drop(record);
if let Some(vals) = decode_res {
+ // Basin force estimation (pre-force)
+ if vals.len() == 84 {
+ let mut frame_f64 = [0.0f64; 84];
+ for (i, v) in vals.iter().enumerate() {
+ frame_f64[i] = *v as f64;
+ }
+ let pre_force = force_estimator.predict_frame(&frame_f64);
+ debug!("pre-force: {:.2}", pre_force);
+ }
+
#[cfg(feature = "multi-dim")]
{
let pzt_values = vals.iter().map(|value| *value as f32).collect::>();
diff --git a/src-tauri/tauri.conf.json b/src-tauri/tauri.conf.json
index fb0bbfe..22b5def 100644
--- a/src-tauri/tauri.conf.json
+++ b/src-tauri/tauri.conf.json
@@ -23,7 +23,7 @@
}
},
"bundle": {
- "createUpdaterArtifacts": true,
+ "createUpdaterArtifacts": false,
"active": true,
"targets": "all",
"icon": [
diff --git a/src/indicator/indicator498.py b/src/indicator/indicator498.py
new file mode 100644
index 0000000..bf61415
--- /dev/null
+++ b/src/indicator/indicator498.py
@@ -0,0 +1,747 @@
+from typing import Dict, List, Tuple
+import numpy as np
+from indicator.base import Indicator
+import math
+
+
+class EMA:
+ """指数移动平均"""
+
+ @staticmethod
+ def calc(data: np.ndarray, period: int) -> np.ndarray:
+ alpha = 2.0 / (period + 1)
+ out = np.empty_like(data)
+ out[0] = data[0]
+ for i in range(1, len(data)):
+ out[i] = alpha * data[i] + (1 - alpha) * out[i - 1]
+ return out
+
+
+class SMA:
+ """简单移动平均"""
+
+ @staticmethod
+ def calc(data: np.ndarray, period: int) -> np.ndarray:
+ out = np.full_like(data, np.nan)
+ if len(data) < period:
+ return out
+ cumsum = np.cumsum(data)
+ out[period - 1:] = (cumsum[period - 1:] - np.concatenate([[0], cumsum[:-period]])) / period
+ return out
+
+
+def true_range(high: np.ndarray, low: np.ndarray, close: np.ndarray) -> np.ndarray:
+ """True Range"""
+ tr = np.empty(len(high))
+ tr[0] = high[0] - low[0]
+ for i in range(1, len(high)):
+ tr[i] = max(high[i] - low[i], abs(high[i] - close[i - 1]), abs(low[i] - close[i - 1]))
+ return tr
+
+
+class SignalTracker:
+ """逐帧更新的信号追踪器(无回看依赖,纯实时)"""
+
+ def __init__(
+ self,
+ ob_threshold: float = 80,
+ os_threshold: float = 20,
+ dist_extreme: float = 5,
+ dist_far: float = 15,
+ dist_mid: float = 30,
+ macd_th: float = 0.3,
+ rsi_ob: float = 70,
+ rsi_os: float = 30,
+ di_gap_bull: float = 15,
+ di_gap_bear: float = -15,
+ aroon_ob: float = 80,
+ aroon_os: float = 20,
+ williams_ob: float = -20,
+ williams_os: float = -80,
+ bias_ob: float = 5,
+ bias_os: float = -5,
+ ):
+ self.ob_threshold = ob_threshold
+ self.os_threshold = os_threshold
+ self.dist_extreme = dist_extreme
+ self.dist_far = dist_far
+ self.dist_mid = dist_mid
+ self.macd_th = macd_th
+ self.rsi_ob = rsi_ob
+ self.rsi_os = rsi_os
+ self.di_gap_bull = di_gap_bull
+ self.di_gap_bear = di_gap_bear
+ self.aroon_ob = aroon_ob
+ self.aroon_os = aroon_os
+ self.williams_ob = williams_ob
+ self.williams_os = williams_os
+ self.bias_ob = bias_ob
+ self.bias_os = bias_os
+
+ # 状态缓存
+ self._intp_buy_sma: float = 0.0
+ self._intp_sell_sma: float = 0.0
+ self._intp_sma_count: int = 0
+ self._max_qtb_score: float = 0.0
+ self._bull_count: int = 0
+ self._bear_count: int = 0
+ self._last_bull_idx: int = -100
+ self._last_bear_idx: int = -100
+ self._frame_idx: int = 0
+
+ # 历史缓冲区(保留最近200帧用于EMA/SMA/DI计算)
+ self._buf_size: int = 200
+ self._bbi_buf: List[float] = []
+ self._amplitude_buf: List[float] = []
+ self._close_buf: List[float] = []
+ self._high_buf: List[float] = []
+ self._low_buf: List[float] = []
+ self._wr_buf: List[float] = []
+
+ def reset(self):
+ """重置所有状态"""
+ self._intp_buy_sma = 0.0
+ self._intp_sell_sma = 0.0
+ self._intp_sma_count = 0
+ self._max_qtb_score = 0.0
+ self._bull_count = 0
+ self._bear_count = 0
+ self._last_bull_idx = -100
+ self._last_bear_idx = -100
+ self._frame_idx = 0
+ self._bbi_buf.clear()
+ self._amplitude_buf.clear()
+ self._close_buf.clear()
+ self._high_buf.clear()
+ self._low_buf.clear()
+ self._wr_buf.clear()
+
+ def _append_buf(self, buf: List[float], val: float):
+ buf.append(val)
+ if len(buf) > self._buf_size:
+ buf.pop(0)
+
+ def _ema_val(self, buf: List[float], period: int) -> float:
+ """返回缓冲区中最后一个EMA值"""
+ if len(buf) < period:
+ return buf[-1] if buf else 0.0
+ arr = np.array(buf, dtype=float)
+ ema = EMA.calc(arr, period)
+ return float(ema[-1])
+
+ def _sma_val(self, buf: List[float], period: int) -> float:
+ if len(buf) < period:
+ return np.nan
+ arr = np.array(buf, dtype=float)
+ sma = SMA.calc(arr, period)
+ return float(sma[-1])
+
+ def get_signals(
+ self,
+ amplitude: float,
+ bbi: float,
+ cci: float,
+ close: float,
+ dmk: float,
+ high: float,
+ k: float,
+ low: float,
+ qtb_score: float,
+ result: float,
+ wr: float,
+ percent: float,
+ v0: float,
+ boll_upper: float,
+ boll_lower: float,
+ macd_val: float,
+ pmacd: float,
+ bias: float,
+ ) -> Tuple[str, str, str, str]:
+ """
+ 逐帧更新,返回 (market_status, signal_type, intensity, detail)
+
+ 不依赖历史数组,所有指标值由外部实时计算后传入。
+ """
+
+ # ─── 更新缓冲区 ───
+ self._append_buf(self._bbi_buf, bbi)
+ self._append_buf(self._amplitude_buf, amplitude)
+ self._append_buf(self._close_buf, close)
+ self._append_buf(self._high_buf, high)
+ self._append_buf(self._low_buf, low)
+ self._append_buf(self._wr_buf, wr)
+
+ # ─── 指标因子计算(使用传入值 + 缓冲区衍生值)───
+ k_macd = self._k_macd_factor(k, macd_val, pmacd)
+ k_di = self._k_di_factor(dmk, amplitude, close)
+ k_aroon = self._k_aroon_factor(high, low, close)
+ k_williams = self._k_williams_factor(wr)
+ k_result = self._k_result_factor(result)
+ k_bias = self._k_bias_factor(bias)
+ k_trix = self._k_trix_factor(close)
+ k_ema = self._k_ema_factor(close)
+ k_amplitude = self._k_amplitude_factor(amplitude)
+
+ # ─── 累计 ───
+ k_bull = k_macd + k_di + k_aroon + k_williams + k_result + k_bias + k_trix + k_ema + k_amplitude
+ k_bear = k_macd + k_di + k_aroon + k_williams + k_result + k_bias + k_trix + k_ema + k_amplitude
+
+ if result > self.ob_threshold and k_bull > 0 and result >= 90:
+ k_bull *= 1.5
+
+ # ─── 指数平滑 ───
+ if self._intp_sma_count == 0:
+ self._intp_buy_sma = k_bull
+ self._intp_sell_sma = k_bear
+ self._intp_sma_count = 1
+ else:
+ self._intp_sma_count += 1
+ period = max(3, min(5, self._intp_sma_count))
+ alpha = 2.0 / (period + 1)
+ self._intp_buy_sma = alpha * k_bull + (1 - alpha) * self._intp_buy_sma
+ self._intp_sell_sma = alpha * k_bear + (1 - alpha) * self._intp_sell_sma
+
+ # ─── 趋势确认与背离检测 ───
+ is_bull_div, is_bear_div = self._detect_divergence(close, result)
+ if is_bull_div:
+ self._intp_buy_sma *= 1.3
+ k_bull *= 1.3
+ if is_bear_div:
+ self._intp_sell_sma *= 1.3
+ k_bear *= 1.3
+
+ is_bull, is_bear = self._detect_trend(close)
+ if is_bull:
+ self._intp_buy_sma *= 1.15
+ k_bull *= 1.15
+ if is_bear:
+ self._intp_sell_sma *= 1.15
+ k_bear *= 1.15
+
+ wmacd = self._wmacd()
+ if wmacd > 0:
+ k_bull += wmacd * 0.5
+ elif wmacd < 0:
+ k_bear += abs(wmacd) * 0.5
+
+ if qtb_score > self._max_qtb_score * 0.7:
+ pass
+ elif qtb_score < 3 and qtb_score > 1:
+ k_bull *= 0.85
+ k_bear *= 0.85
+
+ # ─── 信号分类 ───
+ max_k = max(abs(k_bull), abs(k_bear))
+ if max_k > 0:
+ buy_score = ((k_bull + max_k) / (2 * max_k)) * 100
+ sell_score = ((k_bear + max_k) / (2 * max_k)) * 100
+ else:
+ buy_score = sell_score = 50
+
+ bull_t = buy_score > 70 and result < 90
+ bear_t = sell_score > 70 and result > 10
+ k_cci = cci / 300
+ boll_mid = self._boll_mid()
+
+ is_bull_t = (
+ bull_t
+ and k_bull > k_cci
+ and close < boll_mid
+ and (
+ (result > 65 and result < 85 and k_bull > 0 and k_bear > 0 and (k_bear - k_bull < 1.5 or result > 75))
+ or (result < 35 and result > 15 and k_bear > 0 and k_bull > 0 and (k_bull - k_bear < 1.5 or result < 25))
+ )
+ )
+ is_bear_t = (
+ bear_t
+ and k_bear > k_cci
+ and close > boll_mid
+ and (
+ (result > 65 and result < 85 and k_bull > 0 and k_bear > 0 and (k_bear - k_bull < 1.5 or result > 75))
+ or (result < 35 and result > 15 and k_bear > 0 and k_bull > 0 and (k_bull - k_bear < 1.5 or result < 25))
+ )
+ )
+
+ if is_bull_t:
+ self._bull_count += 1
+ self._bear_count = 0
+ self._last_bull_idx = self._frame_idx
+ elif is_bear_t:
+ self._bear_count += 1
+ self._bull_count = 0
+ self._last_bear_idx = self._frame_idx
+ else:
+ self._bull_count = max(self._bull_count - 1, 0)
+ self._bear_count = max(self._bear_count - 1, 0)
+
+ # ─── 信号输出 ───
+ sig_strength = 1.0 + max(0, (self._bull_count - 3) * 0.1) + max(0, (self._bear_count - 3) * 0.1)
+
+ strength = (
+ "极强" if sig_strength >= 1.7
+ else "强" if sig_strength >= 1.4
+ else "中" if sig_strength >= 1.1
+ else "弱"
+ )
+
+ if buy_score >= sell_score:
+ signal = f"买{strength}"
+ else:
+ signal = f"卖{strength}"
+
+ # ─── 市场状态 ───
+ if abs(buy_score - sell_score) < 10:
+ status = "中性震荡"
+ elif buy_score > sell_score:
+ if self._bull_count >= 3:
+ status = "强势上涨"
+ elif result > self.ob_threshold:
+ status = "高位企稳"
+ else:
+ status = "温和上涨"
+ else:
+ if self._bear_count >= 3:
+ status = "强势下跌"
+ elif result < self.os_threshold:
+ status = "低位企稳"
+ else:
+ status = "温和下跌"
+
+ # ─── 距离 ───
+ boll_len = boll_upper - boll_lower
+ if boll_len > 0:
+ dist_ratio = (close - boll_lower) / boll_len * 100
+ else:
+ dist_ratio = 50
+
+ if dist_ratio < 50 - self.dist_extreme:
+ dist = "极端超卖"
+ elif dist_ratio < 50 - self.dist_far:
+ dist = "远离"
+ elif dist_ratio < 50 - self.dist_mid:
+ dist = "偏离"
+ elif dist_ratio < 50 + self.dist_mid:
+ dist = "接近"
+ elif dist_ratio < 50 + self.dist_far:
+ dist = "靠近"
+ elif dist_ratio < 50 + self.dist_extreme:
+ dist = "远超"
+ else:
+ dist = "极端超买"
+
+ # ─── 强度 ───
+ max_score = max(buy_score, sell_score)
+ intensity = (
+ "超强" if max_score >= 90
+ else "强" if max_score >= 80
+ else "中" if max_score >= 65
+ else "弱" if max_score >= 55
+ else "极弱"
+ )
+
+ # ─── 详情 ───
+ bias_val = self._ema_bias()
+ bbp_val = self._boll_pct_b(close, boll_upper, boll_lower)
+ detail = (
+ f"前量:{percent:.1f} 数量:{int(amplitude):03d} 百分比:{bbp_val:.1f} "
+ f"正:{k_bull:.1f} 负:{k_bear:.1f} 连买:{self._bull_count} 连卖:{self._bear_count} "
+ f"误差:{bias_val:.1f}"
+ )
+
+ self._frame_idx += 1
+ return status, signal, intensity, detail
+
+ # ═══════════════════════════════════════════════════
+ # 指标因子(全部基于实时数据,无回看窗口)
+ # ═══════════════════════════════════════════════════
+
+ def _k_macd_factor(self, k: float, macd_val: float, pmacd: float) -> float:
+ is_ob = k > self.ob_threshold
+ is_os = k < self.os_threshold
+ k_macd = 0.0
+ if is_ob or is_os:
+ if macd_val < 0:
+ if is_os and k < 30 and pmacd > 0 and pmacd <= 10 and macd_val > 1.5:
+ k_macd = 3.5
+ elif is_ob and k > 80 and macd_val > 3 and abs(pmacd) < 5:
+ k_macd = -3.5
+ elif pmacd < 0 and macd_val < 0:
+ if abs(pmacd) > 15 and macd_val >= -0.5:
+ k_macd = 3.5
+ elif 5 < abs(pmacd) < 15 and macd_val > 0.7:
+ k_macd = 3.5
+ elif pmacd > 0 and macd_val > 0:
+ if pmacd >= 15 and macd_val < 0.5:
+ k_macd = -3.5
+ elif 5 < pmacd < 15 and macd_val < -0.7:
+ k_macd = -3.5
+ elif macd_val >= 3:
+ k_macd = macd_val * 1.5
+ elif macd_val <= -3:
+ k_macd = macd_val * 1.5
+ return k_macd
+
+ def _k_di_factor(self, dmk: float, amplitude: float, close: float) -> float:
+ if len(self._close_buf) < 20:
+ return 0.0
+ k_close = np.array(self._close_buf, dtype=float)
+ period = 14
+ if len(k_close) < period + 1:
+ return 0.0
+ dx_list = []
+ for i in range(1, min(period + 1, len(k_close))):
+ diff = k_close[-i] - k_close[-i - 1]
+ dx_list.append(diff)
+ if not dx_list:
+ return 0.0
+ last_diff = dx_list[0]
+ adx_val = abs(dmk) * 0.5
+
+ k_di = 0.0
+ if adx_val < 20:
+ return 0.0
+ if dmk > 0 and len(dx_list) > 5:
+ gains = [d for d in dx_list[:5] if d > 0]
+ if len(gains) >= 3 and last_diff > 0:
+ k_di = min(adx_val / 5, 6.0)
+ elif dmk < 0 and len(dx_list) > 5:
+ losses = [d for d in dx_list[:5] if d < 0]
+ if len(losses) >= 3 and last_diff < 0:
+ k_di = -min(adx_val / 5, 6.0)
+ return k_di
+
+ def _k_aroon_factor(self, high: float, low: float, close: float) -> float:
+ period = 14
+ if len(self._high_buf) < period:
+ return 0.0
+ highs = self._high_buf[-period:]
+ lows = self._low_buf[-period:]
+ highest = max(highs)
+ lowest = min(lows)
+ rng = highest - lowest
+ if rng == 0:
+ return 0.0
+ k_aroon = 0.0
+ pct = (close - lowest) / rng * 100
+ if pct >= self.aroon_ob:
+ if close >= highest * 0.995:
+ k_aroon = -2.0
+ else:
+ k_aroon = 2.0
+ elif pct <= self.aroon_os:
+ if close <= lowest * 1.005:
+ k_aroon = 2.0
+ else:
+ k_aroon = -2.0
+ else:
+ k_aroon = (pct - 50) / 50 * 1.2
+ return k_aroon
+
+ def _k_williams_factor(self, wr: float) -> float:
+ k_wr = 0.0
+ if wr > self.williams_ob:
+ if wr > -10:
+ k_wr = -1.2
+ else:
+ k_wr = -0.8
+ elif wr < self.williams_os:
+ if wr < -90:
+ k_wr = 1.2
+ else:
+ k_wr = 0.8
+ return k_wr
+
+ def _k_result_factor(self, result: float) -> float:
+ k_result = 0.0
+ is_ob = result > self.ob_threshold
+ is_os = result < self.os_threshold
+ if is_os and result < 10:
+ k_result = 1.5
+ elif is_ob and result > 90:
+ k_result = -1.5
+ return k_result
+
+ def _k_bias_factor(self, bias: float) -> float:
+ k_bias = 0.0
+ if bias < self.bias_os and bias < -3:
+ k_bias = min(abs(bias) / 5, 2.5)
+ elif bias > self.bias_ob and bias > 3:
+ k_bias = -min(abs(bias) / 5, 2.5)
+ return k_bias
+
+ def _k_trix_factor(self, close: float) -> float:
+ ema3 = self._ema_val(self._close_buf, 3)
+ ema9 = self._ema_val(self._close_buf, 9)
+ if ema9 == 0:
+ return 0.0
+ trix = (ema3 - ema9) / ema9 * 100
+ k_trix = 0.0
+ if trix > 0:
+ k_trix = min(trix / 2, 3.0)
+ elif trix < 0:
+ k_trix = max(trix / 2, -3.0)
+ return k_trix
+
+ def _k_ema_factor(self, close: float) -> float:
+ ema9 = self._ema_val(self._close_buf, 9)
+ if ema9 == 0:
+ return 0.0
+ bias = (close - ema9) / ema9 * 100
+ k_ema = 0.0
+ if bias < -2:
+ k_ema = min(abs(bias) * 0.3, 2.0)
+ elif bias > 2:
+ k_ema = -min(abs(bias) * 0.3, 2.0)
+ return k_ema
+
+ def _k_amplitude_factor(self, amplitude: float) -> float:
+ if len(self._amplitude_buf) < 10:
+ return 0.0
+ buf = self._amplitude_buf[-10:]
+ mean = sum(buf) / len(buf)
+ if mean == 0:
+ return 0.0
+ ratio = (amplitude - mean) / mean
+ k_amp = 0.0
+ if ratio > 0.5:
+ k_amp = min(ratio * 1.5, 3.0)
+ elif ratio < -0.3:
+ k_amp = max(ratio * 1.5, -3.0)
+ return k_amp
+
+ def _detect_divergence(self, close: float, result: float) -> Tuple[bool, bool]:
+ """简化背离检测(基于累计计数)"""
+ is_bull_div = False
+ is_bear_div = False
+ if len(self._close_buf) > 30:
+ c30 = self._close_buf[-30]
+ if close > c30 * 1.05 and result < 50:
+ is_bull_div = True
+ elif close < c30 * 0.95 and result > 50:
+ is_bear_div = True
+ return is_bull_div, is_bear_div
+
+ def _detect_trend(self, close: float) -> Tuple[bool, bool]:
+ """简化趋势确认"""
+ is_bull = False
+ is_bear = False
+ if len(self._close_buf) > 20:
+ c20 = self._close_buf[-20]
+ if close > c20 * 1.05:
+ is_bull = True
+ elif close < c20 * 0.95:
+ is_bear = True
+ return is_bull, is_bear
+
+ def _wmacd(self) -> float:
+ """简化加权MACD(基于缓冲区)"""
+ if len(self._close_buf) < 12:
+ return 0.0
+ ema12 = self._ema_val(self._close_buf, 12)
+ ema26 = self._ema_val(self._close_buf, 26)
+ return ema12 - ema26
+
+ def _boll_mid(self) -> float:
+ if len(self._close_buf) < 20:
+ return self._close_buf[-1] if self._close_buf else 0.0
+ return sum(self._close_buf[-20:]) / 20
+
+ def _ema_bias(self) -> float:
+ if not self._close_buf:
+ return 0.0
+ ema5 = self._ema_val(self._close_buf, 5)
+ ema10 = self._ema_val(self._close_buf, 10)
+ if ema10 == 0:
+ return 0.0
+ return (ema5 - ema10) / ema10 * 1000
+
+ def _boll_pct_b(self, close: float, upper: float, lower: float) -> float:
+ boll_len = upper - lower
+ if boll_len == 0:
+ return 50.0
+ return (close - lower) / boll_len * 100
+
+
+def get_signals(indicator: Indicator) -> Tuple[str, str, str, str]:
+ """
+ 基于技术指标生成交易信号(逐帧调用版)
+
+ 参数:
+ indicator: Indicator 对象,包含所有实时指标值
+
+ 返回:
+ tuple: (market_status, signal_type, intensity, detail)
+ """
+ # ─── 指标提取 ───
+ bbi = indicator.BBI
+ amplitude = indicator.AMPLITUDE
+ cci = indicator.CCI
+ close = indicator.CLOSE
+ dmk = indicator.DMK
+ high = indicator.HIGH
+ k = indicator.K
+ low = indicator.LOW
+ macd_val = indicator.MACD
+ ob = indicator.OB
+ os_ = indicator.OS
+ ovs = indicator.OVS
+ ovc = indicator.OVC
+ result = indicator.RESULT
+ wr = indicator.WR
+ percent = indicator.PERCENT
+ v0 = indicator.V0
+ boll_upper = indicator.BOLL_UP
+ boll_lower = indicator.BOLL_LO
+ bias = indicator.BIAS
+
+ # ─── 指标阈值 ───
+ ob_threshold = ob if ob > 0 else 80
+ os_threshold = os_ if os_ > 0 else 20
+ dist_extreme = ovc if ovc > 0 else 5
+ dist_far = ovs if ovs > 0 else 15
+ dist_mid = 30
+ macd_th = 0.3
+ rsi_ob = ovc if ovc > 0 else 70
+ rsi_os = ovs if ovs > 0 else 30
+ di_gap_bull = ovc if ovc > 0 else 15
+ di_gap_bear = -di_gap_bull
+ aroon_ob = ob_threshold
+ aroon_os = os_threshold
+ williams_ob = -20
+ williams_os = -80
+ bias_ob = 5
+ bias_os = -5
+
+ # ─── 指标因子 ───
+ pmacd = getattr(indicator, 'PMACD', macd_val)
+
+ k_macd = _k_macd_factor(ob_threshold, os_threshold, k, macd_val, pmacd)
+ k_di = _k_di_factor(dmk, amplitude, close)
+ k_aroon = _k_aroon_factor(aroon_ob, aroon_os, high, low, close)
+ k_williams = _k_williams_factor(williams_ob, williams_os, wr)
+ k_result = _k_result_factor(ob_threshold, os_threshold, result)
+ k_bias = _k_bias_factor(bias_ob, bias_os, bias)
+
+ # ─── K值累计 ───
+ k_bull = k_macd + k_di + k_aroon + k_williams + k_result + k_bias
+ k_bear = k_macd + k_di + k_aroon + k_williams + k_result + k_bias
+
+ if result > ob_threshold and k_bull > 0 and result >= 90:
+ k_bull *= 1.5
+
+ # ─── 强度计算 ───
+ max_k = max(abs(k_bull), abs(k_bear))
+ if max_k > 0:
+ buy_score = ((k_bull + max_k) / (2 * max_k)) * 100
+ sell_score = ((k_bear + max_k) / (2 * max_k)) * 100
+ else:
+ buy_score = sell_score = 50
+
+ # ─── 信号判断 ───
+ bull_t = buy_score > 70 and result < 90
+ bear_t = sell_score > 70 and result > 10
+
+ k_cci = cci / 300
+ boll_mid = indicator.BOLL_MID if hasattr(indicator, 'BOLL_MID') else (boll_upper + boll_lower) / 2
+ boll_len = boll_upper - boll_lower
+
+ is_bull_t = (
+ bull_t
+ and k_bull > k_cci
+ and close < boll_mid
+ and (
+ (result > 65 and result < 85 and k_bull > 0 and k_bear > 0 and (k_bear - k_bull < 1.5 or result > 75))
+ or (result < 35 and result > 15 and k_bear > 0 and k_bull > 0 and (k_bull - k_bear < 1.5 or result < 25))
+ )
+ )
+ is_bear_t = (
+ bear_t
+ and k_bear > k_cci
+ and close > boll_mid
+ and (
+ (result > 65 and result < 85 and k_bull > 0 and k_bear > 0 and (k_bear - k_bull < 1.5 or result > 75))
+ or (result < 35 and result > 15 and k_bear > 0 and k_bull > 0 and (k_bull - k_bear < 1.5 or result < 25))
+ )
+ )
+
+ # ─── 信号强度 ───
+ sig_strength = 1.0
+ if is_bull_t:
+ sig_strength += 0.3 + max(0, (result - 70) / 30)
+ elif is_bear_t:
+ sig_strength += 0.3 + max(0, (30 - result) / 30)
+
+ strength = (
+ "极强" if sig_strength >= 1.7
+ else "强" if sig_strength >= 1.4
+ else "中" if sig_strength >= 1.1
+ else "弱"
+ )
+
+ # ─── 信号类型 ───
+ if is_bull_t:
+ signal = f"买{strength}"
+ elif is_bear_t:
+ signal = f"卖{strength}"
+ else:
+ signal = "观望"
+
+ # ─── 市场状态 ───
+ if abs(buy_score - sell_score) < 10:
+ status = "中性震荡"
+ elif buy_score > sell_score:
+ if result > ob_threshold:
+ status = "高位企稳"
+ else:
+ status = "温和上涨"
+ else:
+ if result < os_threshold:
+ status = "低位企稳"
+ else:
+ status = "温和下跌"
+
+ # ─── 距离 ───
+ if boll_len > 0:
+ dist_ratio = (close - boll_lower) / boll_len * 100
+ else:
+ dist_ratio = 50
+
+ if dist_ratio < 50 - dist_extreme:
+ dist = "极端超卖"
+ elif dist_ratio < 50 - dist_far:
+ dist = "远离"
+ elif dist_ratio < 50 - dist_mid:
+ dist = "偏离"
+ elif dist_ratio < 50 + dist_mid:
+ dist = "接近"
+ elif dist_ratio < 50 + dist_far:
+ dist = "靠近"
+ elif dist_ratio < 50 + dist_extreme:
+ dist = "远超"
+ else:
+ dist = "极端超买"
+
+ # ─── 强度标签 ───
+ max_score = max(buy_score, sell_score)
+ intensity = (
+ "超强" if max_score >= 90
+ else "强" if max_score >= 80
+ else "中" if max_score >= 65
+ else "弱" if max_score >= 55
+ else "极弱"
+ )
+
+ # ─── 详情 ───
+ ema5 = indicator.EMA5 if hasattr(indicator, 'EMA5') else close
+ ema10 = indicator.EMA10 if hasattr(indicator, 'EMA10') else close
+ ema20 = indicator.EMA20 if hasattr(indicator, 'EMA20') else close
+ bias_val = (ema5 - ema10) / ema10 * 1000 if ema10 != 0 else 0
+
+ bbp_val = (close - boll_lower) / boll_len * 100 if boll_len > 0 else 50
+
+ detail = (
+ f"前量:{percent:.1f} 数量:{int(amplitude):03d} 百分比:{bbp_val:.1f} "
+ f"正:{k_bull:.1f} 负:{k_bear:.1f}"
+ )
+
+ return status, signal, intensity, detail
\ No newline at end of file