{ "info": { "author": "bakatrouble", "author_email": "bakatrouble@gmail.com", "bugtrack_url": null, "classifiers": [ "Development Status :: 3 - Alpha", "Intended Audience :: Developers", "License :: OSI Approved :: GNU Lesser General Public License v3 or later (LGPLv3+)", "Operating System :: OS Independent", "Programming Language :: C++", "Programming Language :: Python", "Programming Language :: Python :: 3", "Programming Language :: Python :: 3 :: Only", "Programming Language :: Python :: 3.5", "Programming Language :: Python :: 3.6", "Programming Language :: Python :: 3.7", "Programming Language :: Python :: Implementation", "Programming Language :: Python :: Implementation :: CPython", "Topic :: Communications", "Topic :: Communications :: Internet Phone", "Topic :: Internet", "Topic :: Software Development :: Libraries", "Topic :: Software Development :: Libraries :: Python Modules" ], "description": "# pytgvoip\n \n[![Read the Docs](https://img.shields.io/readthedocs/pytgvoip.svg)](https://pytgvoip.rtfd.io) [![PyPI](https://img.shields.io/pypi/v/pytgvoip.svg?style=flat)](https://pypi.org/project/pytgvoip/) [![AppVeyor (windows wheels)](https://img.shields.io/appveyor/ci/bakatrouble/pylibtgvoip.svg?label=windows%20wheels%20build&style=flat)](https://ci.appveyor.com/project/bakatrouble/pylibtgvoip) ![LGPLv3+](https://img.shields.io/pypi/l/pytgvoip.svg?style=flat)\n \n**Telegram VoIP Library for Python**\n\n[Community](https://t.me/pytgvoip) | [Documentation](https://pytgvoip.rtfd.io)\n\n**PytgVoIP** is a [Telegram](https://telegram.org/) VoIP library written in Python and C++.\n\nIt uses [libtgvoip](https://github.com/grishka/libtgvoip) (a library used in official clients) \nfor voice encoding and transmission, and [pybind11](https://github.com/pybind/pybind11) for simple \ngeneration of Python extension written in C++.\n\nIt is targeted to MTProto client library developers, detailed usage guide is available [here](https://pytgvoip.readthedocs.io/en/latest/guides/usage.html).\n\nAn example of usage with [Pyrogram](https://github.com/pyrogram/pyrogram) is available [here](https://github.com/bakatrouble/pytgvoip_pyrogram) ([`pytgvoip_pyrogram` in PyPI](https://pypi.org/project/pytgvoip_pyrogram/)), could be used as reference.\n\nHopefully this module support will be [integrated in Pyrogram itself](https://github.com/pyrogram/pyrogram/pull/218), also [@cher-nov](https://github.com/cher-nov) has plans to integrate it into [Telethon](https://github.com/LonamiWebs/Telethon) as well\n\n## Features\n* Python callbacks for sending and receiving audio stream frames allow flexible control\n* Pre-built Windows wheels in PyPI\n\n## Requirements\n* Python 3.5 or higher\n\nLinux, MacOS: (use binary wheels from PyPI for Windows)\n* [libtgvoip](https://pytgvoip.readthedocs.io/en/latest/guides/libtgvoip.html)\n* CMake, C++11-compatible compiler, Python headers\n\n## Installing\n```pip3 install pytgvoip```\n\nInstall [`pytgvoip_pyrogram`](https://github.com/bakatrouble/pytgvoip_pyrogram) to use this module with Pyrogram.\n\n\n## Encoding audio streams\nStreams consumed by `libtgvoip` should be encoded in 16-bit signed PCM audio.\n```bash\n$ ffmpeg -i input.mp3 -f s16le -ac 1 -ar 48000 -acodec pcm_s16le input.raw # encode\n$ ffmpeg -f s16le -ac 1 -ar 48000 -acodec pcm_s16le -i output.raw output.mp3 # decode\n```\n\n## Copyright & License\n* Copyright (C) 2019 [bakatrouble](https://github.com/bakatrouble)\n* Licensed under the terms of the [GNU Lesser General Public License v3 or later (LGPLv3+)](COPYING.lesser)", "description_content_type": "text/markdown", "docs_url": null, "download_url": "", "downloads": { "last_day": -1, "last_month": -1, "last_week": -1 }, "home_page": "https://github.com/bakatrouble/pytgvoip", "keywords": "telegram messenger voip library python", "license": "LGPLv3+", "maintainer": "", "maintainer_email": "", "name": "pytgvoip", "package_url": "https://pypi.org/project/pytgvoip/", "platform": "", "project_url": "https://pypi.org/project/pytgvoip/", "project_urls": { "Community": "https:/t.me/pytgvoip", "Homepage": "https://github.com/bakatrouble/pytgvoip", "Source": "https://github.com/bakatrouble/pytgvoip", "Tracker": "https://github.com/bakatrouble/pytgvoip/issues" }, "release_url": "https://pypi.org/project/pytgvoip/0.0.7.1/", "requires_dist": null, "requires_python": "", "summary": "Telegram VoIP Library for Python", "version": "0.0.7.1", "yanked": false, "yanked_reason": null }, "last_serial": 7545441, "releases": { "0.0.5": [ { "comment_text": "", "digests": { "md5": "4a7eb54b734915a3104194e4f447e96a", "sha256": "f461698aac9cddbb8132d0485a2941c8bcceb1a36f9bceefbe8c5a32b5522c1d" }, "downloads": -1, "filename": "pytgvoip-0.0.5-cp35-cp35m-win32.whl", "has_sig": false, "md5_digest": "4a7eb54b734915a3104194e4f447e96a", "packagetype": "bdist_wheel", "python_version": "cp35", "requires_python": null, "size": 5385030, "upload_time": "2020-01-26T05:14:16", "upload_time_iso_8601": "2020-01-26T05:14:16.717759Z", "url": "https://files.pythonhosted.org/packages/12/a9/53a93ffbe0b08b707540ee26ee25cc2e7d945ebf76bbf062ffa6c81d4e8e/pytgvoip-0.0.5-cp35-cp35m-win32.whl", "yanked": false, "yanked_reason": null }, { "comment_text": "", "digests": { "md5": "34c144bdb190315a309d9f3c696404de", "sha256": "fb3144cf87cb4a5e6bc59bbf874cbb21b5e46881263bab266c28288174044c44" }, "downloads": -1, "filename": "pytgvoip-0.0.5-cp35-cp35m-win_amd64.whl", "has_sig": false, "md5_digest": "34c144bdb190315a309d9f3c696404de", "packagetype": "bdist_wheel", "python_version": "cp35", "requires_python": null, "size": 5581241, "upload_time": "2020-01-26T05:28:06", "upload_time_iso_8601": "2020-01-26T05:28:06.007387Z", "url": "https://files.pythonhosted.org/packages/6d/75/deddd4c2e8fbf8b9fc08a964b4d0463a5b60d18c9b4c73287ef9be8f6526/pytgvoip-0.0.5-cp35-cp35m-win_amd64.whl", "yanked": false, "yanked_reason": null }, { "comment_text": "", "digests": { "md5": "927e8bdeb64e5e929293519538fefcff", "sha256": "d15c04e79346e011a9f126b073ba555bb52534e813f9f8b7aed5f75e735edcc8" }, "downloads": -1, "filename": "pytgvoip-0.0.5-cp36-cp36m-win32.whl", "has_sig": false, "md5_digest": "927e8bdeb64e5e929293519538fefcff", "packagetype": "bdist_wheel", "python_version": "cp36", "requires_python": null, "size": 5385535, "upload_time": "2020-01-26T04:46:20", "upload_time_iso_8601": "2020-01-26T04:46:20.137760Z", "url": "https://files.pythonhosted.org/packages/11/6d/0b1ccfb1a727b659a275ac73242bb6e1cd36cb8b13a3214198630623ecf0/pytgvoip-0.0.5-cp36-cp36m-win32.whl", "yanked": false, "yanked_reason": null }, { "comment_text": "", "digests": { "md5": "26e17688c7ef60e67df3f1881ae12cd7", "sha256": "5229be28e6be4bafbf71f167da28f2a3e2d825da63739855a0b0173b37769793" }, "downloads": -1, "filename": "pytgvoip-0.0.5-cp36-cp36m-win_amd64.whl", "has_sig": false, "md5_digest": "26e17688c7ef60e67df3f1881ae12cd7", "packagetype": "bdist_wheel", "python_version": "cp36", "requires_python": null, "size": 5581669, "upload_time": "2020-01-26T05:00:01", "upload_time_iso_8601": "2020-01-26T05:00:01.102148Z", "url": "https://files.pythonhosted.org/packages/e3/85/219d3eb908b30b51f4d08268a33283297e4640086d203475eb93d2791892/pytgvoip-0.0.5-cp36-cp36m-win_amd64.whl", "yanked": false, "yanked_reason": null }, { "comment_text": "", "digests": { "md5": "8c59ae4aa94c8b5a59380459e959baaf", "sha256": "b1d02625f3ac939a6c95a7e0eb5c6ea4fc784e9b104b98d57da931c9f627791c" }, "downloads": -1, "filename": "pytgvoip-0.0.5-cp37-cp37m-win32.whl", "has_sig": false, "md5_digest": "8c59ae4aa94c8b5a59380459e959baaf", "packagetype": "bdist_wheel", "python_version": "cp37", "requires_python": null, "size": 5386642, "upload_time": "2020-01-26T04:18:26", "upload_time_iso_8601": "2020-01-26T04:18:26.383719Z", "url": "https://files.pythonhosted.org/packages/41/71/cd2edc318052a17833e8afc13741db55c630bdaf0ece6a71d1c9c551fea1/pytgvoip-0.0.5-cp37-cp37m-win32.whl", "yanked": false, "yanked_reason": null }, { "comment_text": "", "digests": { "md5": "d64114126ac7c478e8cc2aba5e8bcc98", "sha256": "6f511464b1172bafa005c40624ac73b97b140da105387dafa13919a54e263f35" }, "downloads": -1, "filename": "pytgvoip-0.0.5-cp37-cp37m-win_amd64.whl", "has_sig": false, "md5_digest": "d64114126ac7c478e8cc2aba5e8bcc98", "packagetype": "bdist_wheel", "python_version": "cp37", "requires_python": null, "size": 5583281, "upload_time": "2020-01-26T04:32:07", "upload_time_iso_8601": "2020-01-26T04:32:07.302500Z", "url": "https://files.pythonhosted.org/packages/19/8d/ce8189504cb83cc701f1efb40398112b95aa097cb246c4bab491a98ad539/pytgvoip-0.0.5-cp37-cp37m-win_amd64.whl", "yanked": false, "yanked_reason": null }, { "comment_text": "", "digests": { "md5": "2c4a5b733b2e1aa2f9de74d05c85524c", "sha256": "292b8e387a42570dadd51bc1a0b4ae82d611c844757852d3faaadd742d0ab8b4" }, "downloads": -1, "filename": "pytgvoip-0.0.5-cp38-cp38-win32.whl", "has_sig": false, "md5_digest": "2c4a5b733b2e1aa2f9de74d05c85524c", "packagetype": "bdist_wheel", "python_version": "cp38", "requires_python": null, "size": 5399840, "upload_time": "2020-01-26T03:48:08", "upload_time_iso_8601": "2020-01-26T03:48:08.596978Z", "url": "https://files.pythonhosted.org/packages/9b/1c/870c6e06504620af72e3af63a65a4f1267fbbe1b0c1180cff06d8c8cede9/pytgvoip-0.0.5-cp38-cp38-win32.whl", "yanked": false, "yanked_reason": null }, { "comment_text": "", "digests": { "md5": "77361d9b44c7d3d84d5c0c09e832d9f7", "sha256": "7ab46d2a2e25ab09d36f2e4d0de0a6f111cd49b52bc4f23a398d4d351940b7f4" }, "downloads": -1, "filename": "pytgvoip-0.0.5-cp38-cp38-win_amd64.whl", "has_sig": false, "md5_digest": "77361d9b44c7d3d84d5c0c09e832d9f7", "packagetype": "bdist_wheel", "python_version": "cp38", "requires_python": null, "size": 5597592, "upload_time": "2020-01-26T04:02:06", "upload_time_iso_8601": "2020-01-26T04:02:06.681015Z", "url": "https://files.pythonhosted.org/packages/99/49/420cd7d4b84b4d8127a9ae76ee71cddea5e39661f55641fb9e501f8771b5/pytgvoip-0.0.5-cp38-cp38-win_amd64.whl", "yanked": false, "yanked_reason": null }, { "comment_text": "", "digests": { "md5": "115f4e2601c035a75992458fe2748b71", "sha256": "f3560e1d2958f9635a63d7f37e59306d955fa77f1a99ed99b2eddf333864accc" }, "downloads": -1, "filename": "pytgvoip-0.0.5.tar.gz", "has_sig": false, "md5_digest": "115f4e2601c035a75992458fe2748b71", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 2143372, "upload_time": "2020-01-26T03:33:52", "upload_time_iso_8601": "2020-01-26T03:33:52.934433Z", "url": "https://files.pythonhosted.org/packages/1b/7c/b1c0caa30a6334ef4ce1a97e5dabd656ba22aecc1d9f682593a4ac1c5cad/pytgvoip-0.0.5.tar.gz", "yanked": false, "yanked_reason": null } ], "0.0.6": [ { "comment_text": "", "digests": { "md5": "896762bb4954b17bec78711ea020b984", "sha256": "39baaaec1d16585f9825123fbd8610f19ee5c9b35a6617d82499c0c3fd46f77b" }, "downloads": -1, "filename": "pytgvoip-0.0.6-cp35-cp35m-win32.whl", "has_sig": false, "md5_digest": "896762bb4954b17bec78711ea020b984", "packagetype": "bdist_wheel", "python_version": "cp35", "requires_python": null, "size": 5388671, "upload_time": "2020-02-07T16:04:45", "upload_time_iso_8601": "2020-02-07T16:04:45.051464Z", "url": "https://files.pythonhosted.org/packages/a0/3c/dbe89430609b394b4244d6be2d505d407ef6c4b25b34f36c95db316ee0f2/pytgvoip-0.0.6-cp35-cp35m-win32.whl", "yanked": false, "yanked_reason": null }, { "comment_text": "", "digests": { "md5": "760f7298b3c4613cbd29c7994da400b0", "sha256": "f502d8fdd57455cf13cdf05c87a842a6b55fccce859222f98ab90543098a658a" }, "downloads": -1, "filename": "pytgvoip-0.0.6-cp35-cp35m-win_amd64.whl", "has_sig": false, "md5_digest": "760f7298b3c4613cbd29c7994da400b0", "packagetype": "bdist_wheel", "python_version": "cp35", "requires_python": null, "size": 5585733, "upload_time": "2020-02-07T16:11:27", "upload_time_iso_8601": "2020-02-07T16:11:27.380830Z", "url": "https://files.pythonhosted.org/packages/35/9d/5e997cc2036e28e6f08669b9a524cf65b9968979527a90152b05b28fd4b4/pytgvoip-0.0.6-cp35-cp35m-win_amd64.whl", "yanked": false, "yanked_reason": null }, { "comment_text": "", "digests": { "md5": "5a39d6cb8a173b0e7bb63e168a056ce2", "sha256": "1e6d23e91c34bd5ad577a9c45888a873db7b9d610c4325322b1bf35dbd852b54" }, "downloads": -1, "filename": "pytgvoip-0.0.6-cp36-cp36m-win32.whl", "has_sig": false, "md5_digest": "5a39d6cb8a173b0e7bb63e168a056ce2", "packagetype": "bdist_wheel", "python_version": "cp36", "requires_python": null, "size": 5389264, "upload_time": "2020-02-07T15:51:46", "upload_time_iso_8601": "2020-02-07T15:51:46.718741Z", "url": "https://files.pythonhosted.org/packages/60/07/a0176bc6eaa3c39a6923a2bb7f0010887aac7667dafc3c61f3f56bc5df9e/pytgvoip-0.0.6-cp36-cp36m-win32.whl", "yanked": false, "yanked_reason": null }, { "comment_text": "", "digests": { "md5": "1db3f3b37f7ad989451fdb2a58f96e35", "sha256": "96696bcb686296e488dcc2bf87dd9a4340bcbaf1eeeff4c31faa6714427d6524" }, "downloads": -1, "filename": "pytgvoip-0.0.6-cp36-cp36m-win_amd64.whl", "has_sig": false, "md5_digest": "1db3f3b37f7ad989451fdb2a58f96e35", "packagetype": "bdist_wheel", "python_version": "cp36", "requires_python": null, "size": 5585893, "upload_time": "2020-02-07T15:58:02", "upload_time_iso_8601": "2020-02-07T15:58:02.526308Z", "url": "https://files.pythonhosted.org/packages/c0/c6/4ce20a705912493089af03017167ba608254fb3b5fd5e52eda4c6915f242/pytgvoip-0.0.6-cp36-cp36m-win_amd64.whl", "yanked": false, "yanked_reason": null }, { "comment_text": "", "digests": { "md5": "f41e1f87abf4a633f8f4fb4f2962fce9", "sha256": "67acbfb3e7c1754302c82082bf550c9c7687d3768128ce3ef055fc7892c967ea" }, "downloads": -1, "filename": "pytgvoip-0.0.6-cp37-cp37m-win32.whl", "has_sig": false, "md5_digest": "f41e1f87abf4a633f8f4fb4f2962fce9", "packagetype": "bdist_wheel", "python_version": "cp37", "requires_python": null, "size": 5390364, "upload_time": "2020-02-07T15:39:57", "upload_time_iso_8601": "2020-02-07T15:39:57.719402Z", "url": "https://files.pythonhosted.org/packages/5c/6c/fcc0d5023dddd09a2b2c9108204232ed4d62d530a899338ccf69d55a8e4c/pytgvoip-0.0.6-cp37-cp37m-win32.whl", "yanked": false, "yanked_reason": null }, { "comment_text": "", "digests": { "md5": "bb6bd8994825d7befa7c2ddf190e577f", "sha256": "0ca94c333b1c8d5f62cf24d09767ca8b1cc159e43d8e54d57758af90f493dd2e" }, "downloads": -1, "filename": "pytgvoip-0.0.6-cp37-cp37m-win_amd64.whl", "has_sig": false, "md5_digest": "bb6bd8994825d7befa7c2ddf190e577f", "packagetype": "bdist_wheel", "python_version": "cp37", "requires_python": null, "size": 5587008, "upload_time": "2020-02-07T15:45:31", "upload_time_iso_8601": "2020-02-07T15:45:31.650851Z", "url": "https://files.pythonhosted.org/packages/eb/07/872d6c508afd9d34ba849c98c6fd1b46b5723e8eed79d26a9d2a475f71fc/pytgvoip-0.0.6-cp37-cp37m-win_amd64.whl", "yanked": false, "yanked_reason": null }, { "comment_text": "", "digests": { "md5": "d96af398349e928025863784d6453d79", "sha256": "470d1f7c5dcea06d3c0dc671707c7adcceb858b31b5de03e32885160585e3545" }, "downloads": -1, "filename": "pytgvoip-0.0.6-cp38-cp38-win32.whl", "has_sig": false, "md5_digest": "d96af398349e928025863784d6453d79", "packagetype": "bdist_wheel", "python_version": "cp38", "requires_python": null, "size": 5412830, "upload_time": "2020-02-07T14:56:56", "upload_time_iso_8601": "2020-02-07T14:56:56.072911Z", "url": "https://files.pythonhosted.org/packages/7b/25/7698a505475a9fedbb82acbaa0ac3ee5fbd6dabc8f32c5496275d3bbb264/pytgvoip-0.0.6-cp38-cp38-win32.whl", "yanked": false, "yanked_reason": null }, { "comment_text": "", "digests": { "md5": "963d262f0cd781c39e8a5a6bb3a37664", "sha256": "f0729baec01cfeee2c777a72c9b76bfafe3cce596bdbf3a30622882dddda370c" }, "downloads": -1, "filename": "pytgvoip-0.0.6-cp38-cp38-win_amd64.whl", "has_sig": false, "md5_digest": "963d262f0cd781c39e8a5a6bb3a37664", "packagetype": "bdist_wheel", "python_version": "cp38", "requires_python": null, "size": 5608184, "upload_time": "2020-02-07T15:33:50", "upload_time_iso_8601": "2020-02-07T15:33:50.234642Z", "url": "https://files.pythonhosted.org/packages/aa/2d/c9105f9dc1a7726458d1f839b55845be144b9757ee5de286389056081099/pytgvoip-0.0.6-cp38-cp38-win_amd64.whl", "yanked": false, "yanked_reason": null }, { "comment_text": "", "digests": { "md5": "46e058e976a22383e25f6efdf8937dc3", "sha256": "86d2ed374660f23849b9cd55043a590a1b3398593945c58e416e595a1a5bd556" }, "downloads": -1, "filename": "pytgvoip-0.0.6.tar.gz", "has_sig": false, "md5_digest": "46e058e976a22383e25f6efdf8937dc3", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 2154640, "upload_time": "2020-02-07T14:50:56", "upload_time_iso_8601": "2020-02-07T14:50:56.761449Z", "url": "https://files.pythonhosted.org/packages/a5/aa/a06e17a54c31468ec092dc1de033e2bb6a9b1eaa783988f8580719fc3071/pytgvoip-0.0.6.tar.gz", "yanked": false, "yanked_reason": null } ], "0.0.6.1": [ { "comment_text": "", "digests": { "md5": "148007dce4ad5abe44185686090acc4b", "sha256": "f174fa06ecaac5ab7e64f6b3aaee944f36804e9a784978e835a0294d8b0df145" }, "downloads": -1, "filename": "pytgvoip-0.0.6.1.tar.gz", "has_sig": false, "md5_digest": "148007dce4ad5abe44185686090acc4b", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 2133231, "upload_time": "2020-02-25T17:18:26", "upload_time_iso_8601": "2020-02-25T17:18:26.699178Z", "url": "https://files.pythonhosted.org/packages/ec/45/51cff827002f294c1b8606030fb9408c4d6aed076cab5fb19b6be9d14351/pytgvoip-0.0.6.1.tar.gz", "yanked": false, "yanked_reason": null } ], "0.0.7": [ { "comment_text": "", "digests": { "md5": "968795e567bf8c4f25cd609f088a19f7", "sha256": "12766b97a905fe19d66915e26b23d7df194a53616a69367fa3f1533d82946d56" }, "downloads": -1, "filename": "pytgvoip-0.0.7.tar.gz", "has_sig": false, "md5_digest": "968795e567bf8c4f25cd609f088a19f7", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 2134019, "upload_time": "2020-04-12T23:26:43", "upload_time_iso_8601": "2020-04-12T23:26:43.362573Z", "url": "https://files.pythonhosted.org/packages/a5/26/7000455cabb85c6729341f0029398f28a6423ecb9e32c2299ce48e351ca2/pytgvoip-0.0.7.tar.gz", "yanked": false, "yanked_reason": null } ], "0.0.7.1": [ { "comment_text": "", "digests": { "md5": "9523270b42e7c301a0e8589298916351", "sha256": "24196c27211677487311dd0b5fbd843b028e9ba5b8c16d87d5130672980f54df" }, "downloads": -1, "filename": "pytgvoip-0.0.7.1.tar.gz", "has_sig": false, "md5_digest": "9523270b42e7c301a0e8589298916351", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 2134297, "upload_time": "2020-06-23T19:47:07", "upload_time_iso_8601": "2020-06-23T19:47:07.457904Z", "url": "https://files.pythonhosted.org/packages/dc/00/23d27c9ed17cce94b07852a8896be145c1e9dcb62cdd7353897c28491c0a/pytgvoip-0.0.7.1.tar.gz", "yanked": false, "yanked_reason": null } ] }, "urls": [ { "comment_text": "", "digests": { "md5": "9523270b42e7c301a0e8589298916351", "sha256": "24196c27211677487311dd0b5fbd843b028e9ba5b8c16d87d5130672980f54df" }, "downloads": -1, "filename": "pytgvoip-0.0.7.1.tar.gz", "has_sig": false, "md5_digest": "9523270b42e7c301a0e8589298916351", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 2134297, "upload_time": "2020-06-23T19:47:07", "upload_time_iso_8601": "2020-06-23T19:47:07.457904Z", "url": "https://files.pythonhosted.org/packages/dc/00/23d27c9ed17cce94b07852a8896be145c1e9dcb62cdd7353897c28491c0a/pytgvoip-0.0.7.1.tar.gz", "yanked": false, "yanked_reason": null } ], "vulnerabilities": [] }