{"diffoscope-json-version": 1, "source1": "/srv/reproducible-results/rbuild-debian/r-b-build.gclEMhgR/b1/slidge_0.1.0~rc2+git20240121.64130f67-1_armhf.changes", "source2": "/srv/reproducible-results/rbuild-debian/r-b-build.gclEMhgR/b2/slidge_0.1.0~rc2+git20240121.64130f67-1_armhf.changes", "unified_diff": null, "details": [{"source1": "Files", "source2": "Files", "unified_diff": "@@ -1,3 +1,3 @@\n \n- defe16c7a2516f3d7e29a1aa0971d791 2112108 python optional python-slidge-doc_0.1.0~rc2+git20240121.64130f67-1_all.deb\n+ 20dd2822eb472bcc25d77c9fb63ceb57 2111664 python optional python-slidge-doc_0.1.0~rc2+git20240121.64130f67-1_all.deb\n acfcd94a40a6c43ba207cc0539bffa50 108792 python optional python3-slidge_0.1.0~rc2+git20240121.64130f67-1_all.deb\n"}, {"source1": "python-slidge-doc_0.1.0~rc2+git20240121.64130f67-1_all.deb", "source2": "python-slidge-doc_0.1.0~rc2+git20240121.64130f67-1_all.deb", "unified_diff": null, "details": [{"source1": "file list", "source2": "file list", "unified_diff": "@@ -1,3 +1,3 @@\n -rw-r--r-- 0 0 0 4 2024-01-21 16:13:11.000000 debian-binary\n--rw-r--r-- 0 0 0 5780 2024-01-21 16:13:11.000000 control.tar.xz\n--rw-r--r-- 0 0 0 2106136 2024-01-21 16:13:11.000000 data.tar.xz\n+-rw-r--r-- 0 0 0 5788 2024-01-21 16:13:11.000000 control.tar.xz\n+-rw-r--r-- 0 0 0 2105684 2024-01-21 16:13:11.000000 data.tar.xz\n"}, {"source1": "control.tar.xz", "source2": "control.tar.xz", "unified_diff": null, "details": [{"source1": "control.tar", "source2": "control.tar", "unified_diff": null, "details": [{"source1": "./control", "source2": "./control", "unified_diff": "@@ -1,13 +1,13 @@\n Package: python-slidge-doc\n Source: slidge\n Version: 0.1.0~rc2+git20240121.64130f67-1\n Architecture: all\n Maintainer: Debian XMPP Maintainers <pkg-xmpp-devel@lists.alioth.debian.org>\n-Installed-Size: 6788\n+Installed-Size: 6700\n Depends: libjs-sphinxdoc (>= 7.2.2)\n Section: python\n Priority: optional\n Multi-Arch: foreign\n Homepage: https://slidge.im/\n Description: XMPP puppeteer gateway library in Python (documentation)\n Slidge makes writing gateways to other chat networks (legacy modules)\n"}, {"source1": "./md5sums", "source2": "./md5sums", "unified_diff": null, "details": [{"source1": "./md5sums", "source2": "./md5sums", "comments": ["Files differ"], "unified_diff": null}]}]}]}, {"source1": "data.tar.xz", "source2": "data.tar.xz", "unified_diff": null, "details": [{"source1": "data.tar", "source2": "data.tar", "unified_diff": null, "details": [{"source1": "file list", "source2": "file list", "unified_diff": "@@ -29,15 +29,15 @@\n drwxr-xr-x 0 root (0) root (0) 0 2024-01-21 16:13:11.000000 ./usr/share/doc/python-slidge-doc/html/_sources/dev/api/slidge/\n drwxr-xr-x 0 root (0) root (0) 0 2024-01-21 16:13:11.000000 ./usr/share/doc/python-slidge-doc/html/_sources/dev/api/slidge/__main__/\n -rw-r--r-- 0 root (0) root (0) 1075 2024-01-21 16:13:11.000000 ./usr/share/doc/python-slidge-doc/html/_sources/dev/api/slidge/__main__/index.rst.txt\n drwxr-xr-x 0 root (0) root (0) 0 2024-01-21 16:13:11.000000 ./usr/share/doc/python-slidge-doc/html/_sources/dev/api/slidge/command/\n drwxr-xr-x 0 root (0) root (0) 0 2024-01-21 16:13:11.000000 ./usr/share/doc/python-slidge-doc/html/_sources/dev/api/slidge/command/adhoc/\n -rw-r--r-- 0 root (0) root (0) 900 2024-01-21 16:13:11.000000 ./usr/share/doc/python-slidge-doc/html/_sources/dev/api/slidge/command/adhoc/index.rst.txt\n drwxr-xr-x 0 root (0) root (0) 0 2024-01-21 16:13:11.000000 ./usr/share/doc/python-slidge-doc/html/_sources/dev/api/slidge/command/admin/\n--rw-r--r-- 0 root (0) root (0) 111 2024-01-21 16:13:11.000000 ./usr/share/doc/python-slidge-doc/html/_sources/dev/api/slidge/command/admin/index.rst.txt\n+-rw-r--r-- 0 root (0) root (0) 6583 2024-01-21 16:13:11.000000 ./usr/share/doc/python-slidge-doc/html/_sources/dev/api/slidge/command/admin/index.rst.txt\n drwxr-xr-x 0 root (0) root (0) 0 2024-01-21 16:13:11.000000 ./usr/share/doc/python-slidge-doc/html/_sources/dev/api/slidge/command/base/\n -rw-r--r-- 0 root (0) root (0) 7474 2024-01-21 16:13:11.000000 ./usr/share/doc/python-slidge-doc/html/_sources/dev/api/slidge/command/base/index.rst.txt\n drwxr-xr-x 0 root (0) root (0) 0 2024-01-21 16:13:11.000000 ./usr/share/doc/python-slidge-doc/html/_sources/dev/api/slidge/command/categories/\n -rw-r--r-- 0 root (0) root (0) 126 2024-01-21 16:13:11.000000 ./usr/share/doc/python-slidge-doc/html/_sources/dev/api/slidge/command/categories/index.rst.txt\n drwxr-xr-x 0 root (0) root (0) 0 2024-01-21 16:13:11.000000 ./usr/share/doc/python-slidge-doc/html/_sources/dev/api/slidge/command/chat_command/\n -rw-r--r-- 0 root (0) root (0) 132 2024-01-21 16:13:11.000000 ./usr/share/doc/python-slidge-doc/html/_sources/dev/api/slidge/command/chat_command/index.rst.txt\n -rw-r--r-- 0 root (0) root (0) 6295 2024-01-21 16:13:11.000000 ./usr/share/doc/python-slidge-doc/html/_sources/dev/api/slidge/command/index.rst.txt\n@@ -108,19 +108,19 @@\n drwxr-xr-x 0 root (0) root (0) 0 2024-01-21 16:13:11.000000 ./usr/share/doc/python-slidge-doc/html/_sources/dev/api/slidge/core/session/\n -rw-r--r-- 0 root (0) root (0) 13578 2024-01-21 16:13:11.000000 ./usr/share/doc/python-slidge-doc/html/_sources/dev/api/slidge/core/session/index.rst.txt\n drwxr-xr-x 0 root (0) root (0) 0 2024-01-21 16:13:11.000000 ./usr/share/doc/python-slidge-doc/html/_sources/dev/api/slidge/group/\n drwxr-xr-x 0 root (0) root (0) 0 2024-01-21 16:13:11.000000 ./usr/share/doc/python-slidge-doc/html/_sources/dev/api/slidge/group/archive/\n -rw-r--r-- 0 root (0) root (0) 372 2024-01-21 16:13:11.000000 ./usr/share/doc/python-slidge-doc/html/_sources/dev/api/slidge/group/archive/index.rst.txt\n drwxr-xr-x 0 root (0) root (0) 0 2024-01-21 16:13:11.000000 ./usr/share/doc/python-slidge-doc/html/_sources/dev/api/slidge/group/bookmarks/\n -rw-r--r-- 0 root (0) root (0) 1181 2024-01-21 16:13:11.000000 ./usr/share/doc/python-slidge-doc/html/_sources/dev/api/slidge/group/bookmarks/index.rst.txt\n--rw-r--r-- 0 root (0) root (0) 20402 2024-01-21 16:13:11.000000 ./usr/share/doc/python-slidge-doc/html/_sources/dev/api/slidge/group/index.rst.txt\n+-rw-r--r-- 0 root (0) root (0) 11066 2024-01-21 16:13:11.000000 ./usr/share/doc/python-slidge-doc/html/_sources/dev/api/slidge/group/index.rst.txt\n drwxr-xr-x 0 root (0) root (0) 0 2024-01-21 16:13:11.000000 ./usr/share/doc/python-slidge-doc/html/_sources/dev/api/slidge/group/participant/\n--rw-r--r-- 0 root (0) root (0) 9383 2024-01-21 16:13:11.000000 ./usr/share/doc/python-slidge-doc/html/_sources/dev/api/slidge/group/participant/index.rst.txt\n+-rw-r--r-- 0 root (0) root (0) 1184 2024-01-21 16:13:11.000000 ./usr/share/doc/python-slidge-doc/html/_sources/dev/api/slidge/group/participant/index.rst.txt\n drwxr-xr-x 0 root (0) root (0) 0 2024-01-21 16:13:11.000000 ./usr/share/doc/python-slidge-doc/html/_sources/dev/api/slidge/group/room/\n--rw-r--r-- 0 root (0) root (0) 9751 2024-01-21 16:13:11.000000 ./usr/share/doc/python-slidge-doc/html/_sources/dev/api/slidge/group/room/index.rst.txt\n+-rw-r--r-- 0 root (0) root (0) 8614 2024-01-21 16:13:11.000000 ./usr/share/doc/python-slidge-doc/html/_sources/dev/api/slidge/group/room/index.rst.txt\n -rw-r--r-- 0 root (0) root (0) 30373 2024-01-21 16:13:11.000000 ./usr/share/doc/python-slidge-doc/html/_sources/dev/api/slidge/index.rst.txt\n drwxr-xr-x 0 root (0) root (0) 0 2024-01-21 16:13:11.000000 ./usr/share/doc/python-slidge-doc/html/_sources/dev/api/slidge/migration/\n -rw-r--r-- 0 root (0) root (0) 99 2024-01-21 16:13:11.000000 ./usr/share/doc/python-slidge-doc/html/_sources/dev/api/slidge/migration/index.rst.txt\n drwxr-xr-x 0 root (0) root (0) 0 2024-01-21 16:13:11.000000 ./usr/share/doc/python-slidge-doc/html/_sources/dev/api/slidge/slixfix/\n -rw-r--r-- 0 root (0) root (0) 528 2024-01-21 16:13:11.000000 ./usr/share/doc/python-slidge-doc/html/_sources/dev/api/slidge/slixfix/index.rst.txt\n drwxr-xr-x 0 root (0) root (0) 0 2024-01-21 16:13:11.000000 ./usr/share/doc/python-slidge-doc/html/_sources/dev/api/slidge/slixfix/link_preview/\n -rw-r--r-- 0 root (0) root (0) 132 2024-01-21 16:13:11.000000 ./usr/share/doc/python-slidge-doc/html/_sources/dev/api/slidge/slixfix/link_preview/index.rst.txt\n@@ -207,15 +207,15 @@\n drwxr-xr-x 0 root (0) root (0) 0 2024-01-21 16:13:11.000000 ./usr/share/doc/python-slidge-doc/html/dev/api/slidge/\n drwxr-xr-x 0 root (0) root (0) 0 2024-01-21 16:13:11.000000 ./usr/share/doc/python-slidge-doc/html/dev/api/slidge/__main__/\n -rw-r--r-- 0 root (0) root (0) 19507 2024-01-21 16:13:11.000000 ./usr/share/doc/python-slidge-doc/html/dev/api/slidge/__main__/index.html\n drwxr-xr-x 0 root (0) root (0) 0 2024-01-21 16:13:11.000000 ./usr/share/doc/python-slidge-doc/html/dev/api/slidge/command/\n drwxr-xr-x 0 root (0) root (0) 0 2024-01-21 16:13:11.000000 ./usr/share/doc/python-slidge-doc/html/dev/api/slidge/command/adhoc/\n -rw-r--r-- 0 root (0) root (0) 22099 2024-01-21 16:13:11.000000 ./usr/share/doc/python-slidge-doc/html/dev/api/slidge/command/adhoc/index.html\n drwxr-xr-x 0 root (0) root (0) 0 2024-01-21 16:13:11.000000 ./usr/share/doc/python-slidge-doc/html/dev/api/slidge/command/admin/\n--rw-r--r-- 0 root (0) root (0) 15820 2024-01-21 16:13:11.000000 ./usr/share/doc/python-slidge-doc/html/dev/api/slidge/command/admin/index.html\n+-rw-r--r-- 0 root (0) root (0) 55124 2024-01-21 16:13:11.000000 ./usr/share/doc/python-slidge-doc/html/dev/api/slidge/command/admin/index.html\n drwxr-xr-x 0 root (0) root (0) 0 2024-01-21 16:13:11.000000 ./usr/share/doc/python-slidge-doc/html/dev/api/slidge/command/base/\n -rw-r--r-- 0 root (0) root (0) 67230 2024-01-21 16:13:11.000000 ./usr/share/doc/python-slidge-doc/html/dev/api/slidge/command/base/index.html\n drwxr-xr-x 0 root (0) root (0) 0 2024-01-21 16:13:11.000000 ./usr/share/doc/python-slidge-doc/html/dev/api/slidge/command/categories/\n -rw-r--r-- 0 root (0) root (0) 15855 2024-01-21 16:13:11.000000 ./usr/share/doc/python-slidge-doc/html/dev/api/slidge/command/categories/index.html\n drwxr-xr-x 0 root (0) root (0) 0 2024-01-21 16:13:11.000000 ./usr/share/doc/python-slidge-doc/html/dev/api/slidge/command/chat_command/\n -rw-r--r-- 0 root (0) root (0) 15869 2024-01-21 16:13:11.000000 ./usr/share/doc/python-slidge-doc/html/dev/api/slidge/command/chat_command/index.html\n -rw-r--r-- 0 root (0) root (0) 61549 2024-01-21 16:13:11.000000 ./usr/share/doc/python-slidge-doc/html/dev/api/slidge/command/index.html\n@@ -280,26 +280,26 @@\n drwxr-xr-x 0 root (0) root (0) 0 2024-01-21 16:13:11.000000 ./usr/share/doc/python-slidge-doc/html/dev/api/slidge/core/mixins/presence/\n -rw-r--r-- 0 root (0) root (0) 16017 2024-01-21 16:13:11.000000 ./usr/share/doc/python-slidge-doc/html/dev/api/slidge/core/mixins/presence/index.html\n drwxr-xr-x 0 root (0) root (0) 0 2024-01-21 16:13:11.000000 ./usr/share/doc/python-slidge-doc/html/dev/api/slidge/core/mixins/recipient/\n -rw-r--r-- 0 root (0) root (0) 16024 2024-01-21 16:13:11.000000 ./usr/share/doc/python-slidge-doc/html/dev/api/slidge/core/mixins/recipient/index.html\n drwxr-xr-x 0 root (0) root (0) 0 2024-01-21 16:13:11.000000 ./usr/share/doc/python-slidge-doc/html/dev/api/slidge/core/pubsub/\n -rw-r--r-- 0 root (0) root (0) 15828 2024-01-21 16:13:11.000000 ./usr/share/doc/python-slidge-doc/html/dev/api/slidge/core/pubsub/index.html\n drwxr-xr-x 0 root (0) root (0) 0 2024-01-21 16:13:11.000000 ./usr/share/doc/python-slidge-doc/html/dev/api/slidge/core/session/\n--rw-r--r-- 0 root (0) root (0) 81640 2024-01-21 16:13:11.000000 ./usr/share/doc/python-slidge-doc/html/dev/api/slidge/core/session/index.html\n+-rw-r--r-- 0 root (0) root (0) 81486 2024-01-21 16:13:11.000000 ./usr/share/doc/python-slidge-doc/html/dev/api/slidge/core/session/index.html\n drwxr-xr-x 0 root (0) root (0) 0 2024-01-21 16:13:11.000000 ./usr/share/doc/python-slidge-doc/html/dev/api/slidge/group/\n drwxr-xr-x 0 root (0) root (0) 0 2024-01-21 16:13:11.000000 ./usr/share/doc/python-slidge-doc/html/dev/api/slidge/group/archive/\n -rw-r--r-- 0 root (0) root (0) 18348 2024-01-21 16:13:11.000000 ./usr/share/doc/python-slidge-doc/html/dev/api/slidge/group/archive/index.html\n drwxr-xr-x 0 root (0) root (0) 0 2024-01-21 16:13:11.000000 ./usr/share/doc/python-slidge-doc/html/dev/api/slidge/group/bookmarks/\n -rw-r--r-- 0 root (0) root (0) 23050 2024-01-21 16:13:11.000000 ./usr/share/doc/python-slidge-doc/html/dev/api/slidge/group/bookmarks/index.html\n--rw-r--r-- 0 root (0) root (0) 117623 2024-01-21 16:13:11.000000 ./usr/share/doc/python-slidge-doc/html/dev/api/slidge/group/index.html\n+-rw-r--r-- 0 root (0) root (0) 65464 2024-01-21 16:13:11.000000 ./usr/share/doc/python-slidge-doc/html/dev/api/slidge/group/index.html\n drwxr-xr-x 0 root (0) root (0) 0 2024-01-21 16:13:11.000000 ./usr/share/doc/python-slidge-doc/html/dev/api/slidge/group/participant/\n--rw-r--r-- 0 root (0) root (0) 69234 2024-01-21 16:13:11.000000 ./usr/share/doc/python-slidge-doc/html/dev/api/slidge/group/participant/index.html\n+-rw-r--r-- 0 root (0) root (0) 23288 2024-01-21 16:13:11.000000 ./usr/share/doc/python-slidge-doc/html/dev/api/slidge/group/participant/index.html\n drwxr-xr-x 0 root (0) root (0) 0 2024-01-21 16:13:11.000000 ./usr/share/doc/python-slidge-doc/html/dev/api/slidge/group/room/\n--rw-r--r-- 0 root (0) root (0) 56668 2024-01-21 16:13:11.000000 ./usr/share/doc/python-slidge-doc/html/dev/api/slidge/group/room/index.html\n--rw-r--r-- 0 root (0) root (0) 160175 2024-01-21 16:13:11.000000 ./usr/share/doc/python-slidge-doc/html/dev/api/slidge/index.html\n+-rw-r--r-- 0 root (0) root (0) 49640 2024-01-21 16:13:11.000000 ./usr/share/doc/python-slidge-doc/html/dev/api/slidge/group/room/index.html\n+-rw-r--r-- 0 root (0) root (0) 160027 2024-01-21 16:13:11.000000 ./usr/share/doc/python-slidge-doc/html/dev/api/slidge/index.html\n drwxr-xr-x 0 root (0) root (0) 0 2024-01-21 16:13:11.000000 ./usr/share/doc/python-slidge-doc/html/dev/api/slidge/migration/\n -rw-r--r-- 0 root (0) root (0) 15688 2024-01-21 16:13:11.000000 ./usr/share/doc/python-slidge-doc/html/dev/api/slidge/migration/index.html\n drwxr-xr-x 0 root (0) root (0) 0 2024-01-21 16:13:11.000000 ./usr/share/doc/python-slidge-doc/html/dev/api/slidge/slixfix/\n -rw-r--r-- 0 root (0) root (0) 18418 2024-01-21 16:13:11.000000 ./usr/share/doc/python-slidge-doc/html/dev/api/slidge/slixfix/index.html\n drwxr-xr-x 0 root (0) root (0) 0 2024-01-21 16:13:11.000000 ./usr/share/doc/python-slidge-doc/html/dev/api/slidge/slixfix/link_preview/\n -rw-r--r-- 0 root (0) root (0) 15891 2024-01-21 16:13:11.000000 ./usr/share/doc/python-slidge-doc/html/dev/api/slidge/slixfix/link_preview/index.html\n drwxr-xr-x 0 root (0) root (0) 0 2024-01-21 16:13:11.000000 ./usr/share/doc/python-slidge-doc/html/dev/api/slidge/slixfix/link_preview/link_preview/\n@@ -326,34 +326,34 @@\n -rw-r--r-- 0 root (0) root (0) 48331 2024-01-21 16:13:11.000000 ./usr/share/doc/python-slidge-doc/html/dev/api/slidge/util/util/index.html\n drwxr-xr-x 0 root (0) root (0) 0 2024-01-21 16:13:11.000000 ./usr/share/doc/python-slidge-doc/html/dev/api/superduper/\n drwxr-xr-x 0 root (0) root (0) 0 2024-01-21 16:13:11.000000 ./usr/share/doc/python-slidge-doc/html/dev/api/superduper/contact/\n -rw-r--r-- 0 root (0) root (0) 97797 2024-01-21 16:13:11.000000 ./usr/share/doc/python-slidge-doc/html/dev/api/superduper/contact/index.html\n drwxr-xr-x 0 root (0) root (0) 0 2024-01-21 16:13:11.000000 ./usr/share/doc/python-slidge-doc/html/dev/api/superduper/gateway/\n -rw-r--r-- 0 root (0) root (0) 76788 2024-01-21 16:13:11.000000 ./usr/share/doc/python-slidge-doc/html/dev/api/superduper/gateway/index.html\n drwxr-xr-x 0 root (0) root (0) 0 2024-01-21 16:13:11.000000 ./usr/share/doc/python-slidge-doc/html/dev/api/superduper/group/\n--rw-r--r-- 0 root (0) root (0) 114124 2024-01-21 16:13:11.000000 ./usr/share/doc/python-slidge-doc/html/dev/api/superduper/group/index.html\n+-rw-r--r-- 0 root (0) root (0) 113815 2024-01-21 16:13:11.000000 ./usr/share/doc/python-slidge-doc/html/dev/api/superduper/group/index.html\n -rw-r--r-- 0 root (0) root (0) 18059 2024-01-21 16:13:11.000000 ./usr/share/doc/python-slidge-doc/html/dev/api/superduper/index.html\n drwxr-xr-x 0 root (0) root (0) 0 2024-01-21 16:13:11.000000 ./usr/share/doc/python-slidge-doc/html/dev/api/superduper/legacy_client/\n -rw-r--r-- 0 root (0) root (0) 15738 2024-01-21 16:13:11.000000 ./usr/share/doc/python-slidge-doc/html/dev/api/superduper/legacy_client/index.html\n drwxr-xr-x 0 root (0) root (0) 0 2024-01-21 16:13:11.000000 ./usr/share/doc/python-slidge-doc/html/dev/api/superduper/session/\n--rw-r--r-- 0 root (0) root (0) 82162 2024-01-21 16:13:11.000000 ./usr/share/doc/python-slidge-doc/html/dev/api/superduper/session/index.html\n+-rw-r--r-- 0 root (0) root (0) 82001 2024-01-21 16:13:11.000000 ./usr/share/doc/python-slidge-doc/html/dev/api/superduper/session/index.html\n drwxr-xr-x 0 root (0) root (0) 0 2024-01-21 16:13:11.000000 ./usr/share/doc/python-slidge-doc/html/dev/api/superduper/util/\n -rw-r--r-- 0 root (0) root (0) 15675 2024-01-21 16:13:11.000000 ./usr/share/doc/python-slidge-doc/html/dev/api/superduper/util/index.html\n -rw-r--r-- 0 root (0) root (0) 21932 2024-01-21 16:13:11.000000 ./usr/share/doc/python-slidge-doc/html/dev/contributing.html\n -rw-r--r-- 0 root (0) root (0) 24720 2024-01-21 16:13:11.000000 ./usr/share/doc/python-slidge-doc/html/dev/design.html\n -rw-r--r-- 0 root (0) root (0) 16277 2024-01-21 16:13:11.000000 ./usr/share/doc/python-slidge-doc/html/dev/howto.html\n -rw-r--r-- 0 root (0) root (0) 18679 2024-01-21 16:13:11.000000 ./usr/share/doc/python-slidge-doc/html/dev/index.html\n -rw-r--r-- 0 root (0) root (0) 32866 2024-01-21 16:13:11.000000 ./usr/share/doc/python-slidge-doc/html/dev/tutorial.html\n--rw-r--r-- 0 root (0) root (0) 215332 2024-01-21 16:13:11.000000 ./usr/share/doc/python-slidge-doc/html/genindex.html\n+-rw-r--r-- 0 root (0) root (0) 213034 2024-01-21 16:13:11.000000 ./usr/share/doc/python-slidge-doc/html/genindex.html\n -rw-r--r-- 0 root (0) root (0) 20735 2024-01-21 16:13:11.000000 ./usr/share/doc/python-slidge-doc/html/glossary.html\n--rw-r--r-- 0 root (0) root (0) 104794 2024-01-21 16:13:11.000000 ./usr/share/doc/python-slidge-doc/html/index.html\n--rw-r--r-- 0 root (0) root (0) 11175 2024-01-21 16:13:11.000000 ./usr/share/doc/python-slidge-doc/html/objects.inv\n+-rw-r--r-- 0 root (0) root (0) 99247 2024-01-21 16:13:11.000000 ./usr/share/doc/python-slidge-doc/html/index.html\n+-rw-r--r-- 0 root (0) root (0) 11143 2024-01-21 16:13:11.000000 ./usr/share/doc/python-slidge-doc/html/objects.inv\n -rw-r--r-- 0 root (0) root (0) 31403 2024-01-21 16:13:11.000000 ./usr/share/doc/python-slidge-doc/html/py-modindex.html\n -rw-r--r-- 0 root (0) root (0) 15250 2024-01-21 16:13:11.000000 ./usr/share/doc/python-slidge-doc/html/search.html\n--rw-r--r-- 0 root (0) root (0) 250078 2024-01-21 16:13:11.000000 ./usr/share/doc/python-slidge-doc/html/searchindex.js\n+-rw-r--r-- 0 root (0) root (0) 247194 2024-01-21 16:13:11.000000 ./usr/share/doc/python-slidge-doc/html/searchindex.js\n drwxr-xr-x 0 root (0) root (0) 0 2024-01-21 16:13:11.000000 ./usr/share/doc/python-slidge-doc/html/user/\n -rw-r--r-- 0 root (0) root (0) 20135 2024-01-21 16:13:11.000000 ./usr/share/doc/python-slidge-doc/html/user/commands.html\n -rw-r--r-- 0 root (0) root (0) 17984 2024-01-21 16:13:11.000000 ./usr/share/doc/python-slidge-doc/html/user/contacts.html\n -rw-r--r-- 0 root (0) root (0) 20204 2024-01-21 16:13:11.000000 ./usr/share/doc/python-slidge-doc/html/user/index.html\n -rw-r--r-- 0 root (0) root (0) 17322 2024-01-21 16:13:11.000000 ./usr/share/doc/python-slidge-doc/html/user/low_profile.html\n -rw-r--r-- 0 root (0) root (0) 16204 2024-01-21 16:13:11.000000 ./usr/share/doc/python-slidge-doc/html/user/note.html\n -rw-r--r-- 0 root (0) root (0) 20373 2024-01-21 16:13:11.000000 ./usr/share/doc/python-slidge-doc/html/user/register.html\n"}, {"source1": "./usr/share/doc/python-slidge-doc/html/_sources/dev/api/slidge/command/admin/index.rst.txt", "source2": "./usr/share/doc/python-slidge-doc/html/_sources/dev/api/slidge/command/admin/index.rst.txt", "unified_diff": "@@ -2,7 +2,283 @@\n \n :py:mod:`slidge.command.admin`\n ==============================\n \n .. py:module:: slidge.command.admin\n \n \n+Module Contents\n+---------------\n+\n+Classes\n+~~~~~~~\n+\n+.. autoapisummary::\n+\n+ slidge.command.admin.AdminCommand\n+ slidge.command.admin.ListUsers\n+ slidge.command.admin.SlidgeInfo\n+ slidge.command.admin.DeleteUser\n+ slidge.command.admin.ChangeLoglevel\n+ slidge.command.admin.Exec\n+\n+\n+\n+\n+.. py:class:: AdminCommand(xmpp)\n+\n+\n+\n+\n+ Abstract base class to implement gateway commands (chatbot and ad-hoc)\n+\n+ .. py:attribute:: NAME\n+ :type: str\n+\n+ Friendly name of the command, eg: \"do something with stuff\"\n+\n+\n+ .. py:attribute:: HELP\n+ :type: str\n+\n+ Long description of what the command does\n+\n+\n+ .. py:attribute:: NODE\n+ :type: str\n+\n+ Name of the node used for ad-hoc commands\n+\n+\n+ .. py:attribute:: CHAT_COMMAND\n+ :type: str\n+\n+ Text to send to the gateway to trigger the command via a message\n+\n+\n+ .. py:method:: run(session, ifrom, *args)\n+ :async:\n+\n+ Entry point of the command\n+\n+ :param session: If triggered by a registered user, its slidge Session\n+ :param ifrom: JID of the command-triggering entity\n+ :param args: When triggered via chatbot type message, additional words\n+ after the CHAT_COMMAND string was passed\n+\n+ :return: Either a TableResult, a Form, a Confirmation, a text, or None\n+\n+\n+ .. py:method:: raise_if_not_authorized(jid)\n+\n+ Raise an appropriate error is jid is not authorized to use the command\n+\n+ :param jid: jid of the entity trying to access the command\n+ :return:session of JID if it exists\n+\n+\n+\n+.. py:class:: ListUsers(xmpp)\n+\n+\n+\n+\n+ Abstract base class to implement gateway commands (chatbot and ad-hoc)\n+\n+ .. py:attribute:: NODE\n+ :type: str\n+\n+ Name of the node used for ad-hoc commands\n+\n+\n+ .. py:attribute:: CHAT_COMMAND\n+ :type: str\n+\n+ Text to send to the gateway to trigger the command via a message\n+\n+\n+ .. py:method:: run(_session, _ifrom, *_)\n+ :async:\n+\n+ Entry point of the command\n+\n+ :param session: If triggered by a registered user, its slidge Session\n+ :param ifrom: JID of the command-triggering entity\n+ :param args: When triggered via chatbot type message, additional words\n+ after the CHAT_COMMAND string was passed\n+\n+ :return: Either a TableResult, a Form, a Confirmation, a text, or None\n+\n+\n+ .. py:method:: raise_if_not_authorized(jid)\n+\n+ Raise an appropriate error is jid is not authorized to use the command\n+\n+ :param jid: jid of the entity trying to access the command\n+ :return:session of JID if it exists\n+\n+\n+\n+.. py:class:: SlidgeInfo(xmpp)\n+\n+\n+\n+\n+ Abstract base class to implement gateway commands (chatbot and ad-hoc)\n+\n+ .. py:attribute:: NODE\n+ :type: str\n+\n+ Name of the node used for ad-hoc commands\n+\n+\n+ .. py:attribute:: CHAT_COMMAND\n+ :type: str\n+\n+ Text to send to the gateway to trigger the command via a message\n+\n+\n+ .. py:method:: run(_session, _ifrom, *_)\n+ :async:\n+\n+ Entry point of the command\n+\n+ :param session: If triggered by a registered user, its slidge Session\n+ :param ifrom: JID of the command-triggering entity\n+ :param args: When triggered via chatbot type message, additional words\n+ after the CHAT_COMMAND string was passed\n+\n+ :return: Either a TableResult, a Form, a Confirmation, a text, or None\n+\n+\n+ .. py:method:: raise_if_not_authorized(jid)\n+\n+ Raise an appropriate error is jid is not authorized to use the command\n+\n+ :param jid: jid of the entity trying to access the command\n+ :return:session of JID if it exists\n+\n+\n+\n+.. py:class:: DeleteUser(xmpp)\n+\n+\n+\n+\n+ Abstract base class to implement gateway commands (chatbot and ad-hoc)\n+\n+ .. py:attribute:: NODE\n+ :type: str\n+\n+ Name of the node used for ad-hoc commands\n+\n+\n+ .. py:attribute:: CHAT_COMMAND\n+ :type: str\n+\n+ Text to send to the gateway to trigger the command via a message\n+\n+\n+ .. py:method:: run(_session, _ifrom, *_)\n+ :async:\n+\n+ Entry point of the command\n+\n+ :param session: If triggered by a registered user, its slidge Session\n+ :param ifrom: JID of the command-triggering entity\n+ :param args: When triggered via chatbot type message, additional words\n+ after the CHAT_COMMAND string was passed\n+\n+ :return: Either a TableResult, a Form, a Confirmation, a text, or None\n+\n+\n+ .. py:method:: raise_if_not_authorized(jid)\n+\n+ Raise an appropriate error is jid is not authorized to use the command\n+\n+ :param jid: jid of the entity trying to access the command\n+ :return:session of JID if it exists\n+\n+\n+\n+.. py:class:: ChangeLoglevel(xmpp)\n+\n+\n+\n+\n+ Abstract base class to implement gateway commands (chatbot and ad-hoc)\n+\n+ .. py:attribute:: NODE\n+ :type: str\n+\n+ Name of the node used for ad-hoc commands\n+\n+\n+ .. py:attribute:: CHAT_COMMAND\n+ :type: str\n+\n+ Text to send to the gateway to trigger the command via a message\n+\n+\n+ .. py:method:: run(_session, _ifrom, *_)\n+ :async:\n+\n+ Entry point of the command\n+\n+ :param session: If triggered by a registered user, its slidge Session\n+ :param ifrom: JID of the command-triggering entity\n+ :param args: When triggered via chatbot type message, additional words\n+ after the CHAT_COMMAND string was passed\n+\n+ :return: Either a TableResult, a Form, a Confirmation, a text, or None\n+\n+\n+ .. py:method:: raise_if_not_authorized(jid)\n+\n+ Raise an appropriate error is jid is not authorized to use the command\n+\n+ :param jid: jid of the entity trying to access the command\n+ :return:session of JID if it exists\n+\n+\n+\n+.. py:class:: Exec(xmpp)\n+\n+\n+\n+\n+ Abstract base class to implement gateway commands (chatbot and ad-hoc)\n+\n+ .. py:attribute:: NAME\n+ :type: str\n+\n+ Friendly name of the command, eg: \"do something with stuff\"\n+\n+\n+ .. py:attribute:: HELP\n+ :type: str\n+\n+ Long description of what the command does\n+\n+\n+ .. py:method:: run(session, ifrom, *args)\n+ :async:\n+\n+ Entry point of the command\n+\n+ :param session: If triggered by a registered user, its slidge Session\n+ :param ifrom: JID of the command-triggering entity\n+ :param args: When triggered via chatbot type message, additional words\n+ after the CHAT_COMMAND string was passed\n+\n+ :return: Either a TableResult, a Form, a Confirmation, a text, or None\n+\n+\n+ .. py:method:: raise_if_not_authorized(jid)\n+\n+ Raise an appropriate error is jid is not authorized to use the command\n+\n+ :param jid: jid of the entity trying to access the command\n+ :return:session of JID if it exists\n+\n+\n+\n"}, {"source1": "./usr/share/doc/python-slidge-doc/html/_sources/dev/api/slidge/group/index.rst.txt", "source2": "./usr/share/doc/python-slidge-doc/html/_sources/dev/api/slidge/group/index.rst.txt", "unified_diff": "@@ -123,243 +123,25 @@\n \n \n .. py:method:: ban()\n \n Call this when the participant is banned from the room\n \n \n- .. py:method:: online(status = None, last_seen = None)\n-\n- Send an \"online\" presence from this contact to the user.\n-\n- :param status: Arbitrary text, details of the status, eg: \"Listening to Britney Spears\"\n- :param last_seen: For :xep:`0319`\n-\n-\n- .. py:method:: away(status = None, last_seen = None)\n-\n- Send an \"away\" presence from this contact to the user.\n-\n- This is a global status, as opposed to :meth:`.LegacyContact.inactive`\n- which concerns a specific conversation, ie a specific \"chat window\"\n-\n- :param status: Arbitrary text, details of the status, eg: \"Gone to fight capitalism\"\n- :param last_seen: For :xep:`0319`\n-\n-\n- .. py:method:: extended_away(status = None, last_seen = None)\n-\n- Send an \"extended away\" presence from this contact to the user.\n-\n- This is a global status, as opposed to :meth:`.LegacyContact.inactive`\n- which concerns a specific conversation, ie a specific \"chat window\"\n-\n- :param status: Arbitrary text, details of the status, eg: \"Gone to fight capitalism\"\n- :param last_seen: For :xep:`0319`\n-\n-\n- .. py:method:: busy(status = None, last_seen = None)\n-\n- Send a \"busy\" (ie, \"dnd\") presence from this contact to the user,\n-\n- :param status: eg: \"Trying to make sense of XEP-0100\"\n- :param last_seen: For :xep:`0319`\n-\n-\n- .. py:method:: offline(status = None, last_seen = None)\n-\n- Send an \"offline\" presence from this contact to the user.\n-\n- :param status: eg: \"Trying to make sense of XEP-0100\"\n- :param last_seen: For :xep:`0319`\n-\n-\n- .. py:method:: invite_to(muc, reason = None, password = None, **send_kwargs)\n-\n- Send an invitation to join a group (:xep:`0249`) from this :term:`XMPP Entity`.\n-\n- :param muc: the muc the user is invited to\n- :param reason: a text explaining why the user should join this muc\n- :param password: maybe this will make sense later? not sure\n- :param send_kwargs: additional kwargs to be passed to _send()\n- (internal use by slidge)\n-\n-\n- .. py:method:: active(**kwargs)\n-\n- Send an \"active\" chat state (:xep:`0085`) from this\n- :term:`XMPP Entity`.\n-\n-\n- .. py:method:: composing(**kwargs)\n-\n- Send a \"composing\" (ie \"typing notification\") chat state (:xep:`0085`)\n- from this :term:`XMPP Entity`.\n-\n-\n- .. py:method:: paused(**kwargs)\n-\n- Send a \"paused\" (ie \"typing paused notification\") chat state\n- (:xep:`0085`) from this :term:`XMPP Entity`.\n-\n-\n- .. py:method:: inactive(**kwargs)\n-\n- Send an \"inactive\" (ie \"contact has not interacted with the chat session\n- interface for an intermediate period of time\") chat state (:xep:`0085`)\n- from this :term:`XMPP Entity`.\n-\n-\n- .. py:method:: gone(**kwargs)\n-\n- Send a \"gone\" (ie \"contact has not interacted with the chat session interface,\n- system, or device for a relatively long period of time\") chat state\n- (:xep:`0085`) from this :term:`XMPP Entity`.\n-\n-\n- .. py:method:: ack(legacy_msg_id, **kwargs)\n-\n- Send an \"acknowledged\" message marker (:xep:`0333`) from this :term:`XMPP Entity`.\n-\n- :param legacy_msg_id: The message this marker refers to\n-\n-\n- .. py:method:: received(legacy_msg_id, **kwargs)\n-\n- Send a \"received\" message marker (:xep:`0333`) from this :term:`XMPP Entity`.\n- If called on a :class:`LegacyContact`, also send a delivery receipt\n- marker (:xep:`0184`).\n-\n- :param legacy_msg_id: The message this marker refers to\n-\n-\n- .. py:method:: displayed(legacy_msg_id, **kwargs)\n-\n- Send a \"displayed\" message marker (:xep:`0333`) from this :term:`XMPP Entity`.\n-\n- :param legacy_msg_id: The message this marker refers to\n-\n-\n- .. py:method:: send_text(body, legacy_msg_id = None, *, when = None, reply_to = None, thread = None, hints = None, carbon=False, archive_only=False, correction=False, correction_event_id = None, link_previews = None, **send_kwargs)\n-\n- Send a text message from this :term:`XMPP Entity`.\n-\n- :param body: Content of the message\n- :param legacy_msg_id: If you want to be able to transport read markers from the gateway\n- user to the legacy network, specify this\n- :param when: when the message was sent, for a \"delay\" tag (:xep:`0203`)\n- :param reply_to: Quote another message (:xep:`0461`)\n- :param hints:\n- :param thread:\n- :param carbon: (only used if called on a :class:`LegacyContact`)\n- Set this to ``True`` if this is actually a message sent **to** the\n- :class:`LegacyContact` by the :term:`User`.\n- Use this to synchronize outgoing history for legacy official apps.\n- :param correction: whether this message is a correction or not\n- :param correction_event_id: in the case where an ID is associated with the legacy\n- 'correction event', specify it here to use it on the XMPP side. If not specified,\n- a random ID will be used.\n- :param link_previews: A little of sender (or server, or gateway)-generated\n- previews of URLs linked in the body.\n- :param archive_only: (only in groups) Do not send this message to user,\n- but store it in the archive. Meant to be used during ``MUC.backfill()``\n-\n-\n- .. py:method:: correct(legacy_msg_id, new_text, *, when = None, reply_to = None, thread = None, hints = None, carbon=False, archive_only=False, correction_event_id = None, link_previews = None, **send_kwargs)\n-\n- Modify a message that was previously sent by this :term:`XMPP Entity`.\n-\n- Uses last message correction (:xep:`0308`)\n-\n- :param new_text: New content of the message\n- :param legacy_msg_id: The legacy message ID of the message to correct\n- :param when: when the message was sent, for a \"delay\" tag (:xep:`0203`)\n- :param reply_to: Quote another message (:xep:`0461`)\n- :param hints:\n- :param thread:\n- :param carbon: (only in 1:1) Reflect a message sent to this ``Contact`` by the user.\n- Use this to synchronize outgoing history for legacy official apps.\n- :param archive_only: (only in groups) Do not send this message to user,\n- but store it in the archive. Meant to be used during ``MUC.backfill()``\n- :param correction_event_id: in the case where an ID is associated with the legacy\n- 'correction event', specify it here to use it on the XMPP side. If not specified,\n- a random ID will be used.\n- :param link_previews: A little of sender (or server, or gateway)-generated\n- previews of URLs linked in the body.\n-\n-\n- .. py:method:: react(legacy_msg_id, emojis = (), thread = None, **kwargs)\n-\n- Send a reaction (:xep:`0444`) from this :term:`XMPP Entity`.\n-\n- :param legacy_msg_id: The message which the reaction refers to.\n- :param emojis: An iterable of emojis used as reactions\n- :param thread:\n-\n-\n- .. py:method:: retract(legacy_msg_id, thread = None, **kwargs)\n-\n- Send a message retraction (:XEP:`0424`) from this :term:`XMPP Entity`.\n-\n- :param legacy_msg_id: Legacy ID of the message to delete\n- :param thread:\n-\n-\n- .. py:method:: send_file(file_path = None, legacy_msg_id = None, *, data_stream = None, data = None, file_url = None, file_name = None, content_type = None, reply_to = None, when = None, caption = None, legacy_file_id = None, thread = None, **kwargs)\n- :async:\n-\n- Send a single file from this :term:`XMPP Entity`.\n-\n- :param file_path: Path to the attachment\n- :param data_stream: Alternatively, a stream of bytes (such as a File object)\n- :param data: Alternatively, a bytes object\n- :param file_url: Alternatively, a URL\n- :param file_name: How the file should be named.\n- :param content_type: MIME type, inferred from filename if not given\n- :param legacy_msg_id: If you want to be able to transport read markers from the gateway\n- user to the legacy network, specify this\n- :param reply_to: Quote another message (:xep:`0461`)\n- :param when: when the file was sent, for a \"delay\" tag (:xep:`0203`)\n- :param caption: an optional text that is linked to the file\n- :param legacy_file_id: A unique identifier for the file on the legacy network.\n- Plugins should try their best to provide it, to avoid duplicates.\n- :param thread:\n-\n-\n \n .. py:class:: LegacyMUC(session, legacy_id, jid)\n \n \n \n \n A room, a.k.a. a Multi-User Chat.\n \n MUC instances are obtained by calling :py:meth:`slidge.group.bookmarks.LegacyBookmarks`\n on the user's :py:class:`slidge.core.session.BaseSession`.\n \n- .. py:property:: avatar_id\n- :type: Optional[slidge.util.types.AvatarIdType]\n-\n- The unique ID of this entity's avatar.\n-\n-\n- .. py:property:: avatar\n- :type: Optional[slidge.util.types.AvatarIdType]\n-\n- This property can be used to set the avatar, but\n- :py:meth:`~.AvatarMixin.set_avatar()` should be preferred because you can\n- provide a unique ID for the avatar for efficient caching.\n- Setting this is OKish in case the avatar type is a URL or a local path\n- that can act as a legacy ID.\n-\n- Python's ``property`` is abused here to maintain backwards\n- compatibility, but when getting it you actually get the avatar legacy\n- ID.\n-\n-\n .. py:attribute:: STABLE_ARCHIVE\n :value: False\n \n Because legacy events like reactions, editions, etc. don't all map to a stanza\n with a proper legacy ID, slidge usually cannot guarantee the stability of the archive\n across restarts.\n \n@@ -581,28 +363,8 @@\n :async:\n \n Triggered when the user requests room destruction.\n \n :param reason: Optionally, a reason for the destruction\n \n \n- .. py:method:: set_avatar(a, avatar_unique_id = None, blocking=False, cancel=True)\n- :async:\n-\n- Set an avatar for this entity\n-\n- :param a:\n- :param avatar_unique_id:\n- :param blocking:\n- :param cancel:\n-\n-\n- .. py:method:: available_emojis(legacy_msg_id = None)\n- :async:\n-\n- Override this to restrict the subset of reactions this recipient\n- can handle.\n-\n- :return: A set of emojis or None if any emoji is allowed\n-\n-\n \n"}, {"source1": "./usr/share/doc/python-slidge-doc/html/_sources/dev/api/slidge/group/participant/index.rst.txt", "source2": "./usr/share/doc/python-slidge-doc/html/_sources/dev/api/slidge/group/participant/index.rst.txt", "unified_diff": "@@ -49,206 +49,8 @@\n \n \n .. py:method:: ban()\n \n Call this when the participant is banned from the room\n \n \n- .. py:method:: online(status = None, last_seen = None)\n-\n- Send an \"online\" presence from this contact to the user.\n-\n- :param status: Arbitrary text, details of the status, eg: \"Listening to Britney Spears\"\n- :param last_seen: For :xep:`0319`\n-\n-\n- .. py:method:: away(status = None, last_seen = None)\n-\n- Send an \"away\" presence from this contact to the user.\n-\n- This is a global status, as opposed to :meth:`.LegacyContact.inactive`\n- which concerns a specific conversation, ie a specific \"chat window\"\n-\n- :param status: Arbitrary text, details of the status, eg: \"Gone to fight capitalism\"\n- :param last_seen: For :xep:`0319`\n-\n-\n- .. py:method:: extended_away(status = None, last_seen = None)\n-\n- Send an \"extended away\" presence from this contact to the user.\n-\n- This is a global status, as opposed to :meth:`.LegacyContact.inactive`\n- which concerns a specific conversation, ie a specific \"chat window\"\n-\n- :param status: Arbitrary text, details of the status, eg: \"Gone to fight capitalism\"\n- :param last_seen: For :xep:`0319`\n-\n-\n- .. py:method:: busy(status = None, last_seen = None)\n-\n- Send a \"busy\" (ie, \"dnd\") presence from this contact to the user,\n-\n- :param status: eg: \"Trying to make sense of XEP-0100\"\n- :param last_seen: For :xep:`0319`\n-\n-\n- .. py:method:: offline(status = None, last_seen = None)\n-\n- Send an \"offline\" presence from this contact to the user.\n-\n- :param status: eg: \"Trying to make sense of XEP-0100\"\n- :param last_seen: For :xep:`0319`\n-\n-\n- .. py:method:: invite_to(muc, reason = None, password = None, **send_kwargs)\n-\n- Send an invitation to join a group (:xep:`0249`) from this :term:`XMPP Entity`.\n-\n- :param muc: the muc the user is invited to\n- :param reason: a text explaining why the user should join this muc\n- :param password: maybe this will make sense later? not sure\n- :param send_kwargs: additional kwargs to be passed to _send()\n- (internal use by slidge)\n-\n-\n- .. py:method:: active(**kwargs)\n-\n- Send an \"active\" chat state (:xep:`0085`) from this\n- :term:`XMPP Entity`.\n-\n-\n- .. py:method:: composing(**kwargs)\n-\n- Send a \"composing\" (ie \"typing notification\") chat state (:xep:`0085`)\n- from this :term:`XMPP Entity`.\n-\n-\n- .. py:method:: paused(**kwargs)\n-\n- Send a \"paused\" (ie \"typing paused notification\") chat state\n- (:xep:`0085`) from this :term:`XMPP Entity`.\n-\n-\n- .. py:method:: inactive(**kwargs)\n-\n- Send an \"inactive\" (ie \"contact has not interacted with the chat session\n- interface for an intermediate period of time\") chat state (:xep:`0085`)\n- from this :term:`XMPP Entity`.\n-\n-\n- .. py:method:: gone(**kwargs)\n-\n- Send a \"gone\" (ie \"contact has not interacted with the chat session interface,\n- system, or device for a relatively long period of time\") chat state\n- (:xep:`0085`) from this :term:`XMPP Entity`.\n-\n-\n- .. py:method:: ack(legacy_msg_id, **kwargs)\n-\n- Send an \"acknowledged\" message marker (:xep:`0333`) from this :term:`XMPP Entity`.\n-\n- :param legacy_msg_id: The message this marker refers to\n-\n-\n- .. py:method:: received(legacy_msg_id, **kwargs)\n-\n- Send a \"received\" message marker (:xep:`0333`) from this :term:`XMPP Entity`.\n- If called on a :class:`LegacyContact`, also send a delivery receipt\n- marker (:xep:`0184`).\n-\n- :param legacy_msg_id: The message this marker refers to\n-\n-\n- .. py:method:: displayed(legacy_msg_id, **kwargs)\n-\n- Send a \"displayed\" message marker (:xep:`0333`) from this :term:`XMPP Entity`.\n-\n- :param legacy_msg_id: The message this marker refers to\n-\n-\n- .. py:method:: send_text(body, legacy_msg_id = None, *, when = None, reply_to = None, thread = None, hints = None, carbon=False, archive_only=False, correction=False, correction_event_id = None, link_previews = None, **send_kwargs)\n-\n- Send a text message from this :term:`XMPP Entity`.\n-\n- :param body: Content of the message\n- :param legacy_msg_id: If you want to be able to transport read markers from the gateway\n- user to the legacy network, specify this\n- :param when: when the message was sent, for a \"delay\" tag (:xep:`0203`)\n- :param reply_to: Quote another message (:xep:`0461`)\n- :param hints:\n- :param thread:\n- :param carbon: (only used if called on a :class:`LegacyContact`)\n- Set this to ``True`` if this is actually a message sent **to** the\n- :class:`LegacyContact` by the :term:`User`.\n- Use this to synchronize outgoing history for legacy official apps.\n- :param correction: whether this message is a correction or not\n- :param correction_event_id: in the case where an ID is associated with the legacy\n- 'correction event', specify it here to use it on the XMPP side. If not specified,\n- a random ID will be used.\n- :param link_previews: A little of sender (or server, or gateway)-generated\n- previews of URLs linked in the body.\n- :param archive_only: (only in groups) Do not send this message to user,\n- but store it in the archive. Meant to be used during ``MUC.backfill()``\n-\n-\n- .. py:method:: correct(legacy_msg_id, new_text, *, when = None, reply_to = None, thread = None, hints = None, carbon=False, archive_only=False, correction_event_id = None, link_previews = None, **send_kwargs)\n-\n- Modify a message that was previously sent by this :term:`XMPP Entity`.\n-\n- Uses last message correction (:xep:`0308`)\n-\n- :param new_text: New content of the message\n- :param legacy_msg_id: The legacy message ID of the message to correct\n- :param when: when the message was sent, for a \"delay\" tag (:xep:`0203`)\n- :param reply_to: Quote another message (:xep:`0461`)\n- :param hints:\n- :param thread:\n- :param carbon: (only in 1:1) Reflect a message sent to this ``Contact`` by the user.\n- Use this to synchronize outgoing history for legacy official apps.\n- :param archive_only: (only in groups) Do not send this message to user,\n- but store it in the archive. Meant to be used during ``MUC.backfill()``\n- :param correction_event_id: in the case where an ID is associated with the legacy\n- 'correction event', specify it here to use it on the XMPP side. If not specified,\n- a random ID will be used.\n- :param link_previews: A little of sender (or server, or gateway)-generated\n- previews of URLs linked in the body.\n-\n-\n- .. py:method:: react(legacy_msg_id, emojis = (), thread = None, **kwargs)\n-\n- Send a reaction (:xep:`0444`) from this :term:`XMPP Entity`.\n-\n- :param legacy_msg_id: The message which the reaction refers to.\n- :param emojis: An iterable of emojis used as reactions\n- :param thread:\n-\n-\n- .. py:method:: retract(legacy_msg_id, thread = None, **kwargs)\n-\n- Send a message retraction (:XEP:`0424`) from this :term:`XMPP Entity`.\n-\n- :param legacy_msg_id: Legacy ID of the message to delete\n- :param thread:\n-\n-\n- .. py:method:: send_file(file_path = None, legacy_msg_id = None, *, data_stream = None, data = None, file_url = None, file_name = None, content_type = None, reply_to = None, when = None, caption = None, legacy_file_id = None, thread = None, **kwargs)\n- :async:\n-\n- Send a single file from this :term:`XMPP Entity`.\n-\n- :param file_path: Path to the attachment\n- :param data_stream: Alternatively, a stream of bytes (such as a File object)\n- :param data: Alternatively, a bytes object\n- :param file_url: Alternatively, a URL\n- :param file_name: How the file should be named.\n- :param content_type: MIME type, inferred from filename if not given\n- :param legacy_msg_id: If you want to be able to transport read markers from the gateway\n- user to the legacy network, specify this\n- :param reply_to: Quote another message (:xep:`0461`)\n- :param when: when the file was sent, for a \"delay\" tag (:xep:`0203`)\n- :param caption: an optional text that is linked to the file\n- :param legacy_file_id: A unique identifier for the file on the legacy network.\n- Plugins should try their best to provide it, to avoid duplicates.\n- :param thread:\n-\n-\n \n"}, {"source1": "./usr/share/doc/python-slidge-doc/html/_sources/dev/api/slidge/group/room/index.rst.txt", "source2": "./usr/share/doc/python-slidge-doc/html/_sources/dev/api/slidge/group/room/index.rst.txt", "unified_diff": "@@ -25,34 +25,14 @@\n \n \n A room, a.k.a. a Multi-User Chat.\n \n MUC instances are obtained by calling :py:meth:`slidge.group.bookmarks.LegacyBookmarks`\n on the user's :py:class:`slidge.core.session.BaseSession`.\n \n- .. py:property:: avatar_id\n- :type: Optional[slidge.util.types.AvatarIdType]\n-\n- The unique ID of this entity's avatar.\n-\n-\n- .. py:property:: avatar\n- :type: Optional[slidge.util.types.AvatarIdType]\n-\n- This property can be used to set the avatar, but\n- :py:meth:`~.AvatarMixin.set_avatar()` should be preferred because you can\n- provide a unique ID for the avatar for efficient caching.\n- Setting this is OKish in case the avatar type is a URL or a local path\n- that can act as a legacy ID.\n-\n- Python's ``property`` is abused here to maintain backwards\n- compatibility, but when getting it you actually get the avatar legacy\n- ID.\n-\n-\n .. py:attribute:: STABLE_ARCHIVE\n :value: False\n \n Because legacy events like reactions, editions, etc. don't all map to a stanza\n with a proper legacy ID, slidge usually cannot guarantee the stability of the archive\n across restarts.\n \n@@ -274,28 +254,8 @@\n :async:\n \n Triggered when the user requests room destruction.\n \n :param reason: Optionally, a reason for the destruction\n \n \n- .. py:method:: set_avatar(a, avatar_unique_id = None, blocking=False, cancel=True)\n- :async:\n-\n- Set an avatar for this entity\n-\n- :param a:\n- :param avatar_unique_id:\n- :param blocking:\n- :param cancel:\n-\n-\n- .. py:method:: available_emojis(legacy_msg_id = None)\n- :async:\n-\n- Override this to restrict the subset of reactions this recipient\n- can handle.\n-\n- :return: A set of emojis or None if any emoji is allowed\n-\n-\n \n"}, {"source1": "./usr/share/doc/python-slidge-doc/html/dev/api/slidge/command/admin/index.html", "source2": "./usr/share/doc/python-slidge-doc/html/dev/api/slidge/command/admin/index.html", "unified_diff": "@@ -131,15 +131,15 @@\n <button class=\"theme-toggle\">\n <div class=\"visually-hidden\">Toggle Light / Dark / Auto color theme</div>\n <svg class=\"theme-icon-when-auto\"><use href=\"#svg-sun-half\"></use></svg>\n <svg class=\"theme-icon-when-dark\"><use href=\"#svg-moon\"></use></svg>\n <svg class=\"theme-icon-when-light\"><use href=\"#svg-sun\"></use></svg>\n </button>\n </div>\n- <label class=\"toc-overlay-icon toc-header-icon no-toc\" for=\"__toc\">\n+ <label class=\"toc-overlay-icon toc-header-icon\" for=\"__toc\">\n <div class=\"visually-hidden\">Toggle table of contents sidebar</div>\n <i class=\"icon\"><svg><use href=\"#svg-toc\"></use></svg></i>\n </label>\n </div>\n </header>\n <aside class=\"sidebar-drawer\">\n <div class=\"sidebar-container\">\n@@ -220,22 +220,404 @@\n <button class=\"theme-toggle\">\n <div class=\"visually-hidden\">Toggle Light / Dark / Auto color theme</div>\n <svg class=\"theme-icon-when-auto\"><use href=\"#svg-sun-half\"></use></svg>\n <svg class=\"theme-icon-when-dark\"><use href=\"#svg-moon\"></use></svg>\n <svg class=\"theme-icon-when-light\"><use href=\"#svg-sun\"></use></svg>\n </button>\n </div>\n- <label class=\"toc-overlay-icon toc-content-icon no-toc\" for=\"__toc\">\n+ <label class=\"toc-overlay-icon toc-content-icon\" for=\"__toc\">\n <div class=\"visually-hidden\">Toggle table of contents sidebar</div>\n <i class=\"icon\"><svg><use href=\"#svg-toc\"></use></svg></i>\n </label>\n </div>\n <article role=\"main\">\n <section id=\"module-slidge.command.admin\">\n <span id=\"slidge-command-admin\"></span><h1><a class=\"reference internal\" href=\"#module-slidge.command.admin\" title=\"slidge.command.admin\"><code class=\"xref py py-mod docutils literal notranslate\"><span class=\"pre\">slidge.command.admin</span></code></a><a class=\"headerlink\" href=\"#module-slidge.command.admin\" title=\"Link to this heading\">#</a></h1>\n+<section id=\"module-contents\">\n+<h2>Module Contents<a class=\"headerlink\" href=\"#module-contents\" title=\"Link to this heading\">#</a></h2>\n+<section id=\"classes\">\n+<h3>Classes<a class=\"headerlink\" href=\"#classes\" title=\"Link to this heading\">#</a></h3>\n+<div class=\"table-wrapper autosummary longtable docutils container\">\n+<table class=\"autosummary longtable docutils align-default\">\n+<tbody>\n+<tr class=\"row-odd\"><td><p><a class=\"reference internal\" href=\"#slidge.command.admin.AdminCommand\" title=\"slidge.command.admin.AdminCommand\"><code class=\"xref py py-obj docutils literal notranslate\"><span class=\"pre\">AdminCommand</span></code></a></p></td>\n+<td><p>Abstract base class to implement gateway commands (chatbot and ad-hoc)</p></td>\n+</tr>\n+<tr class=\"row-even\"><td><p><a class=\"reference internal\" href=\"#slidge.command.admin.ListUsers\" title=\"slidge.command.admin.ListUsers\"><code class=\"xref py py-obj docutils literal notranslate\"><span class=\"pre\">ListUsers</span></code></a></p></td>\n+<td><p>Abstract base class to implement gateway commands (chatbot and ad-hoc)</p></td>\n+</tr>\n+<tr class=\"row-odd\"><td><p><a class=\"reference internal\" href=\"#slidge.command.admin.SlidgeInfo\" title=\"slidge.command.admin.SlidgeInfo\"><code class=\"xref py py-obj docutils literal notranslate\"><span class=\"pre\">SlidgeInfo</span></code></a></p></td>\n+<td><p>Abstract base class to implement gateway commands (chatbot and ad-hoc)</p></td>\n+</tr>\n+<tr class=\"row-even\"><td><p><a class=\"reference internal\" href=\"#slidge.command.admin.DeleteUser\" title=\"slidge.command.admin.DeleteUser\"><code class=\"xref py py-obj docutils literal notranslate\"><span class=\"pre\">DeleteUser</span></code></a></p></td>\n+<td><p>Abstract base class to implement gateway commands (chatbot and ad-hoc)</p></td>\n+</tr>\n+<tr class=\"row-odd\"><td><p><a class=\"reference internal\" href=\"#slidge.command.admin.ChangeLoglevel\" title=\"slidge.command.admin.ChangeLoglevel\"><code class=\"xref py py-obj docutils literal notranslate\"><span class=\"pre\">ChangeLoglevel</span></code></a></p></td>\n+<td><p>Abstract base class to implement gateway commands (chatbot and ad-hoc)</p></td>\n+</tr>\n+<tr class=\"row-even\"><td><p><a class=\"reference internal\" href=\"#slidge.command.admin.Exec\" title=\"slidge.command.admin.Exec\"><code class=\"xref py py-obj docutils literal notranslate\"><span class=\"pre\">Exec</span></code></a></p></td>\n+<td><p>Abstract base class to implement gateway commands (chatbot and ad-hoc)</p></td>\n+</tr>\n+</tbody>\n+</table>\n+</div>\n+<dl class=\"py class\">\n+<dt class=\"sig sig-object py\" id=\"slidge.command.admin.AdminCommand\">\n+<em class=\"property\"><span class=\"pre\">class</span><span class=\"w\"> </span></em><span class=\"sig-prename descclassname\"><span class=\"pre\">slidge.command.admin.</span></span><span class=\"sig-name descname\"><span class=\"pre\">AdminCommand</span></span><span class=\"sig-paren\">(</span><em class=\"sig-param\"><span class=\"n\"><span class=\"pre\">xmpp</span></span></em><span class=\"sig-paren\">)</span><a class=\"headerlink\" href=\"#slidge.command.admin.AdminCommand\" title=\"Link to this definition\">#</a></dt>\n+<dd><p>Abstract base class to implement gateway commands (chatbot and ad-hoc)</p>\n+<dl class=\"field-list simple\">\n+<dt class=\"field-odd\">Parameters<span class=\"colon\">:</span></dt>\n+<dd class=\"field-odd\"><p><strong>xmpp</strong> (<a class=\"reference internal\" href=\"../../core/gateway/index.html#slidge.core.gateway.BaseGateway\" title=\"slidge.core.gateway.BaseGateway\"><em>slidge.core.gateway.BaseGateway</em></a>) \u2013 </p>\n+</dd>\n+</dl>\n+<dl class=\"py attribute\">\n+<dt class=\"sig sig-object py\" id=\"slidge.command.admin.AdminCommand.NAME\">\n+<span class=\"sig-name descname\"><span class=\"pre\">NAME</span></span><em class=\"property\"><span class=\"p\"><span class=\"pre\">:</span></span><span class=\"w\"> </span><a class=\"reference external\" href=\"/usr/share/doc/python3-doc/html/library/stdtypes.html#str\" title=\"(in Python v3.11)\"><span class=\"pre\">str</span></a></em><a class=\"headerlink\" href=\"#slidge.command.admin.AdminCommand.NAME\" title=\"Link to this definition\">#</a></dt>\n+<dd><p>Friendly name of the command, eg: \u201cdo something with stuff\u201d</p>\n+</dd></dl>\n+\n+<dl class=\"py attribute\">\n+<dt class=\"sig sig-object py\" id=\"slidge.command.admin.AdminCommand.HELP\">\n+<span class=\"sig-name descname\"><span class=\"pre\">HELP</span></span><em class=\"property\"><span class=\"p\"><span class=\"pre\">:</span></span><span class=\"w\"> </span><a class=\"reference external\" href=\"/usr/share/doc/python3-doc/html/library/stdtypes.html#str\" title=\"(in Python v3.11)\"><span class=\"pre\">str</span></a></em><a class=\"headerlink\" href=\"#slidge.command.admin.AdminCommand.HELP\" title=\"Link to this definition\">#</a></dt>\n+<dd><p>Long description of what the command does</p>\n+</dd></dl>\n+\n+<dl class=\"py attribute\">\n+<dt class=\"sig sig-object py\" id=\"slidge.command.admin.AdminCommand.NODE\">\n+<span class=\"sig-name descname\"><span class=\"pre\">NODE</span></span><em class=\"property\"><span class=\"p\"><span class=\"pre\">:</span></span><span class=\"w\"> </span><a class=\"reference external\" href=\"/usr/share/doc/python3-doc/html/library/stdtypes.html#str\" title=\"(in Python v3.11)\"><span class=\"pre\">str</span></a></em><a class=\"headerlink\" href=\"#slidge.command.admin.AdminCommand.NODE\" title=\"Link to this definition\">#</a></dt>\n+<dd><p>Name of the node used for ad-hoc commands</p>\n+</dd></dl>\n+\n+<dl class=\"py attribute\">\n+<dt class=\"sig sig-object py\" id=\"slidge.command.admin.AdminCommand.CHAT_COMMAND\">\n+<span class=\"sig-name descname\"><span class=\"pre\">CHAT_COMMAND</span></span><em class=\"property\"><span class=\"p\"><span class=\"pre\">:</span></span><span class=\"w\"> </span><a class=\"reference external\" href=\"/usr/share/doc/python3-doc/html/library/stdtypes.html#str\" title=\"(in Python v3.11)\"><span class=\"pre\">str</span></a></em><a class=\"headerlink\" href=\"#slidge.command.admin.AdminCommand.CHAT_COMMAND\" title=\"Link to this definition\">#</a></dt>\n+<dd><p>Text to send to the gateway to trigger the command via a message</p>\n+</dd></dl>\n+\n+<dl class=\"py method\">\n+<dt class=\"sig sig-object py\" id=\"slidge.command.admin.AdminCommand.run\">\n+<em class=\"property\"><span class=\"pre\">async</span><span class=\"w\"> </span></em><span class=\"sig-name descname\"><span class=\"pre\">run</span></span><span class=\"sig-paren\">(</span><em class=\"sig-param\"><span class=\"n\"><span class=\"pre\">session</span></span></em>, <em class=\"sig-param\"><span class=\"n\"><span class=\"pre\">ifrom</span></span></em>, <em class=\"sig-param\"><span class=\"o\"><span class=\"pre\">*</span></span><span class=\"n\"><span class=\"pre\">args</span></span></em><span class=\"sig-paren\">)</span><a class=\"headerlink\" href=\"#slidge.command.admin.AdminCommand.run\" title=\"Link to this definition\">#</a></dt>\n+<dd><p>Entry point of the command</p>\n+<dl class=\"field-list simple\">\n+<dt class=\"field-odd\">Parameters<span class=\"colon\">:</span></dt>\n+<dd class=\"field-odd\"><ul class=\"simple\">\n+<li><p><strong>session</strong> (<em>Optional</em><em>[</em><a class=\"reference internal\" href=\"../../core/session/index.html#slidge.core.session.BaseSession\" title=\"slidge.core.session.BaseSession\"><em>BaseSession</em></a><em>[</em><em>Any</em><em>, </em><em>Any</em><em>]</em><em>]</em>) \u2013 If triggered by a registered user, its slidge Session</p></li>\n+<li><p><strong>ifrom</strong> (<em>slixmpp.JID</em>) \u2013 JID of the command-triggering entity</p></li>\n+<li><p><strong>args</strong> (<a class=\"reference external\" href=\"/usr/share/doc/python3-doc/html/library/stdtypes.html#str\" title=\"(in Python v3.11)\"><em>str</em></a>) \u2013 When triggered via chatbot type message, additional words\n+after the CHAT_COMMAND string was passed</p></li>\n+</ul>\n+</dd>\n+<dt class=\"field-even\">Returns<span class=\"colon\">:</span></dt>\n+<dd class=\"field-even\"><p>Either a TableResult, a Form, a Confirmation, a text, or None</p>\n+</dd>\n+<dt class=\"field-odd\">Return type<span class=\"colon\">:</span></dt>\n+<dd class=\"field-odd\"><p>CommandResponseType</p>\n+</dd>\n+</dl>\n+</dd></dl>\n+\n+<dl class=\"py method\">\n+<dt class=\"sig sig-object py\" id=\"slidge.command.admin.AdminCommand.raise_if_not_authorized\">\n+<span class=\"sig-name descname\"><span class=\"pre\">raise_if_not_authorized</span></span><span class=\"sig-paren\">(</span><em class=\"sig-param\"><span class=\"n\"><span class=\"pre\">jid</span></span></em><span class=\"sig-paren\">)</span><a class=\"headerlink\" href=\"#slidge.command.admin.AdminCommand.raise_if_not_authorized\" title=\"Link to this definition\">#</a></dt>\n+<dd><p>Raise an appropriate error is jid is not authorized to use the command</p>\n+<dl class=\"field-list simple\">\n+<dt class=\"field-odd\">Parameters<span class=\"colon\">:</span></dt>\n+<dd class=\"field-odd\"><p><strong>jid</strong> (<em>slixmpp.JID</em>) \u2013 jid of the entity trying to access the command</p>\n+</dd>\n+<dt class=\"field-even\">Return type<span class=\"colon\">:</span></dt>\n+<dd class=\"field-even\"><p>Optional[<a class=\"reference internal\" href=\"../../core/session/index.html#slidge.core.session.BaseSession\" title=\"slidge.core.session.BaseSession\">BaseSession</a>[Any, Any]]</p>\n+</dd>\n+</dl>\n+<p>:return:session of JID if it exists</p>\n+</dd></dl>\n+\n+</dd></dl>\n+\n+<dl class=\"py class\">\n+<dt class=\"sig sig-object py\" id=\"slidge.command.admin.ListUsers\">\n+<em class=\"property\"><span class=\"pre\">class</span><span class=\"w\"> </span></em><span class=\"sig-prename descclassname\"><span class=\"pre\">slidge.command.admin.</span></span><span class=\"sig-name descname\"><span class=\"pre\">ListUsers</span></span><span class=\"sig-paren\">(</span><em class=\"sig-param\"><span class=\"n\"><span class=\"pre\">xmpp</span></span></em><span class=\"sig-paren\">)</span><a class=\"headerlink\" href=\"#slidge.command.admin.ListUsers\" title=\"Link to this definition\">#</a></dt>\n+<dd><p>Abstract base class to implement gateway commands (chatbot and ad-hoc)</p>\n+<dl class=\"field-list simple\">\n+<dt class=\"field-odd\">Parameters<span class=\"colon\">:</span></dt>\n+<dd class=\"field-odd\"><p><strong>xmpp</strong> (<a class=\"reference internal\" href=\"../../core/gateway/index.html#slidge.core.gateway.BaseGateway\" title=\"slidge.core.gateway.BaseGateway\"><em>slidge.core.gateway.BaseGateway</em></a>) \u2013 </p>\n+</dd>\n+</dl>\n+<dl class=\"py attribute\">\n+<dt class=\"sig sig-object py\" id=\"slidge.command.admin.ListUsers.NODE\">\n+<span class=\"sig-name descname\"><span class=\"pre\">NODE</span></span><em class=\"property\"><span class=\"p\"><span class=\"pre\">:</span></span><span class=\"w\"> </span><a class=\"reference external\" href=\"/usr/share/doc/python3-doc/html/library/stdtypes.html#str\" title=\"(in Python v3.11)\"><span class=\"pre\">str</span></a></em><a class=\"headerlink\" href=\"#slidge.command.admin.ListUsers.NODE\" title=\"Link to this definition\">#</a></dt>\n+<dd><p>Name of the node used for ad-hoc commands</p>\n+</dd></dl>\n+\n+<dl class=\"py attribute\">\n+<dt class=\"sig sig-object py\" id=\"slidge.command.admin.ListUsers.CHAT_COMMAND\">\n+<span class=\"sig-name descname\"><span class=\"pre\">CHAT_COMMAND</span></span><em class=\"property\"><span class=\"p\"><span class=\"pre\">:</span></span><span class=\"w\"> </span><a class=\"reference external\" href=\"/usr/share/doc/python3-doc/html/library/stdtypes.html#str\" title=\"(in Python v3.11)\"><span class=\"pre\">str</span></a></em><a class=\"headerlink\" href=\"#slidge.command.admin.ListUsers.CHAT_COMMAND\" title=\"Link to this definition\">#</a></dt>\n+<dd><p>Text to send to the gateway to trigger the command via a message</p>\n+</dd></dl>\n+\n+<dl class=\"py method\">\n+<dt class=\"sig sig-object py\" id=\"slidge.command.admin.ListUsers.run\">\n+<em class=\"property\"><span class=\"pre\">async</span><span class=\"w\"> </span></em><span class=\"sig-name descname\"><span class=\"pre\">run</span></span><span class=\"sig-paren\">(</span><em class=\"sig-param\"><span class=\"n\"><span class=\"pre\">_session</span></span></em>, <em class=\"sig-param\"><span class=\"n\"><span class=\"pre\">_ifrom</span></span></em>, <em class=\"sig-param\"><span class=\"o\"><span class=\"pre\">*</span></span><span class=\"n\"><span class=\"pre\">_</span></span></em><span class=\"sig-paren\">)</span><a class=\"headerlink\" href=\"#slidge.command.admin.ListUsers.run\" title=\"Link to this definition\">#</a></dt>\n+<dd><p>Entry point of the command</p>\n+<dl class=\"field-list simple\">\n+<dt class=\"field-odd\">Parameters<span class=\"colon\">:</span></dt>\n+<dd class=\"field-odd\"><ul class=\"simple\">\n+<li><p><strong>session</strong> \u2013 If triggered by a registered user, its slidge Session</p></li>\n+<li><p><strong>ifrom</strong> \u2013 JID of the command-triggering entity</p></li>\n+<li><p><strong>args</strong> \u2013 When triggered via chatbot type message, additional words\n+after the CHAT_COMMAND string was passed</p></li>\n+</ul>\n+</dd>\n+<dt class=\"field-even\">Returns<span class=\"colon\">:</span></dt>\n+<dd class=\"field-even\"><p>Either a TableResult, a Form, a Confirmation, a text, or None</p>\n+</dd>\n+</dl>\n+</dd></dl>\n+\n+<dl class=\"py method\">\n+<dt class=\"sig sig-object py\" id=\"slidge.command.admin.ListUsers.raise_if_not_authorized\">\n+<span class=\"sig-name descname\"><span class=\"pre\">raise_if_not_authorized</span></span><span class=\"sig-paren\">(</span><em class=\"sig-param\"><span class=\"n\"><span class=\"pre\">jid</span></span></em><span class=\"sig-paren\">)</span><a class=\"headerlink\" href=\"#slidge.command.admin.ListUsers.raise_if_not_authorized\" title=\"Link to this definition\">#</a></dt>\n+<dd><p>Raise an appropriate error is jid is not authorized to use the command</p>\n+<dl class=\"field-list simple\">\n+<dt class=\"field-odd\">Parameters<span class=\"colon\">:</span></dt>\n+<dd class=\"field-odd\"><p><strong>jid</strong> (<em>slixmpp.JID</em>) \u2013 jid of the entity trying to access the command</p>\n+</dd>\n+<dt class=\"field-even\">Return type<span class=\"colon\">:</span></dt>\n+<dd class=\"field-even\"><p>Optional[<a class=\"reference internal\" href=\"../../core/session/index.html#slidge.core.session.BaseSession\" title=\"slidge.core.session.BaseSession\">BaseSession</a>[Any, Any]]</p>\n+</dd>\n+</dl>\n+<p>:return:session of JID if it exists</p>\n+</dd></dl>\n+\n+</dd></dl>\n+\n+<dl class=\"py class\">\n+<dt class=\"sig sig-object py\" id=\"slidge.command.admin.SlidgeInfo\">\n+<em class=\"property\"><span class=\"pre\">class</span><span class=\"w\"> </span></em><span class=\"sig-prename descclassname\"><span class=\"pre\">slidge.command.admin.</span></span><span class=\"sig-name descname\"><span class=\"pre\">SlidgeInfo</span></span><span class=\"sig-paren\">(</span><em class=\"sig-param\"><span class=\"n\"><span class=\"pre\">xmpp</span></span></em><span class=\"sig-paren\">)</span><a class=\"headerlink\" href=\"#slidge.command.admin.SlidgeInfo\" title=\"Link to this definition\">#</a></dt>\n+<dd><p>Abstract base class to implement gateway commands (chatbot and ad-hoc)</p>\n+<dl class=\"field-list simple\">\n+<dt class=\"field-odd\">Parameters<span class=\"colon\">:</span></dt>\n+<dd class=\"field-odd\"><p><strong>xmpp</strong> (<a class=\"reference internal\" href=\"../../core/gateway/index.html#slidge.core.gateway.BaseGateway\" title=\"slidge.core.gateway.BaseGateway\"><em>slidge.core.gateway.BaseGateway</em></a>) \u2013 </p>\n+</dd>\n+</dl>\n+<dl class=\"py attribute\">\n+<dt class=\"sig sig-object py\" id=\"slidge.command.admin.SlidgeInfo.NODE\">\n+<span class=\"sig-name descname\"><span class=\"pre\">NODE</span></span><em class=\"property\"><span class=\"p\"><span class=\"pre\">:</span></span><span class=\"w\"> </span><a class=\"reference external\" href=\"/usr/share/doc/python3-doc/html/library/stdtypes.html#str\" title=\"(in Python v3.11)\"><span class=\"pre\">str</span></a></em><a class=\"headerlink\" href=\"#slidge.command.admin.SlidgeInfo.NODE\" title=\"Link to this definition\">#</a></dt>\n+<dd><p>Name of the node used for ad-hoc commands</p>\n+</dd></dl>\n+\n+<dl class=\"py attribute\">\n+<dt class=\"sig sig-object py\" id=\"slidge.command.admin.SlidgeInfo.CHAT_COMMAND\">\n+<span class=\"sig-name descname\"><span class=\"pre\">CHAT_COMMAND</span></span><em class=\"property\"><span class=\"p\"><span class=\"pre\">:</span></span><span class=\"w\"> </span><a class=\"reference external\" href=\"/usr/share/doc/python3-doc/html/library/stdtypes.html#str\" title=\"(in Python v3.11)\"><span class=\"pre\">str</span></a></em><a class=\"headerlink\" href=\"#slidge.command.admin.SlidgeInfo.CHAT_COMMAND\" title=\"Link to this definition\">#</a></dt>\n+<dd><p>Text to send to the gateway to trigger the command via a message</p>\n+</dd></dl>\n+\n+<dl class=\"py method\">\n+<dt class=\"sig sig-object py\" id=\"slidge.command.admin.SlidgeInfo.run\">\n+<em class=\"property\"><span class=\"pre\">async</span><span class=\"w\"> </span></em><span class=\"sig-name descname\"><span class=\"pre\">run</span></span><span class=\"sig-paren\">(</span><em class=\"sig-param\"><span class=\"n\"><span class=\"pre\">_session</span></span></em>, <em class=\"sig-param\"><span class=\"n\"><span class=\"pre\">_ifrom</span></span></em>, <em class=\"sig-param\"><span class=\"o\"><span class=\"pre\">*</span></span><span class=\"n\"><span class=\"pre\">_</span></span></em><span class=\"sig-paren\">)</span><a class=\"headerlink\" href=\"#slidge.command.admin.SlidgeInfo.run\" title=\"Link to this definition\">#</a></dt>\n+<dd><p>Entry point of the command</p>\n+<dl class=\"field-list simple\">\n+<dt class=\"field-odd\">Parameters<span class=\"colon\">:</span></dt>\n+<dd class=\"field-odd\"><ul class=\"simple\">\n+<li><p><strong>session</strong> \u2013 If triggered by a registered user, its slidge Session</p></li>\n+<li><p><strong>ifrom</strong> \u2013 JID of the command-triggering entity</p></li>\n+<li><p><strong>args</strong> \u2013 When triggered via chatbot type message, additional words\n+after the CHAT_COMMAND string was passed</p></li>\n+</ul>\n+</dd>\n+<dt class=\"field-even\">Returns<span class=\"colon\">:</span></dt>\n+<dd class=\"field-even\"><p>Either a TableResult, a Form, a Confirmation, a text, or None</p>\n+</dd>\n+</dl>\n+</dd></dl>\n+\n+<dl class=\"py method\">\n+<dt class=\"sig sig-object py\" id=\"slidge.command.admin.SlidgeInfo.raise_if_not_authorized\">\n+<span class=\"sig-name descname\"><span class=\"pre\">raise_if_not_authorized</span></span><span class=\"sig-paren\">(</span><em class=\"sig-param\"><span class=\"n\"><span class=\"pre\">jid</span></span></em><span class=\"sig-paren\">)</span><a class=\"headerlink\" href=\"#slidge.command.admin.SlidgeInfo.raise_if_not_authorized\" title=\"Link to this definition\">#</a></dt>\n+<dd><p>Raise an appropriate error is jid is not authorized to use the command</p>\n+<dl class=\"field-list simple\">\n+<dt class=\"field-odd\">Parameters<span class=\"colon\">:</span></dt>\n+<dd class=\"field-odd\"><p><strong>jid</strong> (<em>slixmpp.JID</em>) \u2013 jid of the entity trying to access the command</p>\n+</dd>\n+<dt class=\"field-even\">Return type<span class=\"colon\">:</span></dt>\n+<dd class=\"field-even\"><p>Optional[<a class=\"reference internal\" href=\"../../core/session/index.html#slidge.core.session.BaseSession\" title=\"slidge.core.session.BaseSession\">BaseSession</a>[Any, Any]]</p>\n+</dd>\n+</dl>\n+<p>:return:session of JID if it exists</p>\n+</dd></dl>\n+\n+</dd></dl>\n+\n+<dl class=\"py class\">\n+<dt class=\"sig sig-object py\" id=\"slidge.command.admin.DeleteUser\">\n+<em class=\"property\"><span class=\"pre\">class</span><span class=\"w\"> </span></em><span class=\"sig-prename descclassname\"><span class=\"pre\">slidge.command.admin.</span></span><span class=\"sig-name descname\"><span class=\"pre\">DeleteUser</span></span><span class=\"sig-paren\">(</span><em class=\"sig-param\"><span class=\"n\"><span class=\"pre\">xmpp</span></span></em><span class=\"sig-paren\">)</span><a class=\"headerlink\" href=\"#slidge.command.admin.DeleteUser\" title=\"Link to this definition\">#</a></dt>\n+<dd><p>Abstract base class to implement gateway commands (chatbot and ad-hoc)</p>\n+<dl class=\"field-list simple\">\n+<dt class=\"field-odd\">Parameters<span class=\"colon\">:</span></dt>\n+<dd class=\"field-odd\"><p><strong>xmpp</strong> (<a class=\"reference internal\" href=\"../../core/gateway/index.html#slidge.core.gateway.BaseGateway\" title=\"slidge.core.gateway.BaseGateway\"><em>slidge.core.gateway.BaseGateway</em></a>) \u2013 </p>\n+</dd>\n+</dl>\n+<dl class=\"py attribute\">\n+<dt class=\"sig sig-object py\" id=\"slidge.command.admin.DeleteUser.NODE\">\n+<span class=\"sig-name descname\"><span class=\"pre\">NODE</span></span><em class=\"property\"><span class=\"p\"><span class=\"pre\">:</span></span><span class=\"w\"> </span><a class=\"reference external\" href=\"/usr/share/doc/python3-doc/html/library/stdtypes.html#str\" title=\"(in Python v3.11)\"><span class=\"pre\">str</span></a></em><a class=\"headerlink\" href=\"#slidge.command.admin.DeleteUser.NODE\" title=\"Link to this definition\">#</a></dt>\n+<dd><p>Name of the node used for ad-hoc commands</p>\n+</dd></dl>\n+\n+<dl class=\"py attribute\">\n+<dt class=\"sig sig-object py\" id=\"slidge.command.admin.DeleteUser.CHAT_COMMAND\">\n+<span class=\"sig-name descname\"><span class=\"pre\">CHAT_COMMAND</span></span><em class=\"property\"><span class=\"p\"><span class=\"pre\">:</span></span><span class=\"w\"> </span><a class=\"reference external\" href=\"/usr/share/doc/python3-doc/html/library/stdtypes.html#str\" title=\"(in Python v3.11)\"><span class=\"pre\">str</span></a></em><a class=\"headerlink\" href=\"#slidge.command.admin.DeleteUser.CHAT_COMMAND\" title=\"Link to this definition\">#</a></dt>\n+<dd><p>Text to send to the gateway to trigger the command via a message</p>\n+</dd></dl>\n+\n+<dl class=\"py method\">\n+<dt class=\"sig sig-object py\" id=\"slidge.command.admin.DeleteUser.run\">\n+<em class=\"property\"><span class=\"pre\">async</span><span class=\"w\"> </span></em><span class=\"sig-name descname\"><span class=\"pre\">run</span></span><span class=\"sig-paren\">(</span><em class=\"sig-param\"><span class=\"n\"><span class=\"pre\">_session</span></span></em>, <em class=\"sig-param\"><span class=\"n\"><span class=\"pre\">_ifrom</span></span></em>, <em class=\"sig-param\"><span class=\"o\"><span class=\"pre\">*</span></span><span class=\"n\"><span class=\"pre\">_</span></span></em><span class=\"sig-paren\">)</span><a class=\"headerlink\" href=\"#slidge.command.admin.DeleteUser.run\" title=\"Link to this definition\">#</a></dt>\n+<dd><p>Entry point of the command</p>\n+<dl class=\"field-list simple\">\n+<dt class=\"field-odd\">Parameters<span class=\"colon\">:</span></dt>\n+<dd class=\"field-odd\"><ul class=\"simple\">\n+<li><p><strong>session</strong> \u2013 If triggered by a registered user, its slidge Session</p></li>\n+<li><p><strong>ifrom</strong> \u2013 JID of the command-triggering entity</p></li>\n+<li><p><strong>args</strong> \u2013 When triggered via chatbot type message, additional words\n+after the CHAT_COMMAND string was passed</p></li>\n+</ul>\n+</dd>\n+<dt class=\"field-even\">Returns<span class=\"colon\">:</span></dt>\n+<dd class=\"field-even\"><p>Either a TableResult, a Form, a Confirmation, a text, or None</p>\n+</dd>\n+</dl>\n+</dd></dl>\n+\n+<dl class=\"py method\">\n+<dt class=\"sig sig-object py\" id=\"slidge.command.admin.DeleteUser.raise_if_not_authorized\">\n+<span class=\"sig-name descname\"><span class=\"pre\">raise_if_not_authorized</span></span><span class=\"sig-paren\">(</span><em class=\"sig-param\"><span class=\"n\"><span class=\"pre\">jid</span></span></em><span class=\"sig-paren\">)</span><a class=\"headerlink\" href=\"#slidge.command.admin.DeleteUser.raise_if_not_authorized\" title=\"Link to this definition\">#</a></dt>\n+<dd><p>Raise an appropriate error is jid is not authorized to use the command</p>\n+<dl class=\"field-list simple\">\n+<dt class=\"field-odd\">Parameters<span class=\"colon\">:</span></dt>\n+<dd class=\"field-odd\"><p><strong>jid</strong> (<em>slixmpp.JID</em>) \u2013 jid of the entity trying to access the command</p>\n+</dd>\n+<dt class=\"field-even\">Return type<span class=\"colon\">:</span></dt>\n+<dd class=\"field-even\"><p>Optional[<a class=\"reference internal\" href=\"../../core/session/index.html#slidge.core.session.BaseSession\" title=\"slidge.core.session.BaseSession\">BaseSession</a>[Any, Any]]</p>\n+</dd>\n+</dl>\n+<p>:return:session of JID if it exists</p>\n+</dd></dl>\n+\n+</dd></dl>\n+\n+<dl class=\"py class\">\n+<dt class=\"sig sig-object py\" id=\"slidge.command.admin.ChangeLoglevel\">\n+<em class=\"property\"><span class=\"pre\">class</span><span class=\"w\"> </span></em><span class=\"sig-prename descclassname\"><span class=\"pre\">slidge.command.admin.</span></span><span class=\"sig-name descname\"><span class=\"pre\">ChangeLoglevel</span></span><span class=\"sig-paren\">(</span><em class=\"sig-param\"><span class=\"n\"><span class=\"pre\">xmpp</span></span></em><span class=\"sig-paren\">)</span><a class=\"headerlink\" href=\"#slidge.command.admin.ChangeLoglevel\" title=\"Link to this definition\">#</a></dt>\n+<dd><p>Abstract base class to implement gateway commands (chatbot and ad-hoc)</p>\n+<dl class=\"field-list simple\">\n+<dt class=\"field-odd\">Parameters<span class=\"colon\">:</span></dt>\n+<dd class=\"field-odd\"><p><strong>xmpp</strong> (<a class=\"reference internal\" href=\"../../core/gateway/index.html#slidge.core.gateway.BaseGateway\" title=\"slidge.core.gateway.BaseGateway\"><em>slidge.core.gateway.BaseGateway</em></a>) \u2013 </p>\n+</dd>\n+</dl>\n+<dl class=\"py attribute\">\n+<dt class=\"sig sig-object py\" id=\"slidge.command.admin.ChangeLoglevel.NODE\">\n+<span class=\"sig-name descname\"><span class=\"pre\">NODE</span></span><em class=\"property\"><span class=\"p\"><span class=\"pre\">:</span></span><span class=\"w\"> </span><a class=\"reference external\" href=\"/usr/share/doc/python3-doc/html/library/stdtypes.html#str\" title=\"(in Python v3.11)\"><span class=\"pre\">str</span></a></em><a class=\"headerlink\" href=\"#slidge.command.admin.ChangeLoglevel.NODE\" title=\"Link to this definition\">#</a></dt>\n+<dd><p>Name of the node used for ad-hoc commands</p>\n+</dd></dl>\n+\n+<dl class=\"py attribute\">\n+<dt class=\"sig sig-object py\" id=\"slidge.command.admin.ChangeLoglevel.CHAT_COMMAND\">\n+<span class=\"sig-name descname\"><span class=\"pre\">CHAT_COMMAND</span></span><em class=\"property\"><span class=\"p\"><span class=\"pre\">:</span></span><span class=\"w\"> </span><a class=\"reference external\" href=\"/usr/share/doc/python3-doc/html/library/stdtypes.html#str\" title=\"(in Python v3.11)\"><span class=\"pre\">str</span></a></em><a class=\"headerlink\" href=\"#slidge.command.admin.ChangeLoglevel.CHAT_COMMAND\" title=\"Link to this definition\">#</a></dt>\n+<dd><p>Text to send to the gateway to trigger the command via a message</p>\n+</dd></dl>\n+\n+<dl class=\"py method\">\n+<dt class=\"sig sig-object py\" id=\"slidge.command.admin.ChangeLoglevel.run\">\n+<em class=\"property\"><span class=\"pre\">async</span><span class=\"w\"> </span></em><span class=\"sig-name descname\"><span class=\"pre\">run</span></span><span class=\"sig-paren\">(</span><em class=\"sig-param\"><span class=\"n\"><span class=\"pre\">_session</span></span></em>, <em class=\"sig-param\"><span class=\"n\"><span class=\"pre\">_ifrom</span></span></em>, <em class=\"sig-param\"><span class=\"o\"><span class=\"pre\">*</span></span><span class=\"n\"><span class=\"pre\">_</span></span></em><span class=\"sig-paren\">)</span><a class=\"headerlink\" href=\"#slidge.command.admin.ChangeLoglevel.run\" title=\"Link to this definition\">#</a></dt>\n+<dd><p>Entry point of the command</p>\n+<dl class=\"field-list simple\">\n+<dt class=\"field-odd\">Parameters<span class=\"colon\">:</span></dt>\n+<dd class=\"field-odd\"><ul class=\"simple\">\n+<li><p><strong>session</strong> \u2013 If triggered by a registered user, its slidge Session</p></li>\n+<li><p><strong>ifrom</strong> \u2013 JID of the command-triggering entity</p></li>\n+<li><p><strong>args</strong> \u2013 When triggered via chatbot type message, additional words\n+after the CHAT_COMMAND string was passed</p></li>\n+</ul>\n+</dd>\n+<dt class=\"field-even\">Returns<span class=\"colon\">:</span></dt>\n+<dd class=\"field-even\"><p>Either a TableResult, a Form, a Confirmation, a text, or None</p>\n+</dd>\n+</dl>\n+</dd></dl>\n+\n+<dl class=\"py method\">\n+<dt class=\"sig sig-object py\" id=\"slidge.command.admin.ChangeLoglevel.raise_if_not_authorized\">\n+<span class=\"sig-name descname\"><span class=\"pre\">raise_if_not_authorized</span></span><span class=\"sig-paren\">(</span><em class=\"sig-param\"><span class=\"n\"><span class=\"pre\">jid</span></span></em><span class=\"sig-paren\">)</span><a class=\"headerlink\" href=\"#slidge.command.admin.ChangeLoglevel.raise_if_not_authorized\" title=\"Link to this definition\">#</a></dt>\n+<dd><p>Raise an appropriate error is jid is not authorized to use the command</p>\n+<dl class=\"field-list simple\">\n+<dt class=\"field-odd\">Parameters<span class=\"colon\">:</span></dt>\n+<dd class=\"field-odd\"><p><strong>jid</strong> (<em>slixmpp.JID</em>) \u2013 jid of the entity trying to access the command</p>\n+</dd>\n+<dt class=\"field-even\">Return type<span class=\"colon\">:</span></dt>\n+<dd class=\"field-even\"><p>Optional[<a class=\"reference internal\" href=\"../../core/session/index.html#slidge.core.session.BaseSession\" title=\"slidge.core.session.BaseSession\">BaseSession</a>[Any, Any]]</p>\n+</dd>\n+</dl>\n+<p>:return:session of JID if it exists</p>\n+</dd></dl>\n+\n+</dd></dl>\n+\n+<dl class=\"py class\">\n+<dt class=\"sig sig-object py\" id=\"slidge.command.admin.Exec\">\n+<em class=\"property\"><span class=\"pre\">class</span><span class=\"w\"> </span></em><span class=\"sig-prename descclassname\"><span class=\"pre\">slidge.command.admin.</span></span><span class=\"sig-name descname\"><span class=\"pre\">Exec</span></span><span class=\"sig-paren\">(</span><em class=\"sig-param\"><span class=\"n\"><span class=\"pre\">xmpp</span></span></em><span class=\"sig-paren\">)</span><a class=\"headerlink\" href=\"#slidge.command.admin.Exec\" title=\"Link to this definition\">#</a></dt>\n+<dd><p>Abstract base class to implement gateway commands (chatbot and ad-hoc)</p>\n+<dl class=\"py attribute\">\n+<dt class=\"sig sig-object py\" id=\"slidge.command.admin.Exec.NAME\">\n+<span class=\"sig-name descname\"><span class=\"pre\">NAME</span></span><em class=\"property\"><span class=\"p\"><span class=\"pre\">:</span></span><span class=\"w\"> </span><a class=\"reference external\" href=\"/usr/share/doc/python3-doc/html/library/stdtypes.html#str\" title=\"(in Python v3.11)\"><span class=\"pre\">str</span></a></em><a class=\"headerlink\" href=\"#slidge.command.admin.Exec.NAME\" title=\"Link to this definition\">#</a></dt>\n+<dd><p>Friendly name of the command, eg: \u201cdo something with stuff\u201d</p>\n+</dd></dl>\n+\n+<dl class=\"py attribute\">\n+<dt class=\"sig sig-object py\" id=\"slidge.command.admin.Exec.HELP\">\n+<span class=\"sig-name descname\"><span class=\"pre\">HELP</span></span><em class=\"property\"><span class=\"p\"><span class=\"pre\">:</span></span><span class=\"w\"> </span><a class=\"reference external\" href=\"/usr/share/doc/python3-doc/html/library/stdtypes.html#str\" title=\"(in Python v3.11)\"><span class=\"pre\">str</span></a></em><a class=\"headerlink\" href=\"#slidge.command.admin.Exec.HELP\" title=\"Link to this definition\">#</a></dt>\n+<dd><p>Long description of what the command does</p>\n+</dd></dl>\n+\n+<dl class=\"py method\">\n+<dt class=\"sig sig-object py\" id=\"slidge.command.admin.Exec.run\">\n+<em class=\"property\"><span class=\"pre\">async</span><span class=\"w\"> </span></em><span class=\"sig-name descname\"><span class=\"pre\">run</span></span><span class=\"sig-paren\">(</span><em class=\"sig-param\"><span class=\"n\"><span class=\"pre\">session</span></span></em>, <em class=\"sig-param\"><span class=\"n\"><span class=\"pre\">ifrom</span></span></em>, <em class=\"sig-param\"><span class=\"o\"><span class=\"pre\">*</span></span><span class=\"n\"><span class=\"pre\">args</span></span></em><span class=\"sig-paren\">)</span><a class=\"headerlink\" href=\"#slidge.command.admin.Exec.run\" title=\"Link to this definition\">#</a></dt>\n+<dd><p>Entry point of the command</p>\n+<dl class=\"field-list simple\">\n+<dt class=\"field-odd\">Parameters<span class=\"colon\">:</span></dt>\n+<dd class=\"field-odd\"><ul class=\"simple\">\n+<li><p><strong>session</strong> \u2013 If triggered by a registered user, its slidge Session</p></li>\n+<li><p><strong>ifrom</strong> (<em>slixmpp.JID</em>) \u2013 JID of the command-triggering entity</p></li>\n+<li><p><strong>args</strong> \u2013 When triggered via chatbot type message, additional words\n+after the CHAT_COMMAND string was passed</p></li>\n+</ul>\n+</dd>\n+<dt class=\"field-even\">Returns<span class=\"colon\">:</span></dt>\n+<dd class=\"field-even\"><p>Either a TableResult, a Form, a Confirmation, a text, or None</p>\n+</dd>\n+</dl>\n+</dd></dl>\n+\n+<dl class=\"py method\">\n+<dt class=\"sig sig-object py\" id=\"slidge.command.admin.Exec.raise_if_not_authorized\">\n+<span class=\"sig-name descname\"><span class=\"pre\">raise_if_not_authorized</span></span><span class=\"sig-paren\">(</span><em class=\"sig-param\"><span class=\"n\"><span class=\"pre\">jid</span></span></em><span class=\"sig-paren\">)</span><a class=\"headerlink\" href=\"#slidge.command.admin.Exec.raise_if_not_authorized\" title=\"Link to this definition\">#</a></dt>\n+<dd><p>Raise an appropriate error is jid is not authorized to use the command</p>\n+<dl class=\"field-list simple\">\n+<dt class=\"field-odd\">Parameters<span class=\"colon\">:</span></dt>\n+<dd class=\"field-odd\"><p><strong>jid</strong> (<em>slixmpp.JID</em>) \u2013 jid of the entity trying to access the command</p>\n+</dd>\n+<dt class=\"field-even\">Return type<span class=\"colon\">:</span></dt>\n+<dd class=\"field-even\"><p>Optional[<a class=\"reference internal\" href=\"../../core/session/index.html#slidge.core.session.BaseSession\" title=\"slidge.core.session.BaseSession\">BaseSession</a>[Any, Any]]</p>\n+</dd>\n+</dl>\n+<p>:return:session of JID if it exists</p>\n+</dd></dl>\n+\n+</dd></dl>\n+\n+</section>\n+</section>\n </section>\n \n </article>\n </div>\n <footer>\n \n <div class=\"related-pages\">\n@@ -255,16 +637,84 @@\n <div class=\"right-details\">\n \n </div>\n </div>\n \n </footer>\n </div>\n- <aside class=\"toc-drawer no-toc\">\n+ <aside class=\"toc-drawer\">\n+ \n \n+ <div class=\"toc-sticky toc-scroll\">\n+ <div class=\"toc-title-container\">\n+ <span class=\"toc-title\">\n+ On this page\n+ </span>\n+ </div>\n+ <div class=\"toc-tree-container\">\n+ <div class=\"toc-tree\">\n+ <ul>\n+<li><a class=\"reference internal\" href=\"#\"><code class=\"xref py py-mod docutils literal notranslate\"><span class=\"pre\">slidge.command.admin</span></code></a><ul>\n+<li><a class=\"reference internal\" href=\"#module-contents\">Module Contents</a><ul>\n+<li><a class=\"reference internal\" href=\"#classes\">Classes</a><ul>\n+<li><a class=\"reference internal\" href=\"#slidge.command.admin.AdminCommand\"><code class=\"docutils literal notranslate\"><span class=\"pre\">AdminCommand</span></code></a><ul>\n+<li><a class=\"reference internal\" href=\"#slidge.command.admin.AdminCommand.NAME\"><code class=\"docutils literal notranslate\"><span class=\"pre\">AdminCommand.NAME</span></code></a></li>\n+<li><a class=\"reference internal\" href=\"#slidge.command.admin.AdminCommand.HELP\"><code class=\"docutils literal notranslate\"><span class=\"pre\">AdminCommand.HELP</span></code></a></li>\n+<li><a class=\"reference internal\" href=\"#slidge.command.admin.AdminCommand.NODE\"><code class=\"docutils literal notranslate\"><span class=\"pre\">AdminCommand.NODE</span></code></a></li>\n+<li><a class=\"reference internal\" href=\"#slidge.command.admin.AdminCommand.CHAT_COMMAND\"><code class=\"docutils literal notranslate\"><span class=\"pre\">AdminCommand.CHAT_COMMAND</span></code></a></li>\n+<li><a class=\"reference internal\" href=\"#slidge.command.admin.AdminCommand.run\"><code class=\"docutils literal notranslate\"><span class=\"pre\">AdminCommand.run()</span></code></a></li>\n+<li><a class=\"reference internal\" href=\"#slidge.command.admin.AdminCommand.raise_if_not_authorized\"><code class=\"docutils literal notranslate\"><span class=\"pre\">AdminCommand.raise_if_not_authorized()</span></code></a></li>\n+</ul>\n+</li>\n+<li><a class=\"reference internal\" href=\"#slidge.command.admin.ListUsers\"><code class=\"docutils literal notranslate\"><span class=\"pre\">ListUsers</span></code></a><ul>\n+<li><a class=\"reference internal\" href=\"#slidge.command.admin.ListUsers.NODE\"><code class=\"docutils literal notranslate\"><span class=\"pre\">ListUsers.NODE</span></code></a></li>\n+<li><a class=\"reference internal\" href=\"#slidge.command.admin.ListUsers.CHAT_COMMAND\"><code class=\"docutils literal notranslate\"><span class=\"pre\">ListUsers.CHAT_COMMAND</span></code></a></li>\n+<li><a class=\"reference internal\" href=\"#slidge.command.admin.ListUsers.run\"><code class=\"docutils literal notranslate\"><span class=\"pre\">ListUsers.run()</span></code></a></li>\n+<li><a class=\"reference internal\" href=\"#slidge.command.admin.ListUsers.raise_if_not_authorized\"><code class=\"docutils literal notranslate\"><span class=\"pre\">ListUsers.raise_if_not_authorized()</span></code></a></li>\n+</ul>\n+</li>\n+<li><a class=\"reference internal\" href=\"#slidge.command.admin.SlidgeInfo\"><code class=\"docutils literal notranslate\"><span class=\"pre\">SlidgeInfo</span></code></a><ul>\n+<li><a class=\"reference internal\" href=\"#slidge.command.admin.SlidgeInfo.NODE\"><code class=\"docutils literal notranslate\"><span class=\"pre\">SlidgeInfo.NODE</span></code></a></li>\n+<li><a class=\"reference internal\" href=\"#slidge.command.admin.SlidgeInfo.CHAT_COMMAND\"><code class=\"docutils literal notranslate\"><span class=\"pre\">SlidgeInfo.CHAT_COMMAND</span></code></a></li>\n+<li><a class=\"reference internal\" href=\"#slidge.command.admin.SlidgeInfo.run\"><code class=\"docutils literal notranslate\"><span class=\"pre\">SlidgeInfo.run()</span></code></a></li>\n+<li><a class=\"reference internal\" href=\"#slidge.command.admin.SlidgeInfo.raise_if_not_authorized\"><code class=\"docutils literal notranslate\"><span class=\"pre\">SlidgeInfo.raise_if_not_authorized()</span></code></a></li>\n+</ul>\n+</li>\n+<li><a class=\"reference internal\" href=\"#slidge.command.admin.DeleteUser\"><code class=\"docutils literal notranslate\"><span class=\"pre\">DeleteUser</span></code></a><ul>\n+<li><a class=\"reference internal\" href=\"#slidge.command.admin.DeleteUser.NODE\"><code class=\"docutils literal notranslate\"><span class=\"pre\">DeleteUser.NODE</span></code></a></li>\n+<li><a class=\"reference internal\" href=\"#slidge.command.admin.DeleteUser.CHAT_COMMAND\"><code class=\"docutils literal notranslate\"><span class=\"pre\">DeleteUser.CHAT_COMMAND</span></code></a></li>\n+<li><a class=\"reference internal\" href=\"#slidge.command.admin.DeleteUser.run\"><code class=\"docutils literal notranslate\"><span class=\"pre\">DeleteUser.run()</span></code></a></li>\n+<li><a class=\"reference internal\" href=\"#slidge.command.admin.DeleteUser.raise_if_not_authorized\"><code class=\"docutils literal notranslate\"><span class=\"pre\">DeleteUser.raise_if_not_authorized()</span></code></a></li>\n+</ul>\n+</li>\n+<li><a class=\"reference internal\" href=\"#slidge.command.admin.ChangeLoglevel\"><code class=\"docutils literal notranslate\"><span class=\"pre\">ChangeLoglevel</span></code></a><ul>\n+<li><a class=\"reference internal\" href=\"#slidge.command.admin.ChangeLoglevel.NODE\"><code class=\"docutils literal notranslate\"><span class=\"pre\">ChangeLoglevel.NODE</span></code></a></li>\n+<li><a class=\"reference internal\" href=\"#slidge.command.admin.ChangeLoglevel.CHAT_COMMAND\"><code class=\"docutils literal notranslate\"><span class=\"pre\">ChangeLoglevel.CHAT_COMMAND</span></code></a></li>\n+<li><a class=\"reference internal\" href=\"#slidge.command.admin.ChangeLoglevel.run\"><code class=\"docutils literal notranslate\"><span class=\"pre\">ChangeLoglevel.run()</span></code></a></li>\n+<li><a class=\"reference internal\" href=\"#slidge.command.admin.ChangeLoglevel.raise_if_not_authorized\"><code class=\"docutils literal notranslate\"><span class=\"pre\">ChangeLoglevel.raise_if_not_authorized()</span></code></a></li>\n+</ul>\n+</li>\n+<li><a class=\"reference internal\" href=\"#slidge.command.admin.Exec\"><code class=\"docutils literal notranslate\"><span class=\"pre\">Exec</span></code></a><ul>\n+<li><a class=\"reference internal\" href=\"#slidge.command.admin.Exec.NAME\"><code class=\"docutils literal notranslate\"><span class=\"pre\">Exec.NAME</span></code></a></li>\n+<li><a class=\"reference internal\" href=\"#slidge.command.admin.Exec.HELP\"><code class=\"docutils literal notranslate\"><span class=\"pre\">Exec.HELP</span></code></a></li>\n+<li><a class=\"reference internal\" href=\"#slidge.command.admin.Exec.run\"><code class=\"docutils literal notranslate\"><span class=\"pre\">Exec.run()</span></code></a></li>\n+<li><a class=\"reference internal\" href=\"#slidge.command.admin.Exec.raise_if_not_authorized\"><code class=\"docutils literal notranslate\"><span class=\"pre\">Exec.raise_if_not_authorized()</span></code></a></li>\n+</ul>\n+</li>\n+</ul>\n+</li>\n+</ul>\n+</li>\n+</ul>\n+</li>\n+</ul>\n+\n+ </div>\n+ </div>\n+ </div>\n \n \n </aside>\n </div>\n </div><script src=\"../../../../../_static/documentation_options.js?v=5929fcd5\"></script>\n <script src=\"../../../../../_static/doctools.js?v=888ff710\"></script>\n <script src=\"../../../../../_static/sphinx_highlight.js?v=dc90522c\"></script>\n", "details": [{"source1": "html2text {}", "source2": "html2text {}", "unified_diff": "@@ -62,11 +62,234 @@\n ___Back_to_top\n Toggle Light / Dark / Auto color theme\n \n Toggle table of contents sidebar\n \n \n ****** slidge.command.admin# ******\n+***** Module Contents# *****\n+**** Classes# ****\n+AdminCommand Abstract base class to implement gateway commands (chatbot and\n+ ad-hoc)\n+ListUsers Abstract base class to implement gateway commands (chatbot and\n+ ad-hoc)\n+SlidgeInfo Abstract base class to implement gateway commands (chatbot and\n+ ad-hoc)\n+DeleteUser Abstract base class to implement gateway commands (chatbot and\n+ ad-hoc)\n+ChangeLoglevel Abstract base class to implement gateway commands (chatbot and\n+ ad-hoc)\n+Exec Abstract base class to implement gateway commands (chatbot and\n+ ad-hoc)\n+ classslidge.command.admin.AdminCommand(xmpp)#\n+ Abstract base class to implement gateway commands (chatbot and ad-hoc)\n+ Parameters:\n+ xmpp (slidge.core.gateway.BaseGateway) \u00e2\u0080\u0093\n+ NAME: str#\n+ Friendly name of the command, eg: \u00e2\u0080\u009cdo something with stuff\u00e2\u0080\u009d\n+ HELP: str#\n+ Long description of what the command does\n+ NODE: str#\n+ Name of the node used for ad-hoc commands\n+ CHAT_COMMAND: str#\n+ Text to send to the gateway to trigger the command via a message\n+ asyncrun(session, ifrom, *args)#\n+ Entry point of the command\n+ Parameters:\n+ * session (Optional[BaseSession[Any,Any]]) \u00e2\u0080\u0093 If\n+ triggered by a registered user, its slidge Session\n+ * ifrom (slixmpp.JID) \u00e2\u0080\u0093 JID of the command-triggering\n+ entity\n+ * args (str) \u00e2\u0080\u0093 When triggered via chatbot type message,\n+ additional words after the CHAT_COMMAND string was\n+ passed\n+ Returns:\n+ Either a TableResult, a Form, a Confirmation, a text, or None\n+ Return type:\n+ CommandResponseType\n+ raise_if_not_authorized(jid)#\n+ Raise an appropriate error is jid is not authorized to use the\n+ command\n+ Parameters:\n+ jid (slixmpp.JID) \u00e2\u0080\u0093 jid of the entity trying to access the\n+ command\n+ Return type:\n+ Optional[BaseSession[Any, Any]]\n+ :return:session of JID if it exists\n+ classslidge.command.admin.ListUsers(xmpp)#\n+ Abstract base class to implement gateway commands (chatbot and ad-hoc)\n+ Parameters:\n+ xmpp (slidge.core.gateway.BaseGateway) \u00e2\u0080\u0093\n+ NODE: str#\n+ Name of the node used for ad-hoc commands\n+ CHAT_COMMAND: str#\n+ Text to send to the gateway to trigger the command via a message\n+ asyncrun(_session, _ifrom, *_)#\n+ Entry point of the command\n+ Parameters:\n+ * session \u00e2\u0080\u0093 If triggered by a registered user, its\n+ slidge Session\n+ * ifrom \u00e2\u0080\u0093 JID of the command-triggering entity\n+ * args \u00e2\u0080\u0093 When triggered via chatbot type message,\n+ additional words after the CHAT_COMMAND string was\n+ passed\n+ Returns:\n+ Either a TableResult, a Form, a Confirmation, a text, or None\n+ raise_if_not_authorized(jid)#\n+ Raise an appropriate error is jid is not authorized to use the\n+ command\n+ Parameters:\n+ jid (slixmpp.JID) \u00e2\u0080\u0093 jid of the entity trying to access the\n+ command\n+ Return type:\n+ Optional[BaseSession[Any, Any]]\n+ :return:session of JID if it exists\n+ classslidge.command.admin.SlidgeInfo(xmpp)#\n+ Abstract base class to implement gateway commands (chatbot and ad-hoc)\n+ Parameters:\n+ xmpp (slidge.core.gateway.BaseGateway) \u00e2\u0080\u0093\n+ NODE: str#\n+ Name of the node used for ad-hoc commands\n+ CHAT_COMMAND: str#\n+ Text to send to the gateway to trigger the command via a message\n+ asyncrun(_session, _ifrom, *_)#\n+ Entry point of the command\n+ Parameters:\n+ * session \u00e2\u0080\u0093 If triggered by a registered user, its\n+ slidge Session\n+ * ifrom \u00e2\u0080\u0093 JID of the command-triggering entity\n+ * args \u00e2\u0080\u0093 When triggered via chatbot type message,\n+ additional words after the CHAT_COMMAND string was\n+ passed\n+ Returns:\n+ Either a TableResult, a Form, a Confirmation, a text, or None\n+ raise_if_not_authorized(jid)#\n+ Raise an appropriate error is jid is not authorized to use the\n+ command\n+ Parameters:\n+ jid (slixmpp.JID) \u00e2\u0080\u0093 jid of the entity trying to access the\n+ command\n+ Return type:\n+ Optional[BaseSession[Any, Any]]\n+ :return:session of JID if it exists\n+ classslidge.command.admin.DeleteUser(xmpp)#\n+ Abstract base class to implement gateway commands (chatbot and ad-hoc)\n+ Parameters:\n+ xmpp (slidge.core.gateway.BaseGateway) \u00e2\u0080\u0093\n+ NODE: str#\n+ Name of the node used for ad-hoc commands\n+ CHAT_COMMAND: str#\n+ Text to send to the gateway to trigger the command via a message\n+ asyncrun(_session, _ifrom, *_)#\n+ Entry point of the command\n+ Parameters:\n+ * session \u00e2\u0080\u0093 If triggered by a registered user, its\n+ slidge Session\n+ * ifrom \u00e2\u0080\u0093 JID of the command-triggering entity\n+ * args \u00e2\u0080\u0093 When triggered via chatbot type message,\n+ additional words after the CHAT_COMMAND string was\n+ passed\n+ Returns:\n+ Either a TableResult, a Form, a Confirmation, a text, or None\n+ raise_if_not_authorized(jid)#\n+ Raise an appropriate error is jid is not authorized to use the\n+ command\n+ Parameters:\n+ jid (slixmpp.JID) \u00e2\u0080\u0093 jid of the entity trying to access the\n+ command\n+ Return type:\n+ Optional[BaseSession[Any, Any]]\n+ :return:session of JID if it exists\n+ classslidge.command.admin.ChangeLoglevel(xmpp)#\n+ Abstract base class to implement gateway commands (chatbot and ad-hoc)\n+ Parameters:\n+ xmpp (slidge.core.gateway.BaseGateway) \u00e2\u0080\u0093\n+ NODE: str#\n+ Name of the node used for ad-hoc commands\n+ CHAT_COMMAND: str#\n+ Text to send to the gateway to trigger the command via a message\n+ asyncrun(_session, _ifrom, *_)#\n+ Entry point of the command\n+ Parameters:\n+ * session \u00e2\u0080\u0093 If triggered by a registered user, its\n+ slidge Session\n+ * ifrom \u00e2\u0080\u0093 JID of the command-triggering entity\n+ * args \u00e2\u0080\u0093 When triggered via chatbot type message,\n+ additional words after the CHAT_COMMAND string was\n+ passed\n+ Returns:\n+ Either a TableResult, a Form, a Confirmation, a text, or None\n+ raise_if_not_authorized(jid)#\n+ Raise an appropriate error is jid is not authorized to use the\n+ command\n+ Parameters:\n+ jid (slixmpp.JID) \u00e2\u0080\u0093 jid of the entity trying to access the\n+ command\n+ Return type:\n+ Optional[BaseSession[Any, Any]]\n+ :return:session of JID if it exists\n+ classslidge.command.admin.Exec(xmpp)#\n+ Abstract base class to implement gateway commands (chatbot and ad-hoc)\n+ NAME: str#\n+ Friendly name of the command, eg: \u00e2\u0080\u009cdo something with stuff\u00e2\u0080\u009d\n+ HELP: str#\n+ Long description of what the command does\n+ asyncrun(session, ifrom, *args)#\n+ Entry point of the command\n+ Parameters:\n+ * session \u00e2\u0080\u0093 If triggered by a registered user, its\n+ slidge Session\n+ * ifrom (slixmpp.JID) \u00e2\u0080\u0093 JID of the command-triggering\n+ entity\n+ * args \u00e2\u0080\u0093 When triggered via chatbot type message,\n+ additional words after the CHAT_COMMAND string was\n+ passed\n+ Returns:\n+ Either a TableResult, a Form, a Confirmation, a text, or None\n+ raise_if_not_authorized(jid)#\n+ Raise an appropriate error is jid is not authorized to use the\n+ command\n+ Parameters:\n+ jid (slixmpp.JID) \u00e2\u0080\u0093 jid of the entity trying to access the\n+ command\n+ Return type:\n+ Optional[BaseSession[Any, Any]]\n+ :return:session of JID if it exists\n \n Copyright \u00a9 2024, Nicolas Cedilnik\n Made with Sphinx and @pradyunsg's Furo\n-\n+ On this page\n+ * slidge.command.admin\n+ o Module_Contents\n+ # Classes\n+ # AdminCommand\n+ # AdminCommand.NAME\n+ # AdminCommand.HELP\n+ # AdminCommand.NODE\n+ # AdminCommand.CHAT_COMMAND\n+ # AdminCommand.run()\n+ # AdminCommand.raise_if_not_authorized()\n+ # ListUsers\n+ # ListUsers.NODE\n+ # ListUsers.CHAT_COMMAND\n+ # ListUsers.run()\n+ # ListUsers.raise_if_not_authorized()\n+ # SlidgeInfo\n+ # SlidgeInfo.NODE\n+ # SlidgeInfo.CHAT_COMMAND\n+ # SlidgeInfo.run()\n+ # SlidgeInfo.raise_if_not_authorized()\n+ # DeleteUser\n+ # DeleteUser.NODE\n+ # DeleteUser.CHAT_COMMAND\n+ # DeleteUser.run()\n+ # DeleteUser.raise_if_not_authorized()\n+ # ChangeLoglevel\n+ # ChangeLoglevel.NODE\n+ # ChangeLoglevel.CHAT_COMMAND\n+ # ChangeLoglevel.run()\n+ # ChangeLoglevel.raise_if_not_authorized()\n+ # Exec\n+ # Exec.NAME\n+ # Exec.HELP\n+ # Exec.run()\n+ # Exec.raise_if_not_authorized()\n"}]}, {"source1": "./usr/share/doc/python-slidge-doc/html/dev/api/slidge/core/session/index.html", "source2": "./usr/share/doc/python-slidge-doc/html/dev/api/slidge/core/session/index.html", "unified_diff": "@@ -431,15 +431,15 @@\n <dt class=\"sig sig-object py\" id=\"slidge.core.session.BaseSession.on_displayed\">\n <em class=\"property\"><span class=\"pre\">abstract</span><span class=\"w\"> </span><span class=\"pre\">async</span><span class=\"w\"> </span></em><span class=\"sig-name descname\"><span class=\"pre\">on_displayed</span></span><span class=\"sig-paren\">(</span><em class=\"sig-param\"><span class=\"n\"><span class=\"pre\">chat</span></span></em>, <em class=\"sig-param\"><span class=\"n\"><span class=\"pre\">legacy_msg_id</span></span></em>, <em class=\"sig-param\"><span class=\"n\"><span class=\"pre\">thread</span></span><span class=\"o\"><span class=\"pre\">=</span></span><span class=\"default_value\"><span class=\"pre\">None</span></span></em><span class=\"sig-paren\">)</span><a class=\"headerlink\" href=\"#slidge.core.session.BaseSession.on_displayed\" title=\"Link to this definition\">#</a></dt>\n <dd><p>Triggered when the user reads a message in a legacy chat. (<a class=\"reference external\" href=\"https://xmpp.org/extensions/xep-0333.html\">XEP-0333</a>)</p>\n <p>This is only possible if a valid <code class=\"docutils literal notranslate\"><span class=\"pre\">legacy_msg_id</span></code> was passed when\n transmitting a message from a legacy chat to the user, eg in\n <a class=\"reference internal\" href=\"../../contact/index.html#slidge.contact.LegacyContact.send_text\" title=\"slidge.contact.LegacyContact.send_text\"><code class=\"xref py py-meth docutils literal notranslate\"><span class=\"pre\">slidge.contact.LegacyContact.send_text()</span></code></a>\n or\n-<a class=\"reference internal\" href=\"../../group/index.html#slidge.group.LegacyParticipant.send_text\" title=\"slidge.group.LegacyParticipant.send_text\"><code class=\"xref py py-meth docutils literal notranslate\"><span class=\"pre\">slidge.group.LegacyParticipant.send_text()</span></code></a>.</p>\n+<code class=\"xref py py-meth docutils literal notranslate\"><span class=\"pre\">slidge.group.LegacyParticipant.send_text()</span></code>.</p>\n <dl class=\"field-list simple\">\n <dt class=\"field-odd\">Parameters<span class=\"colon\">:</span></dt>\n <dd class=\"field-odd\"><ul class=\"simple\">\n <li><p><strong>chat</strong> (<em>slidge.util.types.RecipientType</em>) \u2013 See <a class=\"reference internal\" href=\"#slidge.core.session.BaseSession.on_text\" title=\"slidge.core.session.BaseSession.on_text\"><code class=\"xref py py-meth docutils literal notranslate\"><span class=\"pre\">BaseSession.on_text()</span></code></a></p></li>\n <li><p><strong>legacy_msg_id</strong> (<em>slidge.util.types.LegacyMessageType</em>) \u2013 Identifier of the message/</p></li>\n <li><p><strong>thread</strong> (<em>Optional</em><em>[</em><em>slidge.util.types.LegacyThreadType</em><em>]</em>) \u2013 </p></li>\n </ul>\n"}, {"source1": "./usr/share/doc/python-slidge-doc/html/dev/api/slidge/group/index.html", "source2": "./usr/share/doc/python-slidge-doc/html/dev/api/slidge/group/index.html", "unified_diff": "@@ -373,294 +373,14 @@\n \n <dl class=\"py method\">\n <dt class=\"sig sig-object py\" id=\"slidge.group.LegacyParticipant.ban\">\n <span class=\"sig-name descname\"><span class=\"pre\">ban</span></span><span class=\"sig-paren\">(</span><span class=\"sig-paren\">)</span><a class=\"headerlink\" href=\"#slidge.group.LegacyParticipant.ban\" title=\"Link to this definition\">#</a></dt>\n <dd><p>Call this when the participant is banned from the room</p>\n </dd></dl>\n \n-<dl class=\"py method\">\n-<dt class=\"sig sig-object py\" id=\"slidge.group.LegacyParticipant.online\">\n-<span class=\"sig-name descname\"><span class=\"pre\">online</span></span><span class=\"sig-paren\">(</span><em class=\"sig-param\"><span class=\"n\"><span class=\"pre\">status</span></span><span class=\"o\"><span class=\"pre\">=</span></span><span class=\"default_value\"><span class=\"pre\">None</span></span></em>, <em class=\"sig-param\"><span class=\"n\"><span class=\"pre\">last_seen</span></span><span class=\"o\"><span class=\"pre\">=</span></span><span class=\"default_value\"><span class=\"pre\">None</span></span></em><span class=\"sig-paren\">)</span><a class=\"headerlink\" href=\"#slidge.group.LegacyParticipant.online\" title=\"Link to this definition\">#</a></dt>\n-<dd><p>Send an \u201conline\u201d presence from this contact to the user.</p>\n-<dl class=\"field-list simple\">\n-<dt class=\"field-odd\">Parameters<span class=\"colon\">:</span></dt>\n-<dd class=\"field-odd\"><ul class=\"simple\">\n-<li><p><strong>status</strong> (<em>Optional</em><em>[</em><a class=\"reference external\" href=\"/usr/share/doc/python3-doc/html/library/stdtypes.html#str\" title=\"(in Python v3.11)\"><em>str</em></a><em>]</em>) \u2013 Arbitrary text, details of the status, eg: \u201cListening to Britney Spears\u201d</p></li>\n-<li><p><strong>last_seen</strong> (<em>Optional</em><em>[</em><a class=\"reference external\" href=\"/usr/share/doc/python3-doc/html/library/datetime.html#datetime.datetime\" title=\"(in Python v3.11)\"><em>datetime.datetime</em></a><em>]</em>) \u2013 For <a class=\"reference external\" href=\"https://xmpp.org/extensions/xep-0319.html\">XEP-0319</a></p></li>\n-</ul>\n-</dd>\n-</dl>\n-</dd></dl>\n-\n-<dl class=\"py method\">\n-<dt class=\"sig sig-object py\" id=\"slidge.group.LegacyParticipant.away\">\n-<span class=\"sig-name descname\"><span class=\"pre\">away</span></span><span class=\"sig-paren\">(</span><em class=\"sig-param\"><span class=\"n\"><span class=\"pre\">status</span></span><span class=\"o\"><span class=\"pre\">=</span></span><span class=\"default_value\"><span class=\"pre\">None</span></span></em>, <em class=\"sig-param\"><span class=\"n\"><span class=\"pre\">last_seen</span></span><span class=\"o\"><span class=\"pre\">=</span></span><span class=\"default_value\"><span class=\"pre\">None</span></span></em><span class=\"sig-paren\">)</span><a class=\"headerlink\" href=\"#slidge.group.LegacyParticipant.away\" title=\"Link to this definition\">#</a></dt>\n-<dd><p>Send an \u201caway\u201d presence from this contact to the user.</p>\n-<p>This is a global status, as opposed to <a class=\"reference internal\" href=\"../contact/contact/index.html#slidge.contact.contact.LegacyContact.inactive\" title=\"slidge.contact.contact.LegacyContact.inactive\"><code class=\"xref py py-meth docutils literal notranslate\"><span class=\"pre\">LegacyContact.inactive()</span></code></a>\n-which concerns a specific conversation, ie a specific \u201cchat window\u201d</p>\n-<dl class=\"field-list simple\">\n-<dt class=\"field-odd\">Parameters<span class=\"colon\">:</span></dt>\n-<dd class=\"field-odd\"><ul class=\"simple\">\n-<li><p><strong>status</strong> (<em>Optional</em><em>[</em><a class=\"reference external\" href=\"/usr/share/doc/python3-doc/html/library/stdtypes.html#str\" title=\"(in Python v3.11)\"><em>str</em></a><em>]</em>) \u2013 Arbitrary text, details of the status, eg: \u201cGone to fight capitalism\u201d</p></li>\n-<li><p><strong>last_seen</strong> (<em>Optional</em><em>[</em><a class=\"reference external\" href=\"/usr/share/doc/python3-doc/html/library/datetime.html#datetime.datetime\" title=\"(in Python v3.11)\"><em>datetime.datetime</em></a><em>]</em>) \u2013 For <a class=\"reference external\" href=\"https://xmpp.org/extensions/xep-0319.html\">XEP-0319</a></p></li>\n-</ul>\n-</dd>\n-</dl>\n-</dd></dl>\n-\n-<dl class=\"py method\">\n-<dt class=\"sig sig-object py\" id=\"slidge.group.LegacyParticipant.extended_away\">\n-<span class=\"sig-name descname\"><span class=\"pre\">extended_away</span></span><span class=\"sig-paren\">(</span><em class=\"sig-param\"><span class=\"n\"><span class=\"pre\">status</span></span><span class=\"o\"><span class=\"pre\">=</span></span><span class=\"default_value\"><span class=\"pre\">None</span></span></em>, <em class=\"sig-param\"><span class=\"n\"><span class=\"pre\">last_seen</span></span><span class=\"o\"><span class=\"pre\">=</span></span><span class=\"default_value\"><span class=\"pre\">None</span></span></em><span class=\"sig-paren\">)</span><a class=\"headerlink\" href=\"#slidge.group.LegacyParticipant.extended_away\" title=\"Link to this definition\">#</a></dt>\n-<dd><p>Send an \u201cextended away\u201d presence from this contact to the user.</p>\n-<p>This is a global status, as opposed to <a class=\"reference internal\" href=\"../contact/contact/index.html#slidge.contact.contact.LegacyContact.inactive\" title=\"slidge.contact.contact.LegacyContact.inactive\"><code class=\"xref py py-meth docutils literal notranslate\"><span class=\"pre\">LegacyContact.inactive()</span></code></a>\n-which concerns a specific conversation, ie a specific \u201cchat window\u201d</p>\n-<dl class=\"field-list simple\">\n-<dt class=\"field-odd\">Parameters<span class=\"colon\">:</span></dt>\n-<dd class=\"field-odd\"><ul class=\"simple\">\n-<li><p><strong>status</strong> (<em>Optional</em><em>[</em><a class=\"reference external\" href=\"/usr/share/doc/python3-doc/html/library/stdtypes.html#str\" title=\"(in Python v3.11)\"><em>str</em></a><em>]</em>) \u2013 Arbitrary text, details of the status, eg: \u201cGone to fight capitalism\u201d</p></li>\n-<li><p><strong>last_seen</strong> (<em>Optional</em><em>[</em><a class=\"reference external\" href=\"/usr/share/doc/python3-doc/html/library/datetime.html#datetime.datetime\" title=\"(in Python v3.11)\"><em>datetime.datetime</em></a><em>]</em>) \u2013 For <a class=\"reference external\" href=\"https://xmpp.org/extensions/xep-0319.html\">XEP-0319</a></p></li>\n-</ul>\n-</dd>\n-</dl>\n-</dd></dl>\n-\n-<dl class=\"py method\">\n-<dt class=\"sig sig-object py\" id=\"slidge.group.LegacyParticipant.busy\">\n-<span class=\"sig-name descname\"><span class=\"pre\">busy</span></span><span class=\"sig-paren\">(</span><em class=\"sig-param\"><span class=\"n\"><span class=\"pre\">status</span></span><span class=\"o\"><span class=\"pre\">=</span></span><span class=\"default_value\"><span class=\"pre\">None</span></span></em>, <em class=\"sig-param\"><span class=\"n\"><span class=\"pre\">last_seen</span></span><span class=\"o\"><span class=\"pre\">=</span></span><span class=\"default_value\"><span class=\"pre\">None</span></span></em><span class=\"sig-paren\">)</span><a class=\"headerlink\" href=\"#slidge.group.LegacyParticipant.busy\" title=\"Link to this definition\">#</a></dt>\n-<dd><p>Send a \u201cbusy\u201d (ie, \u201cdnd\u201d) presence from this contact to the user,</p>\n-<dl class=\"field-list simple\">\n-<dt class=\"field-odd\">Parameters<span class=\"colon\">:</span></dt>\n-<dd class=\"field-odd\"><ul class=\"simple\">\n-<li><p><strong>status</strong> (<em>Optional</em><em>[</em><a class=\"reference external\" href=\"/usr/share/doc/python3-doc/html/library/stdtypes.html#str\" title=\"(in Python v3.11)\"><em>str</em></a><em>]</em>) \u2013 eg: \u201cTrying to make sense of XEP-0100\u201d</p></li>\n-<li><p><strong>last_seen</strong> (<em>Optional</em><em>[</em><a class=\"reference external\" href=\"/usr/share/doc/python3-doc/html/library/datetime.html#datetime.datetime\" title=\"(in Python v3.11)\"><em>datetime.datetime</em></a><em>]</em>) \u2013 For <a class=\"reference external\" href=\"https://xmpp.org/extensions/xep-0319.html\">XEP-0319</a></p></li>\n-</ul>\n-</dd>\n-</dl>\n-</dd></dl>\n-\n-<dl class=\"py method\">\n-<dt class=\"sig sig-object py\" id=\"slidge.group.LegacyParticipant.offline\">\n-<span class=\"sig-name descname\"><span class=\"pre\">offline</span></span><span class=\"sig-paren\">(</span><em class=\"sig-param\"><span class=\"n\"><span class=\"pre\">status</span></span><span class=\"o\"><span class=\"pre\">=</span></span><span class=\"default_value\"><span class=\"pre\">None</span></span></em>, <em class=\"sig-param\"><span class=\"n\"><span class=\"pre\">last_seen</span></span><span class=\"o\"><span class=\"pre\">=</span></span><span class=\"default_value\"><span class=\"pre\">None</span></span></em><span class=\"sig-paren\">)</span><a class=\"headerlink\" href=\"#slidge.group.LegacyParticipant.offline\" title=\"Link to this definition\">#</a></dt>\n-<dd><p>Send an \u201coffline\u201d presence from this contact to the user.</p>\n-<dl class=\"field-list simple\">\n-<dt class=\"field-odd\">Parameters<span class=\"colon\">:</span></dt>\n-<dd class=\"field-odd\"><ul class=\"simple\">\n-<li><p><strong>status</strong> (<em>Optional</em><em>[</em><a class=\"reference external\" href=\"/usr/share/doc/python3-doc/html/library/stdtypes.html#str\" title=\"(in Python v3.11)\"><em>str</em></a><em>]</em>) \u2013 eg: \u201cTrying to make sense of XEP-0100\u201d</p></li>\n-<li><p><strong>last_seen</strong> (<em>Optional</em><em>[</em><a class=\"reference external\" href=\"/usr/share/doc/python3-doc/html/library/datetime.html#datetime.datetime\" title=\"(in Python v3.11)\"><em>datetime.datetime</em></a><em>]</em>) \u2013 For <a class=\"reference external\" href=\"https://xmpp.org/extensions/xep-0319.html\">XEP-0319</a></p></li>\n-</ul>\n-</dd>\n-</dl>\n-</dd></dl>\n-\n-<dl class=\"py method\">\n-<dt class=\"sig sig-object py\" id=\"slidge.group.LegacyParticipant.invite_to\">\n-<span class=\"sig-name descname\"><span class=\"pre\">invite_to</span></span><span class=\"sig-paren\">(</span><em class=\"sig-param\"><span class=\"n\"><span class=\"pre\">muc</span></span></em>, <em class=\"sig-param\"><span class=\"n\"><span class=\"pre\">reason</span></span><span class=\"o\"><span class=\"pre\">=</span></span><span class=\"default_value\"><span class=\"pre\">None</span></span></em>, <em class=\"sig-param\"><span class=\"n\"><span class=\"pre\">password</span></span><span class=\"o\"><span class=\"pre\">=</span></span><span class=\"default_value\"><span class=\"pre\">None</span></span></em>, <em class=\"sig-param\"><span class=\"o\"><span class=\"pre\">**</span></span><span class=\"n\"><span class=\"pre\">send_kwargs</span></span></em><span class=\"sig-paren\">)</span><a class=\"headerlink\" href=\"#slidge.group.LegacyParticipant.invite_to\" title=\"Link to this definition\">#</a></dt>\n-<dd><p>Send an invitation to join a group (<a class=\"reference external\" href=\"https://xmpp.org/extensions/xep-0249.html\">XEP-0249</a>) from this <a class=\"reference internal\" href=\"../../../../glossary.html#term-XMPP-Entity\"><span class=\"xref std std-term\">XMPP Entity</span></a>.</p>\n-<dl class=\"field-list simple\">\n-<dt class=\"field-odd\">Parameters<span class=\"colon\">:</span></dt>\n-<dd class=\"field-odd\"><ul class=\"simple\">\n-<li><p><strong>muc</strong> (<a class=\"reference internal\" href=\"#slidge.group.LegacyMUC\" title=\"slidge.group.LegacyMUC\"><em>slidge.group.LegacyMUC</em></a>) \u2013 the muc the user is invited to</p></li>\n-<li><p><strong>reason</strong> (<em>Optional</em><em>[</em><a class=\"reference external\" href=\"/usr/share/doc/python3-doc/html/library/stdtypes.html#str\" title=\"(in Python v3.11)\"><em>str</em></a><em>]</em>) \u2013 a text explaining why the user should join this muc</p></li>\n-<li><p><strong>password</strong> (<em>Optional</em><em>[</em><a class=\"reference external\" href=\"/usr/share/doc/python3-doc/html/library/stdtypes.html#str\" title=\"(in Python v3.11)\"><em>str</em></a><em>]</em>) \u2013 maybe this will make sense later? not sure</p></li>\n-<li><p><strong>send_kwargs</strong> \u2013 additional kwargs to be passed to _send()\n-(internal use by slidge)</p></li>\n-</ul>\n-</dd>\n-</dl>\n-</dd></dl>\n-\n-<dl class=\"py method\">\n-<dt class=\"sig sig-object py\" id=\"slidge.group.LegacyParticipant.active\">\n-<span class=\"sig-name descname\"><span class=\"pre\">active</span></span><span class=\"sig-paren\">(</span><em class=\"sig-param\"><span class=\"o\"><span class=\"pre\">**</span></span><span class=\"n\"><span class=\"pre\">kwargs</span></span></em><span class=\"sig-paren\">)</span><a class=\"headerlink\" href=\"#slidge.group.LegacyParticipant.active\" title=\"Link to this definition\">#</a></dt>\n-<dd><p>Send an \u201cactive\u201d chat state (<a class=\"reference external\" href=\"https://xmpp.org/extensions/xep-0085.html\">XEP-0085</a>) from this\n-<a class=\"reference internal\" href=\"../../../../glossary.html#term-XMPP-Entity\"><span class=\"xref std std-term\">XMPP Entity</span></a>.</p>\n-</dd></dl>\n-\n-<dl class=\"py method\">\n-<dt class=\"sig sig-object py\" id=\"slidge.group.LegacyParticipant.composing\">\n-<span class=\"sig-name descname\"><span class=\"pre\">composing</span></span><span class=\"sig-paren\">(</span><em class=\"sig-param\"><span class=\"o\"><span class=\"pre\">**</span></span><span class=\"n\"><span class=\"pre\">kwargs</span></span></em><span class=\"sig-paren\">)</span><a class=\"headerlink\" href=\"#slidge.group.LegacyParticipant.composing\" title=\"Link to this definition\">#</a></dt>\n-<dd><p>Send a \u201ccomposing\u201d (ie \u201ctyping notification\u201d) chat state (<a class=\"reference external\" href=\"https://xmpp.org/extensions/xep-0085.html\">XEP-0085</a>)\n-from this <a class=\"reference internal\" href=\"../../../../glossary.html#term-XMPP-Entity\"><span class=\"xref std std-term\">XMPP Entity</span></a>.</p>\n-</dd></dl>\n-\n-<dl class=\"py method\">\n-<dt class=\"sig sig-object py\" id=\"slidge.group.LegacyParticipant.paused\">\n-<span class=\"sig-name descname\"><span class=\"pre\">paused</span></span><span class=\"sig-paren\">(</span><em class=\"sig-param\"><span class=\"o\"><span class=\"pre\">**</span></span><span class=\"n\"><span class=\"pre\">kwargs</span></span></em><span class=\"sig-paren\">)</span><a class=\"headerlink\" href=\"#slidge.group.LegacyParticipant.paused\" title=\"Link to this definition\">#</a></dt>\n-<dd><p>Send a \u201cpaused\u201d (ie \u201ctyping paused notification\u201d) chat state\n-(<a class=\"reference external\" href=\"https://xmpp.org/extensions/xep-0085.html\">XEP-0085</a>) from this <a class=\"reference internal\" href=\"../../../../glossary.html#term-XMPP-Entity\"><span class=\"xref std std-term\">XMPP Entity</span></a>.</p>\n-</dd></dl>\n-\n-<dl class=\"py method\">\n-<dt class=\"sig sig-object py\" id=\"slidge.group.LegacyParticipant.inactive\">\n-<span class=\"sig-name descname\"><span class=\"pre\">inactive</span></span><span class=\"sig-paren\">(</span><em class=\"sig-param\"><span class=\"o\"><span class=\"pre\">**</span></span><span class=\"n\"><span class=\"pre\">kwargs</span></span></em><span class=\"sig-paren\">)</span><a class=\"headerlink\" href=\"#slidge.group.LegacyParticipant.inactive\" title=\"Link to this definition\">#</a></dt>\n-<dd><p>Send an \u201cinactive\u201d (ie \u201ccontact has not interacted with the chat session\n-interface for an intermediate period of time\u201d) chat state (<a class=\"reference external\" href=\"https://xmpp.org/extensions/xep-0085.html\">XEP-0085</a>)\n-from this <a class=\"reference internal\" href=\"../../../../glossary.html#term-XMPP-Entity\"><span class=\"xref std std-term\">XMPP Entity</span></a>.</p>\n-</dd></dl>\n-\n-<dl class=\"py method\">\n-<dt class=\"sig sig-object py\" id=\"slidge.group.LegacyParticipant.gone\">\n-<span class=\"sig-name descname\"><span class=\"pre\">gone</span></span><span class=\"sig-paren\">(</span><em class=\"sig-param\"><span class=\"o\"><span class=\"pre\">**</span></span><span class=\"n\"><span class=\"pre\">kwargs</span></span></em><span class=\"sig-paren\">)</span><a class=\"headerlink\" href=\"#slidge.group.LegacyParticipant.gone\" title=\"Link to this definition\">#</a></dt>\n-<dd><p>Send a \u201cgone\u201d (ie \u201ccontact has not interacted with the chat session interface,\n-system, or device for a relatively long period of time\u201d) chat state\n-(<a class=\"reference external\" href=\"https://xmpp.org/extensions/xep-0085.html\">XEP-0085</a>) from this <a class=\"reference internal\" href=\"../../../../glossary.html#term-XMPP-Entity\"><span class=\"xref std std-term\">XMPP Entity</span></a>.</p>\n-</dd></dl>\n-\n-<dl class=\"py method\">\n-<dt class=\"sig sig-object py\" id=\"slidge.group.LegacyParticipant.ack\">\n-<span class=\"sig-name descname\"><span class=\"pre\">ack</span></span><span class=\"sig-paren\">(</span><em class=\"sig-param\"><span class=\"n\"><span class=\"pre\">legacy_msg_id</span></span></em>, <em class=\"sig-param\"><span class=\"o\"><span class=\"pre\">**</span></span><span class=\"n\"><span class=\"pre\">kwargs</span></span></em><span class=\"sig-paren\">)</span><a class=\"headerlink\" href=\"#slidge.group.LegacyParticipant.ack\" title=\"Link to this definition\">#</a></dt>\n-<dd><p>Send an \u201cacknowledged\u201d message marker (<a class=\"reference external\" href=\"https://xmpp.org/extensions/xep-0333.html\">XEP-0333</a>) from this <a class=\"reference internal\" href=\"../../../../glossary.html#term-XMPP-Entity\"><span class=\"xref std std-term\">XMPP Entity</span></a>.</p>\n-<dl class=\"field-list simple\">\n-<dt class=\"field-odd\">Parameters<span class=\"colon\">:</span></dt>\n-<dd class=\"field-odd\"><p><strong>legacy_msg_id</strong> (<em>slidge.util.types.LegacyMessageType</em>) \u2013 The message this marker refers to</p>\n-</dd>\n-</dl>\n-</dd></dl>\n-\n-<dl class=\"py method\">\n-<dt class=\"sig sig-object py\" id=\"slidge.group.LegacyParticipant.received\">\n-<span class=\"sig-name descname\"><span class=\"pre\">received</span></span><span class=\"sig-paren\">(</span><em class=\"sig-param\"><span class=\"n\"><span class=\"pre\">legacy_msg_id</span></span></em>, <em class=\"sig-param\"><span class=\"o\"><span class=\"pre\">**</span></span><span class=\"n\"><span class=\"pre\">kwargs</span></span></em><span class=\"sig-paren\">)</span><a class=\"headerlink\" href=\"#slidge.group.LegacyParticipant.received\" title=\"Link to this definition\">#</a></dt>\n-<dd><p>Send a \u201creceived\u201d message marker (<a class=\"reference external\" href=\"https://xmpp.org/extensions/xep-0333.html\">XEP-0333</a>) from this <a class=\"reference internal\" href=\"../../../../glossary.html#term-XMPP-Entity\"><span class=\"xref std std-term\">XMPP Entity</span></a>.\n-If called on a <code class=\"xref py py-class docutils literal notranslate\"><span class=\"pre\">LegacyContact</span></code>, also send a delivery receipt\n-marker (<a class=\"reference external\" href=\"https://xmpp.org/extensions/xep-0184.html\">XEP-0184</a>).</p>\n-<dl class=\"field-list simple\">\n-<dt class=\"field-odd\">Parameters<span class=\"colon\">:</span></dt>\n-<dd class=\"field-odd\"><p><strong>legacy_msg_id</strong> (<em>slidge.util.types.LegacyMessageType</em>) \u2013 The message this marker refers to</p>\n-</dd>\n-</dl>\n-</dd></dl>\n-\n-<dl class=\"py method\">\n-<dt class=\"sig sig-object py\" id=\"slidge.group.LegacyParticipant.displayed\">\n-<span class=\"sig-name descname\"><span class=\"pre\">displayed</span></span><span class=\"sig-paren\">(</span><em class=\"sig-param\"><span class=\"n\"><span class=\"pre\">legacy_msg_id</span></span></em>, <em class=\"sig-param\"><span class=\"o\"><span class=\"pre\">**</span></span><span class=\"n\"><span class=\"pre\">kwargs</span></span></em><span class=\"sig-paren\">)</span><a class=\"headerlink\" href=\"#slidge.group.LegacyParticipant.displayed\" title=\"Link to this definition\">#</a></dt>\n-<dd><p>Send a \u201cdisplayed\u201d message marker (<a class=\"reference external\" href=\"https://xmpp.org/extensions/xep-0333.html\">XEP-0333</a>) from this <a class=\"reference internal\" href=\"../../../../glossary.html#term-XMPP-Entity\"><span class=\"xref std std-term\">XMPP Entity</span></a>.</p>\n-<dl class=\"field-list simple\">\n-<dt class=\"field-odd\">Parameters<span class=\"colon\">:</span></dt>\n-<dd class=\"field-odd\"><p><strong>legacy_msg_id</strong> (<em>slidge.util.types.LegacyMessageType</em>) \u2013 The message this marker refers to</p>\n-</dd>\n-</dl>\n-</dd></dl>\n-\n-<dl class=\"py method\">\n-<dt class=\"sig sig-object py\" id=\"slidge.group.LegacyParticipant.send_text\">\n-<span class=\"sig-name descname\"><span class=\"pre\">send_text</span></span><span class=\"sig-paren\">(</span><em class=\"sig-param\"><span class=\"n\"><span class=\"pre\">body</span></span></em>, <em class=\"sig-param\"><span class=\"n\"><span class=\"pre\">legacy_msg_id</span></span><span class=\"o\"><span class=\"pre\">=</span></span><span class=\"default_value\"><span class=\"pre\">None</span></span></em>, <em class=\"sig-param\"><span class=\"o\"><span class=\"pre\">*</span></span></em>, <em class=\"sig-param\"><span class=\"n\"><span class=\"pre\">when</span></span><span class=\"o\"><span class=\"pre\">=</span></span><span class=\"default_value\"><span class=\"pre\">None</span></span></em>, <em class=\"sig-param\"><span class=\"n\"><span class=\"pre\">reply_to</span></span><span class=\"o\"><span class=\"pre\">=</span></span><span class=\"default_value\"><span class=\"pre\">None</span></span></em>, <em class=\"sig-param\"><span class=\"n\"><span class=\"pre\">thread</span></span><span class=\"o\"><span class=\"pre\">=</span></span><span class=\"default_value\"><span class=\"pre\">None</span></span></em>, <em class=\"sig-param\"><span class=\"n\"><span class=\"pre\">hints</span></span><span class=\"o\"><span class=\"pre\">=</span></span><span class=\"default_value\"><span class=\"pre\">None</span></span></em>, <em class=\"sig-param\"><span class=\"n\"><span class=\"pre\">carbon</span></span><span class=\"o\"><span class=\"pre\">=</span></span><span class=\"default_value\"><span class=\"pre\">False</span></span></em>, <em class=\"sig-param\"><span class=\"n\"><span class=\"pre\">archive_only</span></span><span class=\"o\"><span class=\"pre\">=</span></span><span class=\"default_value\"><span class=\"pre\">False</span></span></em>, <em class=\"sig-param\"><span class=\"n\"><span class=\"pre\">correction</span></span><span class=\"o\"><span class=\"pre\">=</span></span><span class=\"default_value\"><span class=\"pre\">False</span></span></em>, <em class=\"sig-param\"><span class=\"n\"><span class=\"pre\">correction_event_id</span></span><span class=\"o\"><span class=\"pre\">=</span></span><span class=\"default_value\"><span class=\"pre\">None</span></span></em>, <em class=\"sig-param\"><span class=\"n\"><span class=\"pre\">link_previews</span></span><span class=\"o\"><span class=\"pre\">=</span></span><span class=\"default_value\"><span class=\"pre\">None</span></span></em>, <em class=\"sig-param\"><span class=\"o\"><span class=\"pre\">**</span></span><span class=\"n\"><span class=\"pre\">send_kwargs</span></span></em><span class=\"sig-paren\">)</span><a class=\"headerlink\" href=\"#slidge.group.LegacyParticipant.send_text\" title=\"Link to this definition\">#</a></dt>\n-<dd><p>Send a text message from this <a class=\"reference internal\" href=\"../../../../glossary.html#term-XMPP-Entity\"><span class=\"xref std std-term\">XMPP Entity</span></a>.</p>\n-<dl class=\"field-list simple\">\n-<dt class=\"field-odd\">Parameters<span class=\"colon\">:</span></dt>\n-<dd class=\"field-odd\"><ul class=\"simple\">\n-<li><p><strong>body</strong> (<a class=\"reference external\" href=\"/usr/share/doc/python3-doc/html/library/stdtypes.html#str\" title=\"(in Python v3.11)\"><em>str</em></a>) \u2013 Content of the message</p></li>\n-<li><p><strong>legacy_msg_id</strong> (<em>Optional</em><em>[</em><em>slidge.util.types.LegacyMessageType</em><em>]</em>) \u2013 If you want to be able to transport read markers from the gateway\n-user to the legacy network, specify this</p></li>\n-<li><p><strong>when</strong> (<em>Optional</em><em>[</em><a class=\"reference external\" href=\"/usr/share/doc/python3-doc/html/library/datetime.html#datetime.datetime\" title=\"(in Python v3.11)\"><em>datetime.datetime</em></a><em>]</em>) \u2013 when the message was sent, for a \u201cdelay\u201d tag (<a class=\"reference external\" href=\"https://xmpp.org/extensions/xep-0203.html\">XEP-0203</a>)</p></li>\n-<li><p><strong>reply_to</strong> (<em>Optional</em><em>[</em><a class=\"reference internal\" href=\"../util/types/index.html#slidge.util.types.MessageReference\" title=\"slidge.util.types.MessageReference\"><em>slidge.util.types.MessageReference</em></a><em>]</em>) \u2013 Quote another message (<a class=\"reference external\" href=\"https://xmpp.org/extensions/xep-0461.html\">XEP-0461</a>)</p></li>\n-<li><p><strong>hints</strong> (<em>Optional</em><em>[</em><em>Iterable</em><em>[</em><em>slidge.util.types.ProcessingHint</em><em>]</em><em>]</em>) \u2013 </p></li>\n-<li><p><strong>thread</strong> (<em>Optional</em><em>[</em><em>slidge.util.types.LegacyThreadType</em><em>]</em>) \u2013 </p></li>\n-<li><p><strong>carbon</strong> \u2013 (only used if called on a <code class=\"xref py py-class docutils literal notranslate\"><span class=\"pre\">LegacyContact</span></code>)\n-Set this to <code class=\"docutils literal notranslate\"><span class=\"pre\">True</span></code> if this is actually a message sent <strong>to</strong> the\n-<code class=\"xref py py-class docutils literal notranslate\"><span class=\"pre\">LegacyContact</span></code> by the <a class=\"reference internal\" href=\"../../../../glossary.html#term-User\"><span class=\"xref std std-term\">User</span></a>.\n-Use this to synchronize outgoing history for legacy official apps.</p></li>\n-<li><p><strong>correction</strong> \u2013 whether this message is a correction or not</p></li>\n-<li><p><strong>correction_event_id</strong> (<em>Optional</em><em>[</em><em>slidge.util.types.LegacyMessageType</em><em>]</em>) \u2013 in the case where an ID is associated with the legacy\n-\u2018correction event\u2019, specify it here to use it on the XMPP side. If not specified,\n-a random ID will be used.</p></li>\n-<li><p><strong>link_previews</strong> (<em>Optional</em><em>[</em><a class=\"reference external\" href=\"/usr/share/doc/python3-doc/html/library/stdtypes.html#list\" title=\"(in Python v3.11)\"><em>list</em></a><em>[</em><em>slidge.util.types.LinkPreview</em><em>]</em><em>]</em>) \u2013 A little of sender (or server, or gateway)-generated\n-previews of URLs linked in the body.</p></li>\n-<li><p><strong>archive_only</strong> \u2013 (only in groups) Do not send this message to user,\n-but store it in the archive. Meant to be used during <code class=\"docutils literal notranslate\"><span class=\"pre\">MUC.backfill()</span></code></p></li>\n-</ul>\n-</dd>\n-</dl>\n-</dd></dl>\n-\n-<dl class=\"py method\">\n-<dt class=\"sig sig-object py\" id=\"slidge.group.LegacyParticipant.correct\">\n-<span class=\"sig-name descname\"><span class=\"pre\">correct</span></span><span class=\"sig-paren\">(</span><em class=\"sig-param\"><span class=\"n\"><span class=\"pre\">legacy_msg_id</span></span></em>, <em class=\"sig-param\"><span class=\"n\"><span class=\"pre\">new_text</span></span></em>, <em class=\"sig-param\"><span class=\"o\"><span class=\"pre\">*</span></span></em>, <em class=\"sig-param\"><span class=\"n\"><span class=\"pre\">when</span></span><span class=\"o\"><span class=\"pre\">=</span></span><span class=\"default_value\"><span class=\"pre\">None</span></span></em>, <em class=\"sig-param\"><span class=\"n\"><span class=\"pre\">reply_to</span></span><span class=\"o\"><span class=\"pre\">=</span></span><span class=\"default_value\"><span class=\"pre\">None</span></span></em>, <em class=\"sig-param\"><span class=\"n\"><span class=\"pre\">thread</span></span><span class=\"o\"><span class=\"pre\">=</span></span><span class=\"default_value\"><span class=\"pre\">None</span></span></em>, <em class=\"sig-param\"><span class=\"n\"><span class=\"pre\">hints</span></span><span class=\"o\"><span class=\"pre\">=</span></span><span class=\"default_value\"><span class=\"pre\">None</span></span></em>, <em class=\"sig-param\"><span class=\"n\"><span class=\"pre\">carbon</span></span><span class=\"o\"><span class=\"pre\">=</span></span><span class=\"default_value\"><span class=\"pre\">False</span></span></em>, <em class=\"sig-param\"><span class=\"n\"><span class=\"pre\">archive_only</span></span><span class=\"o\"><span class=\"pre\">=</span></span><span class=\"default_value\"><span class=\"pre\">False</span></span></em>, <em class=\"sig-param\"><span class=\"n\"><span class=\"pre\">correction_event_id</span></span><span class=\"o\"><span class=\"pre\">=</span></span><span class=\"default_value\"><span class=\"pre\">None</span></span></em>, <em class=\"sig-param\"><span class=\"n\"><span class=\"pre\">link_previews</span></span><span class=\"o\"><span class=\"pre\">=</span></span><span class=\"default_value\"><span class=\"pre\">None</span></span></em>, <em class=\"sig-param\"><span class=\"o\"><span class=\"pre\">**</span></span><span class=\"n\"><span class=\"pre\">send_kwargs</span></span></em><span class=\"sig-paren\">)</span><a class=\"headerlink\" href=\"#slidge.group.LegacyParticipant.correct\" title=\"Link to this definition\">#</a></dt>\n-<dd><p>Modify a message that was previously sent by this <a class=\"reference internal\" href=\"../../../../glossary.html#term-XMPP-Entity\"><span class=\"xref std std-term\">XMPP Entity</span></a>.</p>\n-<p>Uses last message correction (<a class=\"reference external\" href=\"https://xmpp.org/extensions/xep-0308.html\">XEP-0308</a>)</p>\n-<dl class=\"field-list simple\">\n-<dt class=\"field-odd\">Parameters<span class=\"colon\">:</span></dt>\n-<dd class=\"field-odd\"><ul class=\"simple\">\n-<li><p><strong>new_text</strong> (<a class=\"reference external\" href=\"/usr/share/doc/python3-doc/html/library/stdtypes.html#str\" title=\"(in Python v3.11)\"><em>str</em></a>) \u2013 New content of the message</p></li>\n-<li><p><strong>legacy_msg_id</strong> (<em>slidge.util.types.LegacyMessageType</em>) \u2013 The legacy message ID of the message to correct</p></li>\n-<li><p><strong>when</strong> (<em>Optional</em><em>[</em><a class=\"reference external\" href=\"/usr/share/doc/python3-doc/html/library/datetime.html#datetime.datetime\" title=\"(in Python v3.11)\"><em>datetime.datetime</em></a><em>]</em>) \u2013 when the message was sent, for a \u201cdelay\u201d tag (<a class=\"reference external\" href=\"https://xmpp.org/extensions/xep-0203.html\">XEP-0203</a>)</p></li>\n-<li><p><strong>reply_to</strong> (<em>Optional</em><em>[</em><a class=\"reference internal\" href=\"../util/types/index.html#slidge.util.types.MessageReference\" title=\"slidge.util.types.MessageReference\"><em>slidge.util.types.MessageReference</em></a><em>]</em>) \u2013 Quote another message (<a class=\"reference external\" href=\"https://xmpp.org/extensions/xep-0461.html\">XEP-0461</a>)</p></li>\n-<li><p><strong>hints</strong> (<em>Optional</em><em>[</em><em>Iterable</em><em>[</em><em>slidge.util.types.ProcessingHint</em><em>]</em><em>]</em>) \u2013 </p></li>\n-<li><p><strong>thread</strong> (<em>Optional</em><em>[</em><em>slidge.util.types.LegacyThreadType</em><em>]</em>) \u2013 </p></li>\n-<li><p><strong>carbon</strong> \u2013 (only in 1:1) Reflect a message sent to this <code class=\"docutils literal notranslate\"><span class=\"pre\">Contact</span></code> by the user.\n-Use this to synchronize outgoing history for legacy official apps.</p></li>\n-<li><p><strong>archive_only</strong> \u2013 (only in groups) Do not send this message to user,\n-but store it in the archive. Meant to be used during <code class=\"docutils literal notranslate\"><span class=\"pre\">MUC.backfill()</span></code></p></li>\n-<li><p><strong>correction_event_id</strong> (<em>Optional</em><em>[</em><em>slidge.util.types.LegacyMessageType</em><em>]</em>) \u2013 in the case where an ID is associated with the legacy\n-\u2018correction event\u2019, specify it here to use it on the XMPP side. If not specified,\n-a random ID will be used.</p></li>\n-<li><p><strong>link_previews</strong> (<em>Optional</em><em>[</em><a class=\"reference external\" href=\"/usr/share/doc/python3-doc/html/library/stdtypes.html#list\" title=\"(in Python v3.11)\"><em>list</em></a><em>[</em><em>slidge.util.types.LinkPreview</em><em>]</em><em>]</em>) \u2013 A little of sender (or server, or gateway)-generated\n-previews of URLs linked in the body.</p></li>\n-</ul>\n-</dd>\n-</dl>\n-</dd></dl>\n-\n-<dl class=\"py method\">\n-<dt class=\"sig sig-object py\" id=\"slidge.group.LegacyParticipant.react\">\n-<span class=\"sig-name descname\"><span class=\"pre\">react</span></span><span class=\"sig-paren\">(</span><em class=\"sig-param\"><span class=\"n\"><span class=\"pre\">legacy_msg_id</span></span></em>, <em class=\"sig-param\"><span class=\"n\"><span class=\"pre\">emojis</span></span><span class=\"o\"><span class=\"pre\">=</span></span><span class=\"default_value\"><span class=\"pre\">()</span></span></em>, <em class=\"sig-param\"><span class=\"n\"><span class=\"pre\">thread</span></span><span class=\"o\"><span class=\"pre\">=</span></span><span class=\"default_value\"><span class=\"pre\">None</span></span></em>, <em class=\"sig-param\"><span class=\"o\"><span class=\"pre\">**</span></span><span class=\"n\"><span class=\"pre\">kwargs</span></span></em><span class=\"sig-paren\">)</span><a class=\"headerlink\" href=\"#slidge.group.LegacyParticipant.react\" title=\"Link to this definition\">#</a></dt>\n-<dd><p>Send a reaction (<a class=\"reference external\" href=\"https://xmpp.org/extensions/xep-0444.html\">XEP-0444</a>) from this <a class=\"reference internal\" href=\"../../../../glossary.html#term-XMPP-Entity\"><span class=\"xref std std-term\">XMPP Entity</span></a>.</p>\n-<dl class=\"field-list simple\">\n-<dt class=\"field-odd\">Parameters<span class=\"colon\">:</span></dt>\n-<dd class=\"field-odd\"><ul class=\"simple\">\n-<li><p><strong>legacy_msg_id</strong> (<em>slidge.util.types.LegacyMessageType</em>) \u2013 The message which the reaction refers to.</p></li>\n-<li><p><strong>emojis</strong> (<em>Iterable</em><em>[</em><a class=\"reference external\" href=\"/usr/share/doc/python3-doc/html/library/stdtypes.html#str\" title=\"(in Python v3.11)\"><em>str</em></a><em>]</em>) \u2013 An iterable of emojis used as reactions</p></li>\n-<li><p><strong>thread</strong> (<em>Optional</em><em>[</em><em>slidge.util.types.LegacyThreadType</em><em>]</em>) \u2013 </p></li>\n-</ul>\n-</dd>\n-</dl>\n-</dd></dl>\n-\n-<dl class=\"py method\">\n-<dt class=\"sig sig-object py\" id=\"slidge.group.LegacyParticipant.retract\">\n-<span class=\"sig-name descname\"><span class=\"pre\">retract</span></span><span class=\"sig-paren\">(</span><em class=\"sig-param\"><span class=\"n\"><span class=\"pre\">legacy_msg_id</span></span></em>, <em class=\"sig-param\"><span class=\"n\"><span class=\"pre\">thread</span></span><span class=\"o\"><span class=\"pre\">=</span></span><span class=\"default_value\"><span class=\"pre\">None</span></span></em>, <em class=\"sig-param\"><span class=\"o\"><span class=\"pre\">**</span></span><span class=\"n\"><span class=\"pre\">kwargs</span></span></em><span class=\"sig-paren\">)</span><a class=\"headerlink\" href=\"#slidge.group.LegacyParticipant.retract\" title=\"Link to this definition\">#</a></dt>\n-<dd><p>Send a message retraction (<a class=\"reference external\" href=\"https://xmpp.org/extensions/xep-0424.html\">XEP-0424</a>) from this <a class=\"reference internal\" href=\"../../../../glossary.html#term-XMPP-Entity\"><span class=\"xref std std-term\">XMPP Entity</span></a>.</p>\n-<dl class=\"field-list simple\">\n-<dt class=\"field-odd\">Parameters<span class=\"colon\">:</span></dt>\n-<dd class=\"field-odd\"><ul class=\"simple\">\n-<li><p><strong>legacy_msg_id</strong> (<em>slidge.util.types.LegacyMessageType</em>) \u2013 Legacy ID of the message to delete</p></li>\n-<li><p><strong>thread</strong> (<em>Optional</em><em>[</em><em>slidge.util.types.LegacyThreadType</em><em>]</em>) \u2013 </p></li>\n-</ul>\n-</dd>\n-</dl>\n-</dd></dl>\n-\n-<dl class=\"py method\">\n-<dt class=\"sig sig-object py\" id=\"slidge.group.LegacyParticipant.send_file\">\n-<em class=\"property\"><span class=\"pre\">async</span><span class=\"w\"> </span></em><span class=\"sig-name descname\"><span class=\"pre\">send_file</span></span><span class=\"sig-paren\">(</span><em class=\"sig-param\"><span class=\"n\"><span class=\"pre\">file_path</span></span><span class=\"o\"><span class=\"pre\">=</span></span><span class=\"default_value\"><span class=\"pre\">None</span></span></em>, <em class=\"sig-param\"><span class=\"n\"><span class=\"pre\">legacy_msg_id</span></span><span class=\"o\"><span class=\"pre\">=</span></span><span class=\"default_value\"><span class=\"pre\">None</span></span></em>, <em class=\"sig-param\"><span class=\"o\"><span class=\"pre\">*</span></span></em>, <em class=\"sig-param\"><span class=\"n\"><span class=\"pre\">data_stream</span></span><span class=\"o\"><span class=\"pre\">=</span></span><span class=\"default_value\"><span class=\"pre\">None</span></span></em>, <em class=\"sig-param\"><span class=\"n\"><span class=\"pre\">data</span></span><span class=\"o\"><span class=\"pre\">=</span></span><span class=\"default_value\"><span class=\"pre\">None</span></span></em>, <em class=\"sig-param\"><span class=\"n\"><span class=\"pre\">file_url</span></span><span class=\"o\"><span class=\"pre\">=</span></span><span class=\"default_value\"><span class=\"pre\">None</span></span></em>, <em class=\"sig-param\"><span class=\"n\"><span class=\"pre\">file_name</span></span><span class=\"o\"><span class=\"pre\">=</span></span><span class=\"default_value\"><span class=\"pre\">None</span></span></em>, <em class=\"sig-param\"><span class=\"n\"><span class=\"pre\">content_type</span></span><span class=\"o\"><span class=\"pre\">=</span></span><span class=\"default_value\"><span class=\"pre\">None</span></span></em>, <em class=\"sig-param\"><span class=\"n\"><span class=\"pre\">reply_to</span></span><span class=\"o\"><span class=\"pre\">=</span></span><span class=\"default_value\"><span class=\"pre\">None</span></span></em>, <em class=\"sig-param\"><span class=\"n\"><span class=\"pre\">when</span></span><span class=\"o\"><span class=\"pre\">=</span></span><span class=\"default_value\"><span class=\"pre\">None</span></span></em>, <em class=\"sig-param\"><span class=\"n\"><span class=\"pre\">caption</span></span><span class=\"o\"><span class=\"pre\">=</span></span><span class=\"default_value\"><span class=\"pre\">None</span></span></em>, <em class=\"sig-param\"><span class=\"n\"><span class=\"pre\">legacy_file_id</span></span><span class=\"o\"><span class=\"pre\">=</span></span><span class=\"default_value\"><span class=\"pre\">None</span></span></em>, <em class=\"sig-param\"><span class=\"n\"><span class=\"pre\">thread</span></span><span class=\"o\"><span class=\"pre\">=</span></span><span class=\"default_value\"><span class=\"pre\">None</span></span></em>, <em class=\"sig-param\"><span class=\"o\"><span class=\"pre\">**</span></span><span class=\"n\"><span class=\"pre\">kwargs</span></span></em><span class=\"sig-paren\">)</span><a class=\"headerlink\" href=\"#slidge.group.LegacyParticipant.send_file\" title=\"Link to this definition\">#</a></dt>\n-<dd><p>Send a single file from this <a class=\"reference internal\" href=\"../../../../glossary.html#term-XMPP-Entity\"><span class=\"xref std std-term\">XMPP Entity</span></a>.</p>\n-<dl class=\"field-list simple\">\n-<dt class=\"field-odd\">Parameters<span class=\"colon\">:</span></dt>\n-<dd class=\"field-odd\"><ul class=\"simple\">\n-<li><p><strong>file_path</strong> (<em>Optional</em><em>[</em><em>Union</em><em>[</em><a class=\"reference external\" href=\"/usr/share/doc/python3-doc/html/library/pathlib.html#pathlib.Path\" title=\"(in Python v3.11)\"><em>pathlib.Path</em></a><em>, </em><a class=\"reference external\" href=\"/usr/share/doc/python3-doc/html/library/stdtypes.html#str\" title=\"(in Python v3.11)\"><em>str</em></a><em>]</em><em>]</em>) \u2013 Path to the attachment</p></li>\n-<li><p><strong>data_stream</strong> (<em>Optional</em><em>[</em><em>IO</em><em>[</em><a class=\"reference external\" href=\"/usr/share/doc/python3-doc/html/library/stdtypes.html#bytes\" title=\"(in Python v3.11)\"><em>bytes</em></a><em>]</em><em>]</em>) \u2013 Alternatively, a stream of bytes (such as a File object)</p></li>\n-<li><p><strong>data</strong> (<em>Optional</em><em>[</em><a class=\"reference external\" href=\"/usr/share/doc/python3-doc/html/library/stdtypes.html#bytes\" title=\"(in Python v3.11)\"><em>bytes</em></a><em>]</em>) \u2013 Alternatively, a bytes object</p></li>\n-<li><p><strong>file_url</strong> (<em>Optional</em><em>[</em><a class=\"reference external\" href=\"/usr/share/doc/python3-doc/html/library/stdtypes.html#str\" title=\"(in Python v3.11)\"><em>str</em></a><em>]</em>) \u2013 Alternatively, a URL</p></li>\n-<li><p><strong>file_name</strong> (<em>Optional</em><em>[</em><a class=\"reference external\" href=\"/usr/share/doc/python3-doc/html/library/stdtypes.html#str\" title=\"(in Python v3.11)\"><em>str</em></a><em>]</em>) \u2013 How the file should be named.</p></li>\n-<li><p><strong>content_type</strong> (<em>Optional</em><em>[</em><a class=\"reference external\" href=\"/usr/share/doc/python3-doc/html/library/stdtypes.html#str\" title=\"(in Python v3.11)\"><em>str</em></a><em>]</em>) \u2013 MIME type, inferred from filename if not given</p></li>\n-<li><p><strong>legacy_msg_id</strong> (<em>Optional</em><em>[</em><em>slidge.util.types.LegacyMessageType</em><em>]</em>) \u2013 If you want to be able to transport read markers from the gateway\n-user to the legacy network, specify this</p></li>\n-<li><p><strong>reply_to</strong> (<em>Optional</em><em>[</em><a class=\"reference internal\" href=\"../util/types/index.html#slidge.util.types.MessageReference\" title=\"slidge.util.types.MessageReference\"><em>slidge.util.types.MessageReference</em></a><em>]</em>) \u2013 Quote another message (<a class=\"reference external\" href=\"https://xmpp.org/extensions/xep-0461.html\">XEP-0461</a>)</p></li>\n-<li><p><strong>when</strong> (<em>Optional</em><em>[</em><a class=\"reference external\" href=\"/usr/share/doc/python3-doc/html/library/datetime.html#datetime.datetime\" title=\"(in Python v3.11)\"><em>datetime.datetime</em></a><em>]</em>) \u2013 when the file was sent, for a \u201cdelay\u201d tag (<a class=\"reference external\" href=\"https://xmpp.org/extensions/xep-0203.html\">XEP-0203</a>)</p></li>\n-<li><p><strong>caption</strong> (<em>Optional</em><em>[</em><a class=\"reference external\" href=\"/usr/share/doc/python3-doc/html/library/stdtypes.html#str\" title=\"(in Python v3.11)\"><em>str</em></a><em>]</em>) \u2013 an optional text that is linked to the file</p></li>\n-<li><p><strong>legacy_file_id</strong> (<em>Optional</em><em>[</em><em>Union</em><em>[</em><a class=\"reference external\" href=\"/usr/share/doc/python3-doc/html/library/stdtypes.html#str\" title=\"(in Python v3.11)\"><em>str</em></a><em>, </em><a class=\"reference external\" href=\"/usr/share/doc/python3-doc/html/library/functions.html#int\" title=\"(in Python v3.11)\"><em>int</em></a><em>]</em><em>]</em>) \u2013 A unique identifier for the file on the legacy network.\n-Plugins should try their best to provide it, to avoid duplicates.</p></li>\n-<li><p><strong>thread</strong> (<em>Optional</em><em>[</em><em>slidge.util.types.LegacyThreadType</em><em>]</em>) \u2013 </p></li>\n-</ul>\n-</dd>\n-<dt class=\"field-even\">Return type<span class=\"colon\">:</span></dt>\n-<dd class=\"field-even\"><p><a class=\"reference external\" href=\"/usr/share/doc/python3-doc/html/library/stdtypes.html#tuple\" title=\"(in Python v3.11)\">tuple</a>[Optional[<a class=\"reference external\" href=\"/usr/share/doc/python3-doc/html/library/stdtypes.html#str\" title=\"(in Python v3.11)\">str</a>], <a class=\"reference external\" href=\"/usr/share/doc/python3-doc/html/library/stdtypes.html#list\" title=\"(in Python v3.11)\">list</a>[slixmpp.Message]]</p>\n-</dd>\n-</dl>\n-</dd></dl>\n-\n </dd></dl>\n \n <dl class=\"py class\">\n <dt class=\"sig sig-object py\" id=\"slidge.group.LegacyMUC\">\n <em class=\"property\"><span class=\"pre\">class</span><span class=\"w\"> </span></em><span class=\"sig-prename descclassname\"><span class=\"pre\">slidge.group.</span></span><span class=\"sig-name descname\"><span class=\"pre\">LegacyMUC</span></span><span class=\"sig-paren\">(</span><em class=\"sig-param\"><span class=\"n\"><span class=\"pre\">session</span></span></em>, <em class=\"sig-param\"><span class=\"n\"><span class=\"pre\">legacy_id</span></span></em>, <em class=\"sig-param\"><span class=\"n\"><span class=\"pre\">jid</span></span></em><span class=\"sig-paren\">)</span><a class=\"headerlink\" href=\"#slidge.group.LegacyMUC\" title=\"Link to this definition\">#</a></dt>\n <dd><p>A room, a.k.a. a Multi-User Chat.</p>\n <p>MUC instances are obtained by calling <a class=\"reference internal\" href=\"bookmarks/index.html#slidge.group.bookmarks.LegacyBookmarks\" title=\"slidge.group.bookmarks.LegacyBookmarks\"><code class=\"xref py py-meth docutils literal notranslate\"><span class=\"pre\">slidge.group.bookmarks.LegacyBookmarks()</span></code></a>\n@@ -670,43 +390,14 @@\n <dd class=\"field-odd\"><ul class=\"simple\">\n <li><p><strong>session</strong> (<a class=\"reference internal\" href=\"../core/session/index.html#slidge.core.session.BaseSession\" title=\"slidge.core.session.BaseSession\"><em>slidge.core.session.BaseSession</em></a>) \u2013 </p></li>\n <li><p><strong>legacy_id</strong> (<em>slidge.util.types.LegacyGroupIdType</em>) \u2013 </p></li>\n <li><p><strong>jid</strong> (<em>slixmpp.JID</em>) \u2013 </p></li>\n </ul>\n </dd>\n </dl>\n-<dl class=\"py property\">\n-<dt class=\"sig sig-object py\" id=\"slidge.group.LegacyMUC.avatar_id\">\n-<em class=\"property\"><span class=\"pre\">property</span><span class=\"w\"> </span></em><span class=\"sig-name descname\"><span class=\"pre\">avatar_id</span></span><em class=\"property\"><span class=\"p\"><span class=\"pre\">:</span></span><span class=\"w\"> </span><span class=\"pre\">slidge.util.types.AvatarIdType</span><span class=\"w\"> </span><span class=\"p\"><span class=\"pre\">|</span></span><span class=\"w\"> </span><a class=\"reference external\" href=\"/usr/share/doc/python3-doc/html/library/constants.html#None\" title=\"(in Python v3.11)\"><span class=\"pre\">None</span></a></em><a class=\"headerlink\" href=\"#slidge.group.LegacyMUC.avatar_id\" title=\"Link to this definition\">#</a></dt>\n-<dd><p>The unique ID of this entity\u2019s avatar.</p>\n-<dl class=\"field-list simple\">\n-<dt class=\"field-odd\">Return type<span class=\"colon\">:</span></dt>\n-<dd class=\"field-odd\"><p>Optional[slidge.util.types.AvatarIdType]</p>\n-</dd>\n-</dl>\n-</dd></dl>\n-\n-<dl class=\"py property\">\n-<dt class=\"sig sig-object py\" id=\"slidge.group.LegacyMUC.avatar\">\n-<em class=\"property\"><span class=\"pre\">property</span><span class=\"w\"> </span></em><span class=\"sig-name descname\"><span class=\"pre\">avatar</span></span><em class=\"property\"><span class=\"p\"><span class=\"pre\">:</span></span><span class=\"w\"> </span><span class=\"pre\">slidge.util.types.AvatarIdType</span><span class=\"w\"> </span><span class=\"p\"><span class=\"pre\">|</span></span><span class=\"w\"> </span><a class=\"reference external\" href=\"/usr/share/doc/python3-doc/html/library/constants.html#None\" title=\"(in Python v3.11)\"><span class=\"pre\">None</span></a></em><a class=\"headerlink\" href=\"#slidge.group.LegacyMUC.avatar\" title=\"Link to this definition\">#</a></dt>\n-<dd><p>This property can be used to set the avatar, but\n-<a class=\"reference internal\" href=\"../core/mixins/avatar/index.html#slidge.core.mixins.avatar.AvatarMixin.set_avatar\" title=\"slidge.core.mixins.avatar.AvatarMixin.set_avatar\"><code class=\"xref py py-meth docutils literal notranslate\"><span class=\"pre\">set_avatar()</span></code></a> should be preferred because you can\n-provide a unique ID for the avatar for efficient caching.\n-Setting this is OKish in case the avatar type is a URL or a local path\n-that can act as a legacy ID.</p>\n-<p>Python\u2019s <code class=\"docutils literal notranslate\"><span class=\"pre\">property</span></code> is abused here to maintain backwards\n-compatibility, but when getting it you actually get the avatar legacy\n-ID.</p>\n-<dl class=\"field-list simple\">\n-<dt class=\"field-odd\">Return type<span class=\"colon\">:</span></dt>\n-<dd class=\"field-odd\"><p>Optional[slidge.util.types.AvatarIdType]</p>\n-</dd>\n-</dl>\n-</dd></dl>\n-\n <dl class=\"py attribute\">\n <dt class=\"sig sig-object py\" id=\"slidge.group.LegacyMUC.STABLE_ARCHIVE\">\n <span class=\"sig-name descname\"><span class=\"pre\">STABLE_ARCHIVE</span></span><em class=\"property\"><span class=\"w\"> </span><span class=\"p\"><span class=\"pre\">=</span></span><span class=\"w\"> </span><span class=\"pre\">False</span></em><a class=\"headerlink\" href=\"#slidge.group.LegacyMUC.STABLE_ARCHIVE\" title=\"Link to this definition\">#</a></dt>\n <dd><p>Because legacy events like reactions, editions, etc. don\u2019t all map to a stanza\n with a proper legacy ID, slidge usually cannot guarantee the stability of the archive\n across restarts.</p>\n <p>Set this to True if you know what you\u2019re doing, but realistically, this can\u2019t\n@@ -928,16 +619,16 @@\n <li><p><strong>mime</strong> (<em>Optional</em><em>[</em><a class=\"reference external\" href=\"/usr/share/doc/python3-doc/html/library/stdtypes.html#str\" title=\"(in Python v3.11)\"><em>str</em></a><em>]</em>) \u2013 the mime type of the image. Since this is provided by\n the XMPP client, there is no guarantee that this is valid or\n correct.</p></li>\n </ul>\n </dd>\n <dt class=\"field-even\">Returns<span class=\"colon\">:</span></dt>\n <dd class=\"field-even\"><p>A unique avatar identifier, which will trigger\n-<a class=\"reference internal\" href=\"room/index.html#slidge.group.room.LegacyMUC.set_avatar\" title=\"slidge.group.room.LegacyMUC.set_avatar\"><code class=\"xref py py-meth docutils literal notranslate\"><span class=\"pre\">slidge.group.room.LegacyMUC.set_avatar()</span></code></a>. Alternatively, None, if\n-<a class=\"reference internal\" href=\"#slidge.group.LegacyMUC.set_avatar\" title=\"slidge.group.LegacyMUC.set_avatar\"><code class=\"xref py py-meth docutils literal notranslate\"><span class=\"pre\">LegacyMUC.set_avatar()</span></code></a> is meant to be awaited somewhere else.</p>\n+<code class=\"xref py py-meth docutils literal notranslate\"><span class=\"pre\">slidge.group.room.LegacyMUC.set_avatar()</span></code>. Alternatively, None, if\n+<code class=\"xref py py-meth docutils literal notranslate\"><span class=\"pre\">LegacyMUC.set_avatar()</span></code> is meant to be awaited somewhere else.</p>\n </dd>\n <dt class=\"field-odd\">Return type<span class=\"colon\">:</span></dt>\n <dd class=\"field-odd\"><p>Optional[Union[<a class=\"reference external\" href=\"/usr/share/doc/python3-doc/html/library/functions.html#int\" title=\"(in Python v3.11)\">int</a>, <a class=\"reference external\" href=\"/usr/share/doc/python3-doc/html/library/stdtypes.html#str\" title=\"(in Python v3.11)\">str</a>]]</p>\n </dd>\n </dl>\n </dd></dl>\n \n@@ -984,51 +675,14 @@\n <dl class=\"field-list simple\">\n <dt class=\"field-odd\">Parameters<span class=\"colon\">:</span></dt>\n <dd class=\"field-odd\"><p><strong>reason</strong> (<em>Optional</em><em>[</em><a class=\"reference external\" href=\"/usr/share/doc/python3-doc/html/library/stdtypes.html#str\" title=\"(in Python v3.11)\"><em>str</em></a><em>]</em>) \u2013 Optionally, a reason for the destruction</p>\n </dd>\n </dl>\n </dd></dl>\n \n-<dl class=\"py method\">\n-<dt class=\"sig sig-object py\" id=\"slidge.group.LegacyMUC.set_avatar\">\n-<em class=\"property\"><span class=\"pre\">async</span><span class=\"w\"> </span></em><span class=\"sig-name descname\"><span class=\"pre\">set_avatar</span></span><span class=\"sig-paren\">(</span><em class=\"sig-param\"><span class=\"n\"><span class=\"pre\">a</span></span></em>, <em class=\"sig-param\"><span class=\"n\"><span class=\"pre\">avatar_unique_id</span></span><span class=\"o\"><span class=\"pre\">=</span></span><span class=\"default_value\"><span class=\"pre\">None</span></span></em>, <em class=\"sig-param\"><span class=\"n\"><span class=\"pre\">blocking</span></span><span class=\"o\"><span class=\"pre\">=</span></span><span class=\"default_value\"><span class=\"pre\">False</span></span></em>, <em class=\"sig-param\"><span class=\"n\"><span class=\"pre\">cancel</span></span><span class=\"o\"><span class=\"pre\">=</span></span><span class=\"default_value\"><span class=\"pre\">True</span></span></em><span class=\"sig-paren\">)</span><a class=\"headerlink\" href=\"#slidge.group.LegacyMUC.set_avatar\" title=\"Link to this definition\">#</a></dt>\n-<dd><p>Set an avatar for this entity</p>\n-<dl class=\"field-list simple\">\n-<dt class=\"field-odd\">Parameters<span class=\"colon\">:</span></dt>\n-<dd class=\"field-odd\"><ul class=\"simple\">\n-<li><p><strong>a</strong> (<em>Optional</em><em>[</em><em>slidge.util.types.AvatarType</em><em>]</em>) \u2013 </p></li>\n-<li><p><strong>avatar_unique_id</strong> (<em>Optional</em><em>[</em><em>slidge.util.types.LegacyFileIdType</em><em>]</em>) \u2013 </p></li>\n-<li><p><strong>blocking</strong> \u2013 </p></li>\n-<li><p><strong>cancel</strong> \u2013 </p></li>\n-</ul>\n-</dd>\n-<dt class=\"field-even\">Return type<span class=\"colon\">:</span></dt>\n-<dd class=\"field-even\"><p>None</p>\n-</dd>\n-</dl>\n-</dd></dl>\n-\n-<dl class=\"py method\">\n-<dt class=\"sig sig-object py\" id=\"slidge.group.LegacyMUC.available_emojis\">\n-<em class=\"property\"><span class=\"pre\">async</span><span class=\"w\"> </span></em><span class=\"sig-name descname\"><span class=\"pre\">available_emojis</span></span><span class=\"sig-paren\">(</span><em class=\"sig-param\"><span class=\"n\"><span class=\"pre\">legacy_msg_id</span></span><span class=\"o\"><span class=\"pre\">=</span></span><span class=\"default_value\"><span class=\"pre\">None</span></span></em><span class=\"sig-paren\">)</span><a class=\"headerlink\" href=\"#slidge.group.LegacyMUC.available_emojis\" title=\"Link to this definition\">#</a></dt>\n-<dd><p>Override this to restrict the subset of reactions this recipient\n-can handle.</p>\n-<dl class=\"field-list simple\">\n-<dt class=\"field-odd\">Returns<span class=\"colon\">:</span></dt>\n-<dd class=\"field-odd\"><p>A set of emojis or None if any emoji is allowed</p>\n-</dd>\n-<dt class=\"field-even\">Parameters<span class=\"colon\">:</span></dt>\n-<dd class=\"field-even\"><p><strong>legacy_msg_id</strong> (<em>Optional</em><em>[</em><em>slidge.util.types.LegacyMessageType</em><em>]</em>) \u2013 </p>\n-</dd>\n-<dt class=\"field-odd\">Return type<span class=\"colon\">:</span></dt>\n-<dd class=\"field-odd\"><p>Optional[<a class=\"reference external\" href=\"/usr/share/doc/python3-doc/html/library/stdtypes.html#set\" title=\"(in Python v3.11)\">set</a>[<a class=\"reference external\" href=\"/usr/share/doc/python3-doc/html/library/stdtypes.html#str\" title=\"(in Python v3.11)\">str</a>]]</p>\n-</dd>\n-</dl>\n-</dd></dl>\n-\n </dd></dl>\n \n </section>\n </section>\n </section>\n \n </article>\n@@ -1102,38 +756,17 @@\n </ul>\n </li>\n <li><a class=\"reference internal\" href=\"#slidge.group.LegacyParticipant\"><code class=\"docutils literal notranslate\"><span class=\"pre\">LegacyParticipant</span></code></a><ul>\n <li><a class=\"reference internal\" href=\"#slidge.group.LegacyParticipant.send_initial_presence\"><code class=\"docutils literal notranslate\"><span class=\"pre\">LegacyParticipant.send_initial_presence()</span></code></a></li>\n <li><a class=\"reference internal\" href=\"#slidge.group.LegacyParticipant.leave\"><code class=\"docutils literal notranslate\"><span class=\"pre\">LegacyParticipant.leave()</span></code></a></li>\n <li><a class=\"reference internal\" href=\"#slidge.group.LegacyParticipant.kick\"><code class=\"docutils literal notranslate\"><span class=\"pre\">LegacyParticipant.kick()</span></code></a></li>\n <li><a class=\"reference internal\" href=\"#slidge.group.LegacyParticipant.ban\"><code class=\"docutils literal notranslate\"><span class=\"pre\">LegacyParticipant.ban()</span></code></a></li>\n-<li><a class=\"reference internal\" href=\"#slidge.group.LegacyParticipant.online\"><code class=\"docutils literal notranslate\"><span class=\"pre\">LegacyParticipant.online()</span></code></a></li>\n-<li><a class=\"reference internal\" href=\"#slidge.group.LegacyParticipant.away\"><code class=\"docutils literal notranslate\"><span class=\"pre\">LegacyParticipant.away()</span></code></a></li>\n-<li><a class=\"reference internal\" href=\"#slidge.group.LegacyParticipant.extended_away\"><code class=\"docutils literal notranslate\"><span class=\"pre\">LegacyParticipant.extended_away()</span></code></a></li>\n-<li><a class=\"reference internal\" href=\"#slidge.group.LegacyParticipant.busy\"><code class=\"docutils literal notranslate\"><span class=\"pre\">LegacyParticipant.busy()</span></code></a></li>\n-<li><a class=\"reference internal\" href=\"#slidge.group.LegacyParticipant.offline\"><code class=\"docutils literal notranslate\"><span class=\"pre\">LegacyParticipant.offline()</span></code></a></li>\n-<li><a class=\"reference internal\" href=\"#slidge.group.LegacyParticipant.invite_to\"><code class=\"docutils literal notranslate\"><span class=\"pre\">LegacyParticipant.invite_to()</span></code></a></li>\n-<li><a class=\"reference internal\" href=\"#slidge.group.LegacyParticipant.active\"><code class=\"docutils literal notranslate\"><span class=\"pre\">LegacyParticipant.active()</span></code></a></li>\n-<li><a class=\"reference internal\" href=\"#slidge.group.LegacyParticipant.composing\"><code class=\"docutils literal notranslate\"><span class=\"pre\">LegacyParticipant.composing()</span></code></a></li>\n-<li><a class=\"reference internal\" href=\"#slidge.group.LegacyParticipant.paused\"><code class=\"docutils literal notranslate\"><span class=\"pre\">LegacyParticipant.paused()</span></code></a></li>\n-<li><a class=\"reference internal\" href=\"#slidge.group.LegacyParticipant.inactive\"><code class=\"docutils literal notranslate\"><span class=\"pre\">LegacyParticipant.inactive()</span></code></a></li>\n-<li><a class=\"reference internal\" href=\"#slidge.group.LegacyParticipant.gone\"><code class=\"docutils literal notranslate\"><span class=\"pre\">LegacyParticipant.gone()</span></code></a></li>\n-<li><a class=\"reference internal\" href=\"#slidge.group.LegacyParticipant.ack\"><code class=\"docutils literal notranslate\"><span class=\"pre\">LegacyParticipant.ack()</span></code></a></li>\n-<li><a class=\"reference internal\" href=\"#slidge.group.LegacyParticipant.received\"><code class=\"docutils literal notranslate\"><span class=\"pre\">LegacyParticipant.received()</span></code></a></li>\n-<li><a class=\"reference internal\" href=\"#slidge.group.LegacyParticipant.displayed\"><code class=\"docutils literal notranslate\"><span class=\"pre\">LegacyParticipant.displayed()</span></code></a></li>\n-<li><a class=\"reference internal\" href=\"#slidge.group.LegacyParticipant.send_text\"><code class=\"docutils literal notranslate\"><span class=\"pre\">LegacyParticipant.send_text()</span></code></a></li>\n-<li><a class=\"reference internal\" href=\"#slidge.group.LegacyParticipant.correct\"><code class=\"docutils literal notranslate\"><span class=\"pre\">LegacyParticipant.correct()</span></code></a></li>\n-<li><a class=\"reference internal\" href=\"#slidge.group.LegacyParticipant.react\"><code class=\"docutils literal notranslate\"><span class=\"pre\">LegacyParticipant.react()</span></code></a></li>\n-<li><a class=\"reference internal\" href=\"#slidge.group.LegacyParticipant.retract\"><code class=\"docutils literal notranslate\"><span class=\"pre\">LegacyParticipant.retract()</span></code></a></li>\n-<li><a class=\"reference internal\" href=\"#slidge.group.LegacyParticipant.send_file\"><code class=\"docutils literal notranslate\"><span class=\"pre\">LegacyParticipant.send_file()</span></code></a></li>\n </ul>\n </li>\n <li><a class=\"reference internal\" href=\"#slidge.group.LegacyMUC\"><code class=\"docutils literal notranslate\"><span class=\"pre\">LegacyMUC</span></code></a><ul>\n-<li><a class=\"reference internal\" href=\"#slidge.group.LegacyMUC.avatar_id\"><code class=\"docutils literal notranslate\"><span class=\"pre\">LegacyMUC.avatar_id</span></code></a></li>\n-<li><a class=\"reference internal\" href=\"#slidge.group.LegacyMUC.avatar\"><code class=\"docutils literal notranslate\"><span class=\"pre\">LegacyMUC.avatar</span></code></a></li>\n <li><a class=\"reference internal\" href=\"#slidge.group.LegacyMUC.STABLE_ARCHIVE\"><code class=\"docutils literal notranslate\"><span class=\"pre\">LegacyMUC.STABLE_ARCHIVE</span></code></a></li>\n <li><a class=\"reference internal\" href=\"#slidge.group.LegacyMUC.KEEP_BACKFILLED_PARTICIPANTS\"><code class=\"docutils literal notranslate\"><span class=\"pre\">LegacyMUC.KEEP_BACKFILLED_PARTICIPANTS</span></code></a></li>\n <li><a class=\"reference internal\" href=\"#slidge.group.LegacyMUC.update_info\"><code class=\"docutils literal notranslate\"><span class=\"pre\">LegacyMUC.update_info()</span></code></a></li>\n <li><a class=\"reference internal\" href=\"#slidge.group.LegacyMUC.backfill\"><code class=\"docutils literal notranslate\"><span class=\"pre\">LegacyMUC.backfill()</span></code></a></li>\n <li><a class=\"reference internal\" href=\"#slidge.group.LegacyMUC.fill_participants\"><code class=\"docutils literal notranslate\"><span class=\"pre\">LegacyMUC.fill_participants()</span></code></a></li>\n <li><a class=\"reference internal\" href=\"#slidge.group.LegacyMUC.get_user_participant\"><code class=\"docutils literal notranslate\"><span class=\"pre\">LegacyMUC.get_user_participant()</span></code></a></li>\n <li><a class=\"reference internal\" href=\"#slidge.group.LegacyMUC.get_participant\"><code class=\"docutils literal notranslate\"><span class=\"pre\">LegacyMUC.get_participant()</span></code></a></li>\n@@ -1143,16 +776,14 @@\n <li><a class=\"reference internal\" href=\"#slidge.group.LegacyMUC.remove_participant\"><code class=\"docutils literal notranslate\"><span class=\"pre\">LegacyMUC.remove_participant()</span></code></a></li>\n <li><a class=\"reference internal\" href=\"#slidge.group.LegacyMUC.kick_resource\"><code class=\"docutils literal notranslate\"><span class=\"pre\">LegacyMUC.kick_resource()</span></code></a></li>\n <li><a class=\"reference internal\" href=\"#slidge.group.LegacyMUC.add_to_bookmarks\"><code class=\"docutils literal notranslate\"><span class=\"pre\">LegacyMUC.add_to_bookmarks()</span></code></a></li>\n <li><a class=\"reference internal\" href=\"#slidge.group.LegacyMUC.on_avatar\"><code class=\"docutils literal notranslate\"><span class=\"pre\">LegacyMUC.on_avatar()</span></code></a></li>\n <li><a class=\"reference internal\" href=\"#slidge.group.LegacyMUC.on_set_affiliation\"><code class=\"docutils literal notranslate\"><span class=\"pre\">LegacyMUC.on_set_affiliation()</span></code></a></li>\n <li><a class=\"reference internal\" href=\"#slidge.group.LegacyMUC.on_set_config\"><code class=\"docutils literal notranslate\"><span class=\"pre\">LegacyMUC.on_set_config()</span></code></a></li>\n <li><a class=\"reference internal\" href=\"#slidge.group.LegacyMUC.on_destroy_request\"><code class=\"docutils literal notranslate\"><span class=\"pre\">LegacyMUC.on_destroy_request()</span></code></a></li>\n-<li><a class=\"reference internal\" href=\"#slidge.group.LegacyMUC.set_avatar\"><code class=\"docutils literal notranslate\"><span class=\"pre\">LegacyMUC.set_avatar()</span></code></a></li>\n-<li><a class=\"reference internal\" href=\"#slidge.group.LegacyMUC.available_emojis\"><code class=\"docutils literal notranslate\"><span class=\"pre\">LegacyMUC.available_emojis()</span></code></a></li>\n </ul>\n </li>\n </ul>\n </li>\n </ul>\n </li>\n </ul>\n", "details": [{"source1": "html2text {}", "source2": "html2text {}", "unified_diff": "@@ -124,246 +124,23 @@\n used internally by slidge\n leave()#\n Call this when the participant leaves the room\n kick()#\n Call this when the participant is kicked from the room\n ban()#\n Call this when the participant is banned from the room\n- online(status=None, last_seen=None)#\n- Send an \u00e2\u0080\u009conline\u00e2\u0080\u009d presence from this contact to the user.\n- Parameters:\n- * status (Optional[str]) \u00e2\u0080\u0093 Arbitrary text, details of\n- the status, eg: \u00e2\u0080\u009cListening to Britney Spears\u00e2\u0080\u009d\n- * last_seen (Optional[datetime.datetime]) \u00e2\u0080\u0093 For XEP-\n- 0319\n- away(status=None, last_seen=None)#\n- Send an \u00e2\u0080\u009caway\u00e2\u0080\u009d presence from this contact to the user.\n- This is a global status, as opposed to LegacyContact.inactive()\n- which concerns a specific conversation, ie a specific \u00e2\u0080\u009cchat\n- window\u00e2\u0080\u009d\n- Parameters:\n- * status (Optional[str]) \u00e2\u0080\u0093 Arbitrary text, details of\n- the status, eg: \u00e2\u0080\u009cGone to fight capitalism\u00e2\u0080\u009d\n- * last_seen (Optional[datetime.datetime]) \u00e2\u0080\u0093 For XEP-\n- 0319\n- extended_away(status=None, last_seen=None)#\n- Send an \u00e2\u0080\u009cextended away\u00e2\u0080\u009d presence from this contact to the user.\n- This is a global status, as opposed to LegacyContact.inactive()\n- which concerns a specific conversation, ie a specific \u00e2\u0080\u009cchat\n- window\u00e2\u0080\u009d\n- Parameters:\n- * status (Optional[str]) \u00e2\u0080\u0093 Arbitrary text, details of\n- the status, eg: \u00e2\u0080\u009cGone to fight capitalism\u00e2\u0080\u009d\n- * last_seen (Optional[datetime.datetime]) \u00e2\u0080\u0093 For XEP-\n- 0319\n- busy(status=None, last_seen=None)#\n- Send a \u00e2\u0080\u009cbusy\u00e2\u0080\u009d (ie, \u00e2\u0080\u009cdnd\u00e2\u0080\u009d) presence from this contact to the\n- user,\n- Parameters:\n- * status (Optional[str]) \u00e2\u0080\u0093 eg: \u00e2\u0080\u009cTrying to make sense\n- of XEP-0100\u00e2\u0080\u009d\n- * last_seen (Optional[datetime.datetime]) \u00e2\u0080\u0093 For XEP-\n- 0319\n- offline(status=None, last_seen=None)#\n- Send an \u00e2\u0080\u009coffline\u00e2\u0080\u009d presence from this contact to the user.\n- Parameters:\n- * status (Optional[str]) \u00e2\u0080\u0093 eg: \u00e2\u0080\u009cTrying to make sense\n- of XEP-0100\u00e2\u0080\u009d\n- * last_seen (Optional[datetime.datetime]) \u00e2\u0080\u0093 For XEP-\n- 0319\n- invite_to(muc, reason=None, password=None, **send_kwargs)#\n- Send an invitation to join a group (XEP-0249) from this XMPP\n- Entity.\n- Parameters:\n- * muc (slidge.group.LegacyMUC) \u00e2\u0080\u0093 the muc the user is\n- invited to\n- * reason (Optional[str]) \u00e2\u0080\u0093 a text explaining why the\n- user should join this muc\n- * password (Optional[str]) \u00e2\u0080\u0093 maybe this will make sense\n- later? not sure\n- * send_kwargs \u00e2\u0080\u0093 additional kwargs to be passed to _send\n- () (internal use by slidge)\n- active(**kwargs)#\n- Send an \u00e2\u0080\u009cactive\u00e2\u0080\u009d chat state (XEP-0085) from this XMPP_Entity.\n- composing(**kwargs)#\n- Send a \u00e2\u0080\u009ccomposing\u00e2\u0080\u009d (ie \u00e2\u0080\u009ctyping notification\u00e2\u0080\u009d) chat state\n- (XEP-0085) from this XMPP_Entity.\n- paused(**kwargs)#\n- Send a \u00e2\u0080\u009cpaused\u00e2\u0080\u009d (ie \u00e2\u0080\u009ctyping paused notification\u00e2\u0080\u009d) chat\n- state (XEP-0085) from this XMPP_Entity.\n- inactive(**kwargs)#\n- Send an \u00e2\u0080\u009cinactive\u00e2\u0080\u009d (ie \u00e2\u0080\u009ccontact has not interacted with the\n- chat session interface for an intermediate period of time\u00e2\u0080\u009d) chat\n- state (XEP-0085) from this XMPP_Entity.\n- gone(**kwargs)#\n- Send a \u00e2\u0080\u009cgone\u00e2\u0080\u009d (ie \u00e2\u0080\u009ccontact has not interacted with the chat\n- session interface, system, or device for a relatively long period\n- of time\u00e2\u0080\u009d) chat state (XEP-0085) from this XMPP_Entity.\n- ack(legacy_msg_id, **kwargs)#\n- Send an \u00e2\u0080\u009cacknowledged\u00e2\u0080\u009d message marker (XEP-0333) from this XMPP\n- Entity.\n- Parameters:\n- legacy_msg_id (slidge.util.types.LegacyMessageType) \u00e2\u0080\u0093 The\n- message this marker refers to\n- received(legacy_msg_id, **kwargs)#\n- Send a \u00e2\u0080\u009creceived\u00e2\u0080\u009d message marker (XEP-0333) from this XMPP\n- Entity. If called on a LegacyContact, also send a delivery receipt\n- marker (XEP-0184).\n- Parameters:\n- legacy_msg_id (slidge.util.types.LegacyMessageType) \u00e2\u0080\u0093 The\n- message this marker refers to\n- displayed(legacy_msg_id, **kwargs)#\n- Send a \u00e2\u0080\u009cdisplayed\u00e2\u0080\u009d message marker (XEP-0333) from this XMPP\n- Entity.\n- Parameters:\n- legacy_msg_id (slidge.util.types.LegacyMessageType) \u00e2\u0080\u0093 The\n- message this marker refers to\n- send_text(body, legacy_msg_id=None, *, when=None, reply_to=None,\n- thread=None, hints=None, carbon=False, archive_only=False,\n- correction=False, correction_event_id=None, link_previews=None,\n- **send_kwargs)#\n- Send a text message from this XMPP_Entity.\n- Parameters:\n- * body (str) \u00e2\u0080\u0093 Content of the message\n- * legacy_msg_id (Optional\n- [slidge.util.types.LegacyMessageType]) \u00e2\u0080\u0093 If you want\n- to be able to transport read markers from the gateway\n- user to the legacy network, specify this\n- * when (Optional[datetime.datetime]) \u00e2\u0080\u0093 when the message\n- was sent, for a \u00e2\u0080\u009cdelay\u00e2\u0080\u009d tag (XEP-0203)\n- * reply_to (Optional[slidge.util.types.MessageReference])\n- \u00e2\u0080\u0093 Quote another message (XEP-0461)\n- * hints (Optional[Iterable\n- [slidge.util.types.ProcessingHint]]) \u00e2\u0080\u0093\n- * thread (Optional[slidge.util.types.LegacyThreadType])\n- \u00e2\u0080\u0093\n- * carbon \u00e2\u0080\u0093 (only used if called on a LegacyContact) Set\n- this to True if this is actually a message sent to the\n- LegacyContact by the User. Use this to synchronize\n- outgoing history for legacy official apps.\n- * correction \u00e2\u0080\u0093 whether this message is a correction or\n- not\n- * correction_event_id (Optional\n- [slidge.util.types.LegacyMessageType]) \u00e2\u0080\u0093 in the case\n- where an ID is associated with the legacy \u00e2\u0080\u0098correction\n- event\u00e2\u0080\u0099, specify it here to use it on the XMPP side.\n- If not specified, a random ID will be used.\n- * link_previews (Optional[list\n- [slidge.util.types.LinkPreview]]) \u00e2\u0080\u0093 A little of\n- sender (or server, or gateway)-generated previews of\n- URLs linked in the body.\n- * archive_only \u00e2\u0080\u0093 (only in groups) Do not send this\n- message to user, but store it in the archive. Meant to\n- be used during MUC.backfill()\n- correct(legacy_msg_id, new_text, *, when=None, reply_to=None,\n- thread=None, hints=None, carbon=False, archive_only=False,\n- correction_event_id=None, link_previews=None, **send_kwargs)#\n- Modify a message that was previously sent by this XMPP_Entity.\n- Uses last message correction (XEP-0308)\n- Parameters:\n- * new_text (str) \u00e2\u0080\u0093 New content of the message\n- * legacy_msg_id (slidge.util.types.LegacyMessageType) \u00e2\u0080\u0093\n- The legacy message ID of the message to correct\n- * when (Optional[datetime.datetime]) \u00e2\u0080\u0093 when the message\n- was sent, for a \u00e2\u0080\u009cdelay\u00e2\u0080\u009d tag (XEP-0203)\n- * reply_to (Optional[slidge.util.types.MessageReference])\n- \u00e2\u0080\u0093 Quote another message (XEP-0461)\n- * hints (Optional[Iterable\n- [slidge.util.types.ProcessingHint]]) \u00e2\u0080\u0093\n- * thread (Optional[slidge.util.types.LegacyThreadType])\n- \u00e2\u0080\u0093\n- * carbon \u00e2\u0080\u0093 (only in 1:1) Reflect a message sent to this\n- Contact by the user. Use this to synchronize outgoing\n- history for legacy official apps.\n- * archive_only \u00e2\u0080\u0093 (only in groups) Do not send this\n- message to user, but store it in the archive. Meant to\n- be used during MUC.backfill()\n- * correction_event_id (Optional\n- [slidge.util.types.LegacyMessageType]) \u00e2\u0080\u0093 in the case\n- where an ID is associated with the legacy \u00e2\u0080\u0098correction\n- event\u00e2\u0080\u0099, specify it here to use it on the XMPP side.\n- If not specified, a random ID will be used.\n- * link_previews (Optional[list\n- [slidge.util.types.LinkPreview]]) \u00e2\u0080\u0093 A little of\n- sender (or server, or gateway)-generated previews of\n- URLs linked in the body.\n- react(legacy_msg_id, emojis=(), thread=None, **kwargs)#\n- Send a reaction (XEP-0444) from this XMPP_Entity.\n- Parameters:\n- * legacy_msg_id (slidge.util.types.LegacyMessageType) \u00e2\u0080\u0093\n- The message which the reaction refers to.\n- * emojis (Iterable[str]) \u00e2\u0080\u0093 An iterable of emojis used\n- as reactions\n- * thread (Optional[slidge.util.types.LegacyThreadType])\n- \u00e2\u0080\u0093\n- retract(legacy_msg_id, thread=None, **kwargs)#\n- Send a message retraction (XEP-0424) from this XMPP_Entity.\n- Parameters:\n- * legacy_msg_id (slidge.util.types.LegacyMessageType) \u00e2\u0080\u0093\n- Legacy ID of the message to delete\n- * thread (Optional[slidge.util.types.LegacyThreadType])\n- \u00e2\u0080\u0093\n- asyncsend_file(file_path=None, legacy_msg_id=None, *, data_stream=None,\n- data=None, file_url=None, file_name=None, content_type=None,\n- reply_to=None, when=None, caption=None, legacy_file_id=None,\n- thread=None, **kwargs)#\n- Send a single file from this XMPP_Entity.\n- Parameters:\n- * file_path (Optional[Union[pathlib.Path,str]]) \u00e2\u0080\u0093 Path\n- to the attachment\n- * data_stream (Optional[IO[bytes]]) \u00e2\u0080\u0093 Alternatively, a\n- stream of bytes (such as a File object)\n- * data (Optional[bytes]) \u00e2\u0080\u0093 Alternatively, a bytes\n- object\n- * file_url (Optional[str]) \u00e2\u0080\u0093 Alternatively, a URL\n- * file_name (Optional[str]) \u00e2\u0080\u0093 How the file should be\n- named.\n- * content_type (Optional[str]) \u00e2\u0080\u0093 MIME type, inferred\n- from filename if not given\n- * legacy_msg_id (Optional\n- [slidge.util.types.LegacyMessageType]) \u00e2\u0080\u0093 If you want\n- to be able to transport read markers from the gateway\n- user to the legacy network, specify this\n- * reply_to (Optional[slidge.util.types.MessageReference])\n- \u00e2\u0080\u0093 Quote another message (XEP-0461)\n- * when (Optional[datetime.datetime]) \u00e2\u0080\u0093 when the file\n- was sent, for a \u00e2\u0080\u009cdelay\u00e2\u0080\u009d tag (XEP-0203)\n- * caption (Optional[str]) \u00e2\u0080\u0093 an optional text that is\n- linked to the file\n- * legacy_file_id (Optional[Union[str,int]]) \u00e2\u0080\u0093 A unique\n- identifier for the file on the legacy network. Plugins\n- should try their best to provide it, to avoid\n- duplicates.\n- * thread (Optional[slidge.util.types.LegacyThreadType])\n- \u00e2\u0080\u0093\n- Return type:\n- tuple[Optional[str], list[slixmpp.Message]]\n classslidge.group.LegacyMUC(session, legacy_id, jid)#\n A room, a.k.a. a Multi-User Chat.\n MUC instances are obtained by calling\n slidge.group.bookmarks.LegacyBookmarks() on the user\u00e2\u0080\u0099s\n slidge.core.session.BaseSession.\n Parameters:\n * session (slidge.core.session.BaseSession) \u00e2\u0080\u0093\n * legacy_id (slidge.util.types.LegacyGroupIdType) \u00e2\u0080\u0093\n * jid (slixmpp.JID) \u00e2\u0080\u0093\n- propertyavatar_id: slidge.util.types.AvatarIdType | None#\n- The unique ID of this entity\u00e2\u0080\u0099s avatar.\n- Return type:\n- Optional[slidge.util.types.AvatarIdType]\n- propertyavatar: slidge.util.types.AvatarIdType | None#\n- This property can be used to set the avatar, but set_avatar()\n- should be preferred because you can provide a unique ID for the\n- avatar for efficient caching. Setting this is OKish in case the\n- avatar type is a URL or a local path that can act as a legacy ID.\n- Python\u00e2\u0080\u0099s property is abused here to maintain backwards\n- compatibility, but when getting it you actually get the avatar\n- legacy ID.\n- Return type:\n- Optional[slidge.util.types.AvatarIdType]\n STABLE_ARCHIVE= False#\n Because legacy events like reactions, editions, etc. don\u00e2\u0080\u0099t all\n map to a stanza with a proper legacy ID, slidge usually cannot\n guarantee the stability of the archive across restarts.\n Set this to True if you know what you\u00e2\u0080\u0099re doing, but\n realistically, this can\u00e2\u0080\u0099t be set to True until archive is\n permanently stored on disk by slidge.\n@@ -530,34 +307,14 @@\n * description (Optional[str]) \u00e2\u0080\u0093 The new description of\n the room.\n abstract asyncon_destroy_request(reason)#\n Triggered when the user requests room destruction.\n Parameters:\n reason (Optional[str]) \u00e2\u0080\u0093 Optionally, a reason for the\n destruction\n- asyncset_avatar(a, avatar_unique_id=None, blocking=False, cancel=True)#\n- Set an avatar for this entity\n- Parameters:\n- * a (Optional[slidge.util.types.AvatarType]) \u00e2\u0080\u0093\n- * avatar_unique_id (Optional\n- [slidge.util.types.LegacyFileIdType]) \u00e2\u0080\u0093\n- * blocking \u00e2\u0080\u0093\n- * cancel \u00e2\u0080\u0093\n- Return type:\n- None\n- asyncavailable_emojis(legacy_msg_id=None)#\n- Override this to restrict the subset of reactions this recipient\n- can handle.\n- Returns:\n- A set of emojis or None if any emoji is allowed\n- Parameters:\n- legacy_msg_id (Optional[slidge.util.types.LegacyMessageType])\n- \u00e2\u0080\u0093\n- Return type:\n- Optional[set[str]]\n \n Next\n superduper\n \n Previous\n slidge.contact\n Copyright \u00a9 2024, Nicolas Cedilnik\n@@ -575,36 +332,15 @@\n # LegacyBookmarks.jid_username_to_legacy_id()\n # LegacyBookmarks.fill()\n # LegacyParticipant\n # LegacyParticipant.send_initial_presence()\n # LegacyParticipant.leave()\n # LegacyParticipant.kick()\n # LegacyParticipant.ban()\n- # LegacyParticipant.online()\n- # LegacyParticipant.away()\n- # LegacyParticipant.extended_away()\n- # LegacyParticipant.busy()\n- # LegacyParticipant.offline()\n- # LegacyParticipant.invite_to()\n- # LegacyParticipant.active()\n- # LegacyParticipant.composing()\n- # LegacyParticipant.paused()\n- # LegacyParticipant.inactive()\n- # LegacyParticipant.gone()\n- # LegacyParticipant.ack()\n- # LegacyParticipant.received()\n- # LegacyParticipant.displayed()\n- # LegacyParticipant.send_text()\n- # LegacyParticipant.correct()\n- # LegacyParticipant.react()\n- # LegacyParticipant.retract()\n- # LegacyParticipant.send_file()\n # LegacyMUC\n- # LegacyMUC.avatar_id\n- # LegacyMUC.avatar\n # LegacyMUC.STABLE_ARCHIVE\n # LegacyMUC.KEEP_BACKFILLED_PARTICIPANTS\n # LegacyMUC.update_info()\n # LegacyMUC.backfill()\n # LegacyMUC.fill_participants()\n # LegacyMUC.get_user_participant()\n # LegacyMUC.get_participant()\n@@ -614,9 +350,7 @@\n # LegacyMUC.remove_participant()\n # LegacyMUC.kick_resource()\n # LegacyMUC.add_to_bookmarks()\n # LegacyMUC.on_avatar()\n # LegacyMUC.on_set_affiliation()\n # LegacyMUC.on_set_config()\n # LegacyMUC.on_destroy_request()\n- # LegacyMUC.set_avatar()\n- # LegacyMUC.available_emojis()\n"}]}, {"source1": "./usr/share/doc/python-slidge-doc/html/dev/api/slidge/group/participant/index.html", "source2": "./usr/share/doc/python-slidge-doc/html/dev/api/slidge/group/participant/index.html", "unified_diff": "@@ -288,294 +288,14 @@\n \n <dl class=\"py method\">\n <dt class=\"sig sig-object py\" id=\"slidge.group.participant.LegacyParticipant.ban\">\n <span class=\"sig-name descname\"><span class=\"pre\">ban</span></span><span class=\"sig-paren\">(</span><span class=\"sig-paren\">)</span><a class=\"headerlink\" href=\"#slidge.group.participant.LegacyParticipant.ban\" title=\"Link to this definition\">#</a></dt>\n <dd><p>Call this when the participant is banned from the room</p>\n </dd></dl>\n \n-<dl class=\"py method\">\n-<dt class=\"sig sig-object py\" id=\"slidge.group.participant.LegacyParticipant.online\">\n-<span class=\"sig-name descname\"><span class=\"pre\">online</span></span><span class=\"sig-paren\">(</span><em class=\"sig-param\"><span class=\"n\"><span class=\"pre\">status</span></span><span class=\"o\"><span class=\"pre\">=</span></span><span class=\"default_value\"><span class=\"pre\">None</span></span></em>, <em class=\"sig-param\"><span class=\"n\"><span class=\"pre\">last_seen</span></span><span class=\"o\"><span class=\"pre\">=</span></span><span class=\"default_value\"><span class=\"pre\">None</span></span></em><span class=\"sig-paren\">)</span><a class=\"headerlink\" href=\"#slidge.group.participant.LegacyParticipant.online\" title=\"Link to this definition\">#</a></dt>\n-<dd><p>Send an \u201conline\u201d presence from this contact to the user.</p>\n-<dl class=\"field-list simple\">\n-<dt class=\"field-odd\">Parameters<span class=\"colon\">:</span></dt>\n-<dd class=\"field-odd\"><ul class=\"simple\">\n-<li><p><strong>status</strong> (<em>Optional</em><em>[</em><a class=\"reference external\" href=\"/usr/share/doc/python3-doc/html/library/stdtypes.html#str\" title=\"(in Python v3.11)\"><em>str</em></a><em>]</em>) \u2013 Arbitrary text, details of the status, eg: \u201cListening to Britney Spears\u201d</p></li>\n-<li><p><strong>last_seen</strong> (<em>Optional</em><em>[</em><a class=\"reference external\" href=\"/usr/share/doc/python3-doc/html/library/datetime.html#datetime.datetime\" title=\"(in Python v3.11)\"><em>datetime.datetime</em></a><em>]</em>) \u2013 For <a class=\"reference external\" href=\"https://xmpp.org/extensions/xep-0319.html\">XEP-0319</a></p></li>\n-</ul>\n-</dd>\n-</dl>\n-</dd></dl>\n-\n-<dl class=\"py method\">\n-<dt class=\"sig sig-object py\" id=\"slidge.group.participant.LegacyParticipant.away\">\n-<span class=\"sig-name descname\"><span class=\"pre\">away</span></span><span class=\"sig-paren\">(</span><em class=\"sig-param\"><span class=\"n\"><span class=\"pre\">status</span></span><span class=\"o\"><span class=\"pre\">=</span></span><span class=\"default_value\"><span class=\"pre\">None</span></span></em>, <em class=\"sig-param\"><span class=\"n\"><span class=\"pre\">last_seen</span></span><span class=\"o\"><span class=\"pre\">=</span></span><span class=\"default_value\"><span class=\"pre\">None</span></span></em><span class=\"sig-paren\">)</span><a class=\"headerlink\" href=\"#slidge.group.participant.LegacyParticipant.away\" title=\"Link to this definition\">#</a></dt>\n-<dd><p>Send an \u201caway\u201d presence from this contact to the user.</p>\n-<p>This is a global status, as opposed to <a class=\"reference internal\" href=\"../../contact/contact/index.html#slidge.contact.contact.LegacyContact.inactive\" title=\"slidge.contact.contact.LegacyContact.inactive\"><code class=\"xref py py-meth docutils literal notranslate\"><span class=\"pre\">LegacyContact.inactive()</span></code></a>\n-which concerns a specific conversation, ie a specific \u201cchat window\u201d</p>\n-<dl class=\"field-list simple\">\n-<dt class=\"field-odd\">Parameters<span class=\"colon\">:</span></dt>\n-<dd class=\"field-odd\"><ul class=\"simple\">\n-<li><p><strong>status</strong> (<em>Optional</em><em>[</em><a class=\"reference external\" href=\"/usr/share/doc/python3-doc/html/library/stdtypes.html#str\" title=\"(in Python v3.11)\"><em>str</em></a><em>]</em>) \u2013 Arbitrary text, details of the status, eg: \u201cGone to fight capitalism\u201d</p></li>\n-<li><p><strong>last_seen</strong> (<em>Optional</em><em>[</em><a class=\"reference external\" href=\"/usr/share/doc/python3-doc/html/library/datetime.html#datetime.datetime\" title=\"(in Python v3.11)\"><em>datetime.datetime</em></a><em>]</em>) \u2013 For <a class=\"reference external\" href=\"https://xmpp.org/extensions/xep-0319.html\">XEP-0319</a></p></li>\n-</ul>\n-</dd>\n-</dl>\n-</dd></dl>\n-\n-<dl class=\"py method\">\n-<dt class=\"sig sig-object py\" id=\"slidge.group.participant.LegacyParticipant.extended_away\">\n-<span class=\"sig-name descname\"><span class=\"pre\">extended_away</span></span><span class=\"sig-paren\">(</span><em class=\"sig-param\"><span class=\"n\"><span class=\"pre\">status</span></span><span class=\"o\"><span class=\"pre\">=</span></span><span class=\"default_value\"><span class=\"pre\">None</span></span></em>, <em class=\"sig-param\"><span class=\"n\"><span class=\"pre\">last_seen</span></span><span class=\"o\"><span class=\"pre\">=</span></span><span class=\"default_value\"><span class=\"pre\">None</span></span></em><span class=\"sig-paren\">)</span><a class=\"headerlink\" href=\"#slidge.group.participant.LegacyParticipant.extended_away\" title=\"Link to this definition\">#</a></dt>\n-<dd><p>Send an \u201cextended away\u201d presence from this contact to the user.</p>\n-<p>This is a global status, as opposed to <a class=\"reference internal\" href=\"../../contact/contact/index.html#slidge.contact.contact.LegacyContact.inactive\" title=\"slidge.contact.contact.LegacyContact.inactive\"><code class=\"xref py py-meth docutils literal notranslate\"><span class=\"pre\">LegacyContact.inactive()</span></code></a>\n-which concerns a specific conversation, ie a specific \u201cchat window\u201d</p>\n-<dl class=\"field-list simple\">\n-<dt class=\"field-odd\">Parameters<span class=\"colon\">:</span></dt>\n-<dd class=\"field-odd\"><ul class=\"simple\">\n-<li><p><strong>status</strong> (<em>Optional</em><em>[</em><a class=\"reference external\" href=\"/usr/share/doc/python3-doc/html/library/stdtypes.html#str\" title=\"(in Python v3.11)\"><em>str</em></a><em>]</em>) \u2013 Arbitrary text, details of the status, eg: \u201cGone to fight capitalism\u201d</p></li>\n-<li><p><strong>last_seen</strong> (<em>Optional</em><em>[</em><a class=\"reference external\" href=\"/usr/share/doc/python3-doc/html/library/datetime.html#datetime.datetime\" title=\"(in Python v3.11)\"><em>datetime.datetime</em></a><em>]</em>) \u2013 For <a class=\"reference external\" href=\"https://xmpp.org/extensions/xep-0319.html\">XEP-0319</a></p></li>\n-</ul>\n-</dd>\n-</dl>\n-</dd></dl>\n-\n-<dl class=\"py method\">\n-<dt class=\"sig sig-object py\" id=\"slidge.group.participant.LegacyParticipant.busy\">\n-<span class=\"sig-name descname\"><span class=\"pre\">busy</span></span><span class=\"sig-paren\">(</span><em class=\"sig-param\"><span class=\"n\"><span class=\"pre\">status</span></span><span class=\"o\"><span class=\"pre\">=</span></span><span class=\"default_value\"><span class=\"pre\">None</span></span></em>, <em class=\"sig-param\"><span class=\"n\"><span class=\"pre\">last_seen</span></span><span class=\"o\"><span class=\"pre\">=</span></span><span class=\"default_value\"><span class=\"pre\">None</span></span></em><span class=\"sig-paren\">)</span><a class=\"headerlink\" href=\"#slidge.group.participant.LegacyParticipant.busy\" title=\"Link to this definition\">#</a></dt>\n-<dd><p>Send a \u201cbusy\u201d (ie, \u201cdnd\u201d) presence from this contact to the user,</p>\n-<dl class=\"field-list simple\">\n-<dt class=\"field-odd\">Parameters<span class=\"colon\">:</span></dt>\n-<dd class=\"field-odd\"><ul class=\"simple\">\n-<li><p><strong>status</strong> (<em>Optional</em><em>[</em><a class=\"reference external\" href=\"/usr/share/doc/python3-doc/html/library/stdtypes.html#str\" title=\"(in Python v3.11)\"><em>str</em></a><em>]</em>) \u2013 eg: \u201cTrying to make sense of XEP-0100\u201d</p></li>\n-<li><p><strong>last_seen</strong> (<em>Optional</em><em>[</em><a class=\"reference external\" href=\"/usr/share/doc/python3-doc/html/library/datetime.html#datetime.datetime\" title=\"(in Python v3.11)\"><em>datetime.datetime</em></a><em>]</em>) \u2013 For <a class=\"reference external\" href=\"https://xmpp.org/extensions/xep-0319.html\">XEP-0319</a></p></li>\n-</ul>\n-</dd>\n-</dl>\n-</dd></dl>\n-\n-<dl class=\"py method\">\n-<dt class=\"sig sig-object py\" id=\"slidge.group.participant.LegacyParticipant.offline\">\n-<span class=\"sig-name descname\"><span class=\"pre\">offline</span></span><span class=\"sig-paren\">(</span><em class=\"sig-param\"><span class=\"n\"><span class=\"pre\">status</span></span><span class=\"o\"><span class=\"pre\">=</span></span><span class=\"default_value\"><span class=\"pre\">None</span></span></em>, <em class=\"sig-param\"><span class=\"n\"><span class=\"pre\">last_seen</span></span><span class=\"o\"><span class=\"pre\">=</span></span><span class=\"default_value\"><span class=\"pre\">None</span></span></em><span class=\"sig-paren\">)</span><a class=\"headerlink\" href=\"#slidge.group.participant.LegacyParticipant.offline\" title=\"Link to this definition\">#</a></dt>\n-<dd><p>Send an \u201coffline\u201d presence from this contact to the user.</p>\n-<dl class=\"field-list simple\">\n-<dt class=\"field-odd\">Parameters<span class=\"colon\">:</span></dt>\n-<dd class=\"field-odd\"><ul class=\"simple\">\n-<li><p><strong>status</strong> (<em>Optional</em><em>[</em><a class=\"reference external\" href=\"/usr/share/doc/python3-doc/html/library/stdtypes.html#str\" title=\"(in Python v3.11)\"><em>str</em></a><em>]</em>) \u2013 eg: \u201cTrying to make sense of XEP-0100\u201d</p></li>\n-<li><p><strong>last_seen</strong> (<em>Optional</em><em>[</em><a class=\"reference external\" href=\"/usr/share/doc/python3-doc/html/library/datetime.html#datetime.datetime\" title=\"(in Python v3.11)\"><em>datetime.datetime</em></a><em>]</em>) \u2013 For <a class=\"reference external\" href=\"https://xmpp.org/extensions/xep-0319.html\">XEP-0319</a></p></li>\n-</ul>\n-</dd>\n-</dl>\n-</dd></dl>\n-\n-<dl class=\"py method\">\n-<dt class=\"sig sig-object py\" id=\"slidge.group.participant.LegacyParticipant.invite_to\">\n-<span class=\"sig-name descname\"><span class=\"pre\">invite_to</span></span><span class=\"sig-paren\">(</span><em class=\"sig-param\"><span class=\"n\"><span class=\"pre\">muc</span></span></em>, <em class=\"sig-param\"><span class=\"n\"><span class=\"pre\">reason</span></span><span class=\"o\"><span class=\"pre\">=</span></span><span class=\"default_value\"><span class=\"pre\">None</span></span></em>, <em class=\"sig-param\"><span class=\"n\"><span class=\"pre\">password</span></span><span class=\"o\"><span class=\"pre\">=</span></span><span class=\"default_value\"><span class=\"pre\">None</span></span></em>, <em class=\"sig-param\"><span class=\"o\"><span class=\"pre\">**</span></span><span class=\"n\"><span class=\"pre\">send_kwargs</span></span></em><span class=\"sig-paren\">)</span><a class=\"headerlink\" href=\"#slidge.group.participant.LegacyParticipant.invite_to\" title=\"Link to this definition\">#</a></dt>\n-<dd><p>Send an invitation to join a group (<a class=\"reference external\" href=\"https://xmpp.org/extensions/xep-0249.html\">XEP-0249</a>) from this <a class=\"reference internal\" href=\"../../../../../glossary.html#term-XMPP-Entity\"><span class=\"xref std std-term\">XMPP Entity</span></a>.</p>\n-<dl class=\"field-list simple\">\n-<dt class=\"field-odd\">Parameters<span class=\"colon\">:</span></dt>\n-<dd class=\"field-odd\"><ul class=\"simple\">\n-<li><p><strong>muc</strong> (<a class=\"reference internal\" href=\"../index.html#slidge.group.LegacyMUC\" title=\"slidge.group.LegacyMUC\"><em>slidge.group.LegacyMUC</em></a>) \u2013 the muc the user is invited to</p></li>\n-<li><p><strong>reason</strong> (<em>Optional</em><em>[</em><a class=\"reference external\" href=\"/usr/share/doc/python3-doc/html/library/stdtypes.html#str\" title=\"(in Python v3.11)\"><em>str</em></a><em>]</em>) \u2013 a text explaining why the user should join this muc</p></li>\n-<li><p><strong>password</strong> (<em>Optional</em><em>[</em><a class=\"reference external\" href=\"/usr/share/doc/python3-doc/html/library/stdtypes.html#str\" title=\"(in Python v3.11)\"><em>str</em></a><em>]</em>) \u2013 maybe this will make sense later? not sure</p></li>\n-<li><p><strong>send_kwargs</strong> \u2013 additional kwargs to be passed to _send()\n-(internal use by slidge)</p></li>\n-</ul>\n-</dd>\n-</dl>\n-</dd></dl>\n-\n-<dl class=\"py method\">\n-<dt class=\"sig sig-object py\" id=\"slidge.group.participant.LegacyParticipant.active\">\n-<span class=\"sig-name descname\"><span class=\"pre\">active</span></span><span class=\"sig-paren\">(</span><em class=\"sig-param\"><span class=\"o\"><span class=\"pre\">**</span></span><span class=\"n\"><span class=\"pre\">kwargs</span></span></em><span class=\"sig-paren\">)</span><a class=\"headerlink\" href=\"#slidge.group.participant.LegacyParticipant.active\" title=\"Link to this definition\">#</a></dt>\n-<dd><p>Send an \u201cactive\u201d chat state (<a class=\"reference external\" href=\"https://xmpp.org/extensions/xep-0085.html\">XEP-0085</a>) from this\n-<a class=\"reference internal\" href=\"../../../../../glossary.html#term-XMPP-Entity\"><span class=\"xref std std-term\">XMPP Entity</span></a>.</p>\n-</dd></dl>\n-\n-<dl class=\"py method\">\n-<dt class=\"sig sig-object py\" id=\"slidge.group.participant.LegacyParticipant.composing\">\n-<span class=\"sig-name descname\"><span class=\"pre\">composing</span></span><span class=\"sig-paren\">(</span><em class=\"sig-param\"><span class=\"o\"><span class=\"pre\">**</span></span><span class=\"n\"><span class=\"pre\">kwargs</span></span></em><span class=\"sig-paren\">)</span><a class=\"headerlink\" href=\"#slidge.group.participant.LegacyParticipant.composing\" title=\"Link to this definition\">#</a></dt>\n-<dd><p>Send a \u201ccomposing\u201d (ie \u201ctyping notification\u201d) chat state (<a class=\"reference external\" href=\"https://xmpp.org/extensions/xep-0085.html\">XEP-0085</a>)\n-from this <a class=\"reference internal\" href=\"../../../../../glossary.html#term-XMPP-Entity\"><span class=\"xref std std-term\">XMPP Entity</span></a>.</p>\n-</dd></dl>\n-\n-<dl class=\"py method\">\n-<dt class=\"sig sig-object py\" id=\"slidge.group.participant.LegacyParticipant.paused\">\n-<span class=\"sig-name descname\"><span class=\"pre\">paused</span></span><span class=\"sig-paren\">(</span><em class=\"sig-param\"><span class=\"o\"><span class=\"pre\">**</span></span><span class=\"n\"><span class=\"pre\">kwargs</span></span></em><span class=\"sig-paren\">)</span><a class=\"headerlink\" href=\"#slidge.group.participant.LegacyParticipant.paused\" title=\"Link to this definition\">#</a></dt>\n-<dd><p>Send a \u201cpaused\u201d (ie \u201ctyping paused notification\u201d) chat state\n-(<a class=\"reference external\" href=\"https://xmpp.org/extensions/xep-0085.html\">XEP-0085</a>) from this <a class=\"reference internal\" href=\"../../../../../glossary.html#term-XMPP-Entity\"><span class=\"xref std std-term\">XMPP Entity</span></a>.</p>\n-</dd></dl>\n-\n-<dl class=\"py method\">\n-<dt class=\"sig sig-object py\" id=\"slidge.group.participant.LegacyParticipant.inactive\">\n-<span class=\"sig-name descname\"><span class=\"pre\">inactive</span></span><span class=\"sig-paren\">(</span><em class=\"sig-param\"><span class=\"o\"><span class=\"pre\">**</span></span><span class=\"n\"><span class=\"pre\">kwargs</span></span></em><span class=\"sig-paren\">)</span><a class=\"headerlink\" href=\"#slidge.group.participant.LegacyParticipant.inactive\" title=\"Link to this definition\">#</a></dt>\n-<dd><p>Send an \u201cinactive\u201d (ie \u201ccontact has not interacted with the chat session\n-interface for an intermediate period of time\u201d) chat state (<a class=\"reference external\" href=\"https://xmpp.org/extensions/xep-0085.html\">XEP-0085</a>)\n-from this <a class=\"reference internal\" href=\"../../../../../glossary.html#term-XMPP-Entity\"><span class=\"xref std std-term\">XMPP Entity</span></a>.</p>\n-</dd></dl>\n-\n-<dl class=\"py method\">\n-<dt class=\"sig sig-object py\" id=\"slidge.group.participant.LegacyParticipant.gone\">\n-<span class=\"sig-name descname\"><span class=\"pre\">gone</span></span><span class=\"sig-paren\">(</span><em class=\"sig-param\"><span class=\"o\"><span class=\"pre\">**</span></span><span class=\"n\"><span class=\"pre\">kwargs</span></span></em><span class=\"sig-paren\">)</span><a class=\"headerlink\" href=\"#slidge.group.participant.LegacyParticipant.gone\" title=\"Link to this definition\">#</a></dt>\n-<dd><p>Send a \u201cgone\u201d (ie \u201ccontact has not interacted with the chat session interface,\n-system, or device for a relatively long period of time\u201d) chat state\n-(<a class=\"reference external\" href=\"https://xmpp.org/extensions/xep-0085.html\">XEP-0085</a>) from this <a class=\"reference internal\" href=\"../../../../../glossary.html#term-XMPP-Entity\"><span class=\"xref std std-term\">XMPP Entity</span></a>.</p>\n-</dd></dl>\n-\n-<dl class=\"py method\">\n-<dt class=\"sig sig-object py\" id=\"slidge.group.participant.LegacyParticipant.ack\">\n-<span class=\"sig-name descname\"><span class=\"pre\">ack</span></span><span class=\"sig-paren\">(</span><em class=\"sig-param\"><span class=\"n\"><span class=\"pre\">legacy_msg_id</span></span></em>, <em class=\"sig-param\"><span class=\"o\"><span class=\"pre\">**</span></span><span class=\"n\"><span class=\"pre\">kwargs</span></span></em><span class=\"sig-paren\">)</span><a class=\"headerlink\" href=\"#slidge.group.participant.LegacyParticipant.ack\" title=\"Link to this definition\">#</a></dt>\n-<dd><p>Send an \u201cacknowledged\u201d message marker (<a class=\"reference external\" href=\"https://xmpp.org/extensions/xep-0333.html\">XEP-0333</a>) from this <a class=\"reference internal\" href=\"../../../../../glossary.html#term-XMPP-Entity\"><span class=\"xref std std-term\">XMPP Entity</span></a>.</p>\n-<dl class=\"field-list simple\">\n-<dt class=\"field-odd\">Parameters<span class=\"colon\">:</span></dt>\n-<dd class=\"field-odd\"><p><strong>legacy_msg_id</strong> (<em>slidge.util.types.LegacyMessageType</em>) \u2013 The message this marker refers to</p>\n-</dd>\n-</dl>\n-</dd></dl>\n-\n-<dl class=\"py method\">\n-<dt class=\"sig sig-object py\" id=\"slidge.group.participant.LegacyParticipant.received\">\n-<span class=\"sig-name descname\"><span class=\"pre\">received</span></span><span class=\"sig-paren\">(</span><em class=\"sig-param\"><span class=\"n\"><span class=\"pre\">legacy_msg_id</span></span></em>, <em class=\"sig-param\"><span class=\"o\"><span class=\"pre\">**</span></span><span class=\"n\"><span class=\"pre\">kwargs</span></span></em><span class=\"sig-paren\">)</span><a class=\"headerlink\" href=\"#slidge.group.participant.LegacyParticipant.received\" title=\"Link to this definition\">#</a></dt>\n-<dd><p>Send a \u201creceived\u201d message marker (<a class=\"reference external\" href=\"https://xmpp.org/extensions/xep-0333.html\">XEP-0333</a>) from this <a class=\"reference internal\" href=\"../../../../../glossary.html#term-XMPP-Entity\"><span class=\"xref std std-term\">XMPP Entity</span></a>.\n-If called on a <code class=\"xref py py-class docutils literal notranslate\"><span class=\"pre\">LegacyContact</span></code>, also send a delivery receipt\n-marker (<a class=\"reference external\" href=\"https://xmpp.org/extensions/xep-0184.html\">XEP-0184</a>).</p>\n-<dl class=\"field-list simple\">\n-<dt class=\"field-odd\">Parameters<span class=\"colon\">:</span></dt>\n-<dd class=\"field-odd\"><p><strong>legacy_msg_id</strong> (<em>slidge.util.types.LegacyMessageType</em>) \u2013 The message this marker refers to</p>\n-</dd>\n-</dl>\n-</dd></dl>\n-\n-<dl class=\"py method\">\n-<dt class=\"sig sig-object py\" id=\"slidge.group.participant.LegacyParticipant.displayed\">\n-<span class=\"sig-name descname\"><span class=\"pre\">displayed</span></span><span class=\"sig-paren\">(</span><em class=\"sig-param\"><span class=\"n\"><span class=\"pre\">legacy_msg_id</span></span></em>, <em class=\"sig-param\"><span class=\"o\"><span class=\"pre\">**</span></span><span class=\"n\"><span class=\"pre\">kwargs</span></span></em><span class=\"sig-paren\">)</span><a class=\"headerlink\" href=\"#slidge.group.participant.LegacyParticipant.displayed\" title=\"Link to this definition\">#</a></dt>\n-<dd><p>Send a \u201cdisplayed\u201d message marker (<a class=\"reference external\" href=\"https://xmpp.org/extensions/xep-0333.html\">XEP-0333</a>) from this <a class=\"reference internal\" href=\"../../../../../glossary.html#term-XMPP-Entity\"><span class=\"xref std std-term\">XMPP Entity</span></a>.</p>\n-<dl class=\"field-list simple\">\n-<dt class=\"field-odd\">Parameters<span class=\"colon\">:</span></dt>\n-<dd class=\"field-odd\"><p><strong>legacy_msg_id</strong> (<em>slidge.util.types.LegacyMessageType</em>) \u2013 The message this marker refers to</p>\n-</dd>\n-</dl>\n-</dd></dl>\n-\n-<dl class=\"py method\">\n-<dt class=\"sig sig-object py\" id=\"slidge.group.participant.LegacyParticipant.send_text\">\n-<span class=\"sig-name descname\"><span class=\"pre\">send_text</span></span><span class=\"sig-paren\">(</span><em class=\"sig-param\"><span class=\"n\"><span class=\"pre\">body</span></span></em>, <em class=\"sig-param\"><span class=\"n\"><span class=\"pre\">legacy_msg_id</span></span><span class=\"o\"><span class=\"pre\">=</span></span><span class=\"default_value\"><span class=\"pre\">None</span></span></em>, <em class=\"sig-param\"><span class=\"o\"><span class=\"pre\">*</span></span></em>, <em class=\"sig-param\"><span class=\"n\"><span class=\"pre\">when</span></span><span class=\"o\"><span class=\"pre\">=</span></span><span class=\"default_value\"><span class=\"pre\">None</span></span></em>, <em class=\"sig-param\"><span class=\"n\"><span class=\"pre\">reply_to</span></span><span class=\"o\"><span class=\"pre\">=</span></span><span class=\"default_value\"><span class=\"pre\">None</span></span></em>, <em class=\"sig-param\"><span class=\"n\"><span class=\"pre\">thread</span></span><span class=\"o\"><span class=\"pre\">=</span></span><span class=\"default_value\"><span class=\"pre\">None</span></span></em>, <em class=\"sig-param\"><span class=\"n\"><span class=\"pre\">hints</span></span><span class=\"o\"><span class=\"pre\">=</span></span><span class=\"default_value\"><span class=\"pre\">None</span></span></em>, <em class=\"sig-param\"><span class=\"n\"><span class=\"pre\">carbon</span></span><span class=\"o\"><span class=\"pre\">=</span></span><span class=\"default_value\"><span class=\"pre\">False</span></span></em>, <em class=\"sig-param\"><span class=\"n\"><span class=\"pre\">archive_only</span></span><span class=\"o\"><span class=\"pre\">=</span></span><span class=\"default_value\"><span class=\"pre\">False</span></span></em>, <em class=\"sig-param\"><span class=\"n\"><span class=\"pre\">correction</span></span><span class=\"o\"><span class=\"pre\">=</span></span><span class=\"default_value\"><span class=\"pre\">False</span></span></em>, <em class=\"sig-param\"><span class=\"n\"><span class=\"pre\">correction_event_id</span></span><span class=\"o\"><span class=\"pre\">=</span></span><span class=\"default_value\"><span class=\"pre\">None</span></span></em>, <em class=\"sig-param\"><span class=\"n\"><span class=\"pre\">link_previews</span></span><span class=\"o\"><span class=\"pre\">=</span></span><span class=\"default_value\"><span class=\"pre\">None</span></span></em>, <em class=\"sig-param\"><span class=\"o\"><span class=\"pre\">**</span></span><span class=\"n\"><span class=\"pre\">send_kwargs</span></span></em><span class=\"sig-paren\">)</span><a class=\"headerlink\" href=\"#slidge.group.participant.LegacyParticipant.send_text\" title=\"Link to this definition\">#</a></dt>\n-<dd><p>Send a text message from this <a class=\"reference internal\" href=\"../../../../../glossary.html#term-XMPP-Entity\"><span class=\"xref std std-term\">XMPP Entity</span></a>.</p>\n-<dl class=\"field-list simple\">\n-<dt class=\"field-odd\">Parameters<span class=\"colon\">:</span></dt>\n-<dd class=\"field-odd\"><ul class=\"simple\">\n-<li><p><strong>body</strong> (<a class=\"reference external\" href=\"/usr/share/doc/python3-doc/html/library/stdtypes.html#str\" title=\"(in Python v3.11)\"><em>str</em></a>) \u2013 Content of the message</p></li>\n-<li><p><strong>legacy_msg_id</strong> (<em>Optional</em><em>[</em><em>slidge.util.types.LegacyMessageType</em><em>]</em>) \u2013 If you want to be able to transport read markers from the gateway\n-user to the legacy network, specify this</p></li>\n-<li><p><strong>when</strong> (<em>Optional</em><em>[</em><a class=\"reference external\" href=\"/usr/share/doc/python3-doc/html/library/datetime.html#datetime.datetime\" title=\"(in Python v3.11)\"><em>datetime.datetime</em></a><em>]</em>) \u2013 when the message was sent, for a \u201cdelay\u201d tag (<a class=\"reference external\" href=\"https://xmpp.org/extensions/xep-0203.html\">XEP-0203</a>)</p></li>\n-<li><p><strong>reply_to</strong> (<em>Optional</em><em>[</em><a class=\"reference internal\" href=\"../../util/types/index.html#slidge.util.types.MessageReference\" title=\"slidge.util.types.MessageReference\"><em>slidge.util.types.MessageReference</em></a><em>]</em>) \u2013 Quote another message (<a class=\"reference external\" href=\"https://xmpp.org/extensions/xep-0461.html\">XEP-0461</a>)</p></li>\n-<li><p><strong>hints</strong> (<em>Optional</em><em>[</em><em>Iterable</em><em>[</em><em>slidge.util.types.ProcessingHint</em><em>]</em><em>]</em>) \u2013 </p></li>\n-<li><p><strong>thread</strong> (<em>Optional</em><em>[</em><em>slidge.util.types.LegacyThreadType</em><em>]</em>) \u2013 </p></li>\n-<li><p><strong>carbon</strong> \u2013 (only used if called on a <code class=\"xref py py-class docutils literal notranslate\"><span class=\"pre\">LegacyContact</span></code>)\n-Set this to <code class=\"docutils literal notranslate\"><span class=\"pre\">True</span></code> if this is actually a message sent <strong>to</strong> the\n-<code class=\"xref py py-class docutils literal notranslate\"><span class=\"pre\">LegacyContact</span></code> by the <a class=\"reference internal\" href=\"../../../../../glossary.html#term-User\"><span class=\"xref std std-term\">User</span></a>.\n-Use this to synchronize outgoing history for legacy official apps.</p></li>\n-<li><p><strong>correction</strong> \u2013 whether this message is a correction or not</p></li>\n-<li><p><strong>correction_event_id</strong> (<em>Optional</em><em>[</em><em>slidge.util.types.LegacyMessageType</em><em>]</em>) \u2013 in the case where an ID is associated with the legacy\n-\u2018correction event\u2019, specify it here to use it on the XMPP side. If not specified,\n-a random ID will be used.</p></li>\n-<li><p><strong>link_previews</strong> (<em>Optional</em><em>[</em><a class=\"reference external\" href=\"/usr/share/doc/python3-doc/html/library/stdtypes.html#list\" title=\"(in Python v3.11)\"><em>list</em></a><em>[</em><em>slidge.util.types.LinkPreview</em><em>]</em><em>]</em>) \u2013 A little of sender (or server, or gateway)-generated\n-previews of URLs linked in the body.</p></li>\n-<li><p><strong>archive_only</strong> \u2013 (only in groups) Do not send this message to user,\n-but store it in the archive. Meant to be used during <code class=\"docutils literal notranslate\"><span class=\"pre\">MUC.backfill()</span></code></p></li>\n-</ul>\n-</dd>\n-</dl>\n-</dd></dl>\n-\n-<dl class=\"py method\">\n-<dt class=\"sig sig-object py\" id=\"slidge.group.participant.LegacyParticipant.correct\">\n-<span class=\"sig-name descname\"><span class=\"pre\">correct</span></span><span class=\"sig-paren\">(</span><em class=\"sig-param\"><span class=\"n\"><span class=\"pre\">legacy_msg_id</span></span></em>, <em class=\"sig-param\"><span class=\"n\"><span class=\"pre\">new_text</span></span></em>, <em class=\"sig-param\"><span class=\"o\"><span class=\"pre\">*</span></span></em>, <em class=\"sig-param\"><span class=\"n\"><span class=\"pre\">when</span></span><span class=\"o\"><span class=\"pre\">=</span></span><span class=\"default_value\"><span class=\"pre\">None</span></span></em>, <em class=\"sig-param\"><span class=\"n\"><span class=\"pre\">reply_to</span></span><span class=\"o\"><span class=\"pre\">=</span></span><span class=\"default_value\"><span class=\"pre\">None</span></span></em>, <em class=\"sig-param\"><span class=\"n\"><span class=\"pre\">thread</span></span><span class=\"o\"><span class=\"pre\">=</span></span><span class=\"default_value\"><span class=\"pre\">None</span></span></em>, <em class=\"sig-param\"><span class=\"n\"><span class=\"pre\">hints</span></span><span class=\"o\"><span class=\"pre\">=</span></span><span class=\"default_value\"><span class=\"pre\">None</span></span></em>, <em class=\"sig-param\"><span class=\"n\"><span class=\"pre\">carbon</span></span><span class=\"o\"><span class=\"pre\">=</span></span><span class=\"default_value\"><span class=\"pre\">False</span></span></em>, <em class=\"sig-param\"><span class=\"n\"><span class=\"pre\">archive_only</span></span><span class=\"o\"><span class=\"pre\">=</span></span><span class=\"default_value\"><span class=\"pre\">False</span></span></em>, <em class=\"sig-param\"><span class=\"n\"><span class=\"pre\">correction_event_id</span></span><span class=\"o\"><span class=\"pre\">=</span></span><span class=\"default_value\"><span class=\"pre\">None</span></span></em>, <em class=\"sig-param\"><span class=\"n\"><span class=\"pre\">link_previews</span></span><span class=\"o\"><span class=\"pre\">=</span></span><span class=\"default_value\"><span class=\"pre\">None</span></span></em>, <em class=\"sig-param\"><span class=\"o\"><span class=\"pre\">**</span></span><span class=\"n\"><span class=\"pre\">send_kwargs</span></span></em><span class=\"sig-paren\">)</span><a class=\"headerlink\" href=\"#slidge.group.participant.LegacyParticipant.correct\" title=\"Link to this definition\">#</a></dt>\n-<dd><p>Modify a message that was previously sent by this <a class=\"reference internal\" href=\"../../../../../glossary.html#term-XMPP-Entity\"><span class=\"xref std std-term\">XMPP Entity</span></a>.</p>\n-<p>Uses last message correction (<a class=\"reference external\" href=\"https://xmpp.org/extensions/xep-0308.html\">XEP-0308</a>)</p>\n-<dl class=\"field-list simple\">\n-<dt class=\"field-odd\">Parameters<span class=\"colon\">:</span></dt>\n-<dd class=\"field-odd\"><ul class=\"simple\">\n-<li><p><strong>new_text</strong> (<a class=\"reference external\" href=\"/usr/share/doc/python3-doc/html/library/stdtypes.html#str\" title=\"(in Python v3.11)\"><em>str</em></a>) \u2013 New content of the message</p></li>\n-<li><p><strong>legacy_msg_id</strong> (<em>slidge.util.types.LegacyMessageType</em>) \u2013 The legacy message ID of the message to correct</p></li>\n-<li><p><strong>when</strong> (<em>Optional</em><em>[</em><a class=\"reference external\" href=\"/usr/share/doc/python3-doc/html/library/datetime.html#datetime.datetime\" title=\"(in Python v3.11)\"><em>datetime.datetime</em></a><em>]</em>) \u2013 when the message was sent, for a \u201cdelay\u201d tag (<a class=\"reference external\" href=\"https://xmpp.org/extensions/xep-0203.html\">XEP-0203</a>)</p></li>\n-<li><p><strong>reply_to</strong> (<em>Optional</em><em>[</em><a class=\"reference internal\" href=\"../../util/types/index.html#slidge.util.types.MessageReference\" title=\"slidge.util.types.MessageReference\"><em>slidge.util.types.MessageReference</em></a><em>]</em>) \u2013 Quote another message (<a class=\"reference external\" href=\"https://xmpp.org/extensions/xep-0461.html\">XEP-0461</a>)</p></li>\n-<li><p><strong>hints</strong> (<em>Optional</em><em>[</em><em>Iterable</em><em>[</em><em>slidge.util.types.ProcessingHint</em><em>]</em><em>]</em>) \u2013 </p></li>\n-<li><p><strong>thread</strong> (<em>Optional</em><em>[</em><em>slidge.util.types.LegacyThreadType</em><em>]</em>) \u2013 </p></li>\n-<li><p><strong>carbon</strong> \u2013 (only in 1:1) Reflect a message sent to this <code class=\"docutils literal notranslate\"><span class=\"pre\">Contact</span></code> by the user.\n-Use this to synchronize outgoing history for legacy official apps.</p></li>\n-<li><p><strong>archive_only</strong> \u2013 (only in groups) Do not send this message to user,\n-but store it in the archive. Meant to be used during <code class=\"docutils literal notranslate\"><span class=\"pre\">MUC.backfill()</span></code></p></li>\n-<li><p><strong>correction_event_id</strong> (<em>Optional</em><em>[</em><em>slidge.util.types.LegacyMessageType</em><em>]</em>) \u2013 in the case where an ID is associated with the legacy\n-\u2018correction event\u2019, specify it here to use it on the XMPP side. If not specified,\n-a random ID will be used.</p></li>\n-<li><p><strong>link_previews</strong> (<em>Optional</em><em>[</em><a class=\"reference external\" href=\"/usr/share/doc/python3-doc/html/library/stdtypes.html#list\" title=\"(in Python v3.11)\"><em>list</em></a><em>[</em><em>slidge.util.types.LinkPreview</em><em>]</em><em>]</em>) \u2013 A little of sender (or server, or gateway)-generated\n-previews of URLs linked in the body.</p></li>\n-</ul>\n-</dd>\n-</dl>\n-</dd></dl>\n-\n-<dl class=\"py method\">\n-<dt class=\"sig sig-object py\" id=\"slidge.group.participant.LegacyParticipant.react\">\n-<span class=\"sig-name descname\"><span class=\"pre\">react</span></span><span class=\"sig-paren\">(</span><em class=\"sig-param\"><span class=\"n\"><span class=\"pre\">legacy_msg_id</span></span></em>, <em class=\"sig-param\"><span class=\"n\"><span class=\"pre\">emojis</span></span><span class=\"o\"><span class=\"pre\">=</span></span><span class=\"default_value\"><span class=\"pre\">()</span></span></em>, <em class=\"sig-param\"><span class=\"n\"><span class=\"pre\">thread</span></span><span class=\"o\"><span class=\"pre\">=</span></span><span class=\"default_value\"><span class=\"pre\">None</span></span></em>, <em class=\"sig-param\"><span class=\"o\"><span class=\"pre\">**</span></span><span class=\"n\"><span class=\"pre\">kwargs</span></span></em><span class=\"sig-paren\">)</span><a class=\"headerlink\" href=\"#slidge.group.participant.LegacyParticipant.react\" title=\"Link to this definition\">#</a></dt>\n-<dd><p>Send a reaction (<a class=\"reference external\" href=\"https://xmpp.org/extensions/xep-0444.html\">XEP-0444</a>) from this <a class=\"reference internal\" href=\"../../../../../glossary.html#term-XMPP-Entity\"><span class=\"xref std std-term\">XMPP Entity</span></a>.</p>\n-<dl class=\"field-list simple\">\n-<dt class=\"field-odd\">Parameters<span class=\"colon\">:</span></dt>\n-<dd class=\"field-odd\"><ul class=\"simple\">\n-<li><p><strong>legacy_msg_id</strong> (<em>slidge.util.types.LegacyMessageType</em>) \u2013 The message which the reaction refers to.</p></li>\n-<li><p><strong>emojis</strong> (<em>Iterable</em><em>[</em><a class=\"reference external\" href=\"/usr/share/doc/python3-doc/html/library/stdtypes.html#str\" title=\"(in Python v3.11)\"><em>str</em></a><em>]</em>) \u2013 An iterable of emojis used as reactions</p></li>\n-<li><p><strong>thread</strong> (<em>Optional</em><em>[</em><em>slidge.util.types.LegacyThreadType</em><em>]</em>) \u2013 </p></li>\n-</ul>\n-</dd>\n-</dl>\n-</dd></dl>\n-\n-<dl class=\"py method\">\n-<dt class=\"sig sig-object py\" id=\"slidge.group.participant.LegacyParticipant.retract\">\n-<span class=\"sig-name descname\"><span class=\"pre\">retract</span></span><span class=\"sig-paren\">(</span><em class=\"sig-param\"><span class=\"n\"><span class=\"pre\">legacy_msg_id</span></span></em>, <em class=\"sig-param\"><span class=\"n\"><span class=\"pre\">thread</span></span><span class=\"o\"><span class=\"pre\">=</span></span><span class=\"default_value\"><span class=\"pre\">None</span></span></em>, <em class=\"sig-param\"><span class=\"o\"><span class=\"pre\">**</span></span><span class=\"n\"><span class=\"pre\">kwargs</span></span></em><span class=\"sig-paren\">)</span><a class=\"headerlink\" href=\"#slidge.group.participant.LegacyParticipant.retract\" title=\"Link to this definition\">#</a></dt>\n-<dd><p>Send a message retraction (<a class=\"reference external\" href=\"https://xmpp.org/extensions/xep-0424.html\">XEP-0424</a>) from this <a class=\"reference internal\" href=\"../../../../../glossary.html#term-XMPP-Entity\"><span class=\"xref std std-term\">XMPP Entity</span></a>.</p>\n-<dl class=\"field-list simple\">\n-<dt class=\"field-odd\">Parameters<span class=\"colon\">:</span></dt>\n-<dd class=\"field-odd\"><ul class=\"simple\">\n-<li><p><strong>legacy_msg_id</strong> (<em>slidge.util.types.LegacyMessageType</em>) \u2013 Legacy ID of the message to delete</p></li>\n-<li><p><strong>thread</strong> (<em>Optional</em><em>[</em><em>slidge.util.types.LegacyThreadType</em><em>]</em>) \u2013 </p></li>\n-</ul>\n-</dd>\n-</dl>\n-</dd></dl>\n-\n-<dl class=\"py method\">\n-<dt class=\"sig sig-object py\" id=\"slidge.group.participant.LegacyParticipant.send_file\">\n-<em class=\"property\"><span class=\"pre\">async</span><span class=\"w\"> </span></em><span class=\"sig-name descname\"><span class=\"pre\">send_file</span></span><span class=\"sig-paren\">(</span><em class=\"sig-param\"><span class=\"n\"><span class=\"pre\">file_path</span></span><span class=\"o\"><span class=\"pre\">=</span></span><span class=\"default_value\"><span class=\"pre\">None</span></span></em>, <em class=\"sig-param\"><span class=\"n\"><span class=\"pre\">legacy_msg_id</span></span><span class=\"o\"><span class=\"pre\">=</span></span><span class=\"default_value\"><span class=\"pre\">None</span></span></em>, <em class=\"sig-param\"><span class=\"o\"><span class=\"pre\">*</span></span></em>, <em class=\"sig-param\"><span class=\"n\"><span class=\"pre\">data_stream</span></span><span class=\"o\"><span class=\"pre\">=</span></span><span class=\"default_value\"><span class=\"pre\">None</span></span></em>, <em class=\"sig-param\"><span class=\"n\"><span class=\"pre\">data</span></span><span class=\"o\"><span class=\"pre\">=</span></span><span class=\"default_value\"><span class=\"pre\">None</span></span></em>, <em class=\"sig-param\"><span class=\"n\"><span class=\"pre\">file_url</span></span><span class=\"o\"><span class=\"pre\">=</span></span><span class=\"default_value\"><span class=\"pre\">None</span></span></em>, <em class=\"sig-param\"><span class=\"n\"><span class=\"pre\">file_name</span></span><span class=\"o\"><span class=\"pre\">=</span></span><span class=\"default_value\"><span class=\"pre\">None</span></span></em>, <em class=\"sig-param\"><span class=\"n\"><span class=\"pre\">content_type</span></span><span class=\"o\"><span class=\"pre\">=</span></span><span class=\"default_value\"><span class=\"pre\">None</span></span></em>, <em class=\"sig-param\"><span class=\"n\"><span class=\"pre\">reply_to</span></span><span class=\"o\"><span class=\"pre\">=</span></span><span class=\"default_value\"><span class=\"pre\">None</span></span></em>, <em class=\"sig-param\"><span class=\"n\"><span class=\"pre\">when</span></span><span class=\"o\"><span class=\"pre\">=</span></span><span class=\"default_value\"><span class=\"pre\">None</span></span></em>, <em class=\"sig-param\"><span class=\"n\"><span class=\"pre\">caption</span></span><span class=\"o\"><span class=\"pre\">=</span></span><span class=\"default_value\"><span class=\"pre\">None</span></span></em>, <em class=\"sig-param\"><span class=\"n\"><span class=\"pre\">legacy_file_id</span></span><span class=\"o\"><span class=\"pre\">=</span></span><span class=\"default_value\"><span class=\"pre\">None</span></span></em>, <em class=\"sig-param\"><span class=\"n\"><span class=\"pre\">thread</span></span><span class=\"o\"><span class=\"pre\">=</span></span><span class=\"default_value\"><span class=\"pre\">None</span></span></em>, <em class=\"sig-param\"><span class=\"o\"><span class=\"pre\">**</span></span><span class=\"n\"><span class=\"pre\">kwargs</span></span></em><span class=\"sig-paren\">)</span><a class=\"headerlink\" href=\"#slidge.group.participant.LegacyParticipant.send_file\" title=\"Link to this definition\">#</a></dt>\n-<dd><p>Send a single file from this <a class=\"reference internal\" href=\"../../../../../glossary.html#term-XMPP-Entity\"><span class=\"xref std std-term\">XMPP Entity</span></a>.</p>\n-<dl class=\"field-list simple\">\n-<dt class=\"field-odd\">Parameters<span class=\"colon\">:</span></dt>\n-<dd class=\"field-odd\"><ul class=\"simple\">\n-<li><p><strong>file_path</strong> (<em>Optional</em><em>[</em><em>Union</em><em>[</em><a class=\"reference external\" href=\"/usr/share/doc/python3-doc/html/library/pathlib.html#pathlib.Path\" title=\"(in Python v3.11)\"><em>pathlib.Path</em></a><em>, </em><a class=\"reference external\" href=\"/usr/share/doc/python3-doc/html/library/stdtypes.html#str\" title=\"(in Python v3.11)\"><em>str</em></a><em>]</em><em>]</em>) \u2013 Path to the attachment</p></li>\n-<li><p><strong>data_stream</strong> (<em>Optional</em><em>[</em><em>IO</em><em>[</em><a class=\"reference external\" href=\"/usr/share/doc/python3-doc/html/library/stdtypes.html#bytes\" title=\"(in Python v3.11)\"><em>bytes</em></a><em>]</em><em>]</em>) \u2013 Alternatively, a stream of bytes (such as a File object)</p></li>\n-<li><p><strong>data</strong> (<em>Optional</em><em>[</em><a class=\"reference external\" href=\"/usr/share/doc/python3-doc/html/library/stdtypes.html#bytes\" title=\"(in Python v3.11)\"><em>bytes</em></a><em>]</em>) \u2013 Alternatively, a bytes object</p></li>\n-<li><p><strong>file_url</strong> (<em>Optional</em><em>[</em><a class=\"reference external\" href=\"/usr/share/doc/python3-doc/html/library/stdtypes.html#str\" title=\"(in Python v3.11)\"><em>str</em></a><em>]</em>) \u2013 Alternatively, a URL</p></li>\n-<li><p><strong>file_name</strong> (<em>Optional</em><em>[</em><a class=\"reference external\" href=\"/usr/share/doc/python3-doc/html/library/stdtypes.html#str\" title=\"(in Python v3.11)\"><em>str</em></a><em>]</em>) \u2013 How the file should be named.</p></li>\n-<li><p><strong>content_type</strong> (<em>Optional</em><em>[</em><a class=\"reference external\" href=\"/usr/share/doc/python3-doc/html/library/stdtypes.html#str\" title=\"(in Python v3.11)\"><em>str</em></a><em>]</em>) \u2013 MIME type, inferred from filename if not given</p></li>\n-<li><p><strong>legacy_msg_id</strong> (<em>Optional</em><em>[</em><em>slidge.util.types.LegacyMessageType</em><em>]</em>) \u2013 If you want to be able to transport read markers from the gateway\n-user to the legacy network, specify this</p></li>\n-<li><p><strong>reply_to</strong> (<em>Optional</em><em>[</em><a class=\"reference internal\" href=\"../../util/types/index.html#slidge.util.types.MessageReference\" title=\"slidge.util.types.MessageReference\"><em>slidge.util.types.MessageReference</em></a><em>]</em>) \u2013 Quote another message (<a class=\"reference external\" href=\"https://xmpp.org/extensions/xep-0461.html\">XEP-0461</a>)</p></li>\n-<li><p><strong>when</strong> (<em>Optional</em><em>[</em><a class=\"reference external\" href=\"/usr/share/doc/python3-doc/html/library/datetime.html#datetime.datetime\" title=\"(in Python v3.11)\"><em>datetime.datetime</em></a><em>]</em>) \u2013 when the file was sent, for a \u201cdelay\u201d tag (<a class=\"reference external\" href=\"https://xmpp.org/extensions/xep-0203.html\">XEP-0203</a>)</p></li>\n-<li><p><strong>caption</strong> (<em>Optional</em><em>[</em><a class=\"reference external\" href=\"/usr/share/doc/python3-doc/html/library/stdtypes.html#str\" title=\"(in Python v3.11)\"><em>str</em></a><em>]</em>) \u2013 an optional text that is linked to the file</p></li>\n-<li><p><strong>legacy_file_id</strong> (<em>Optional</em><em>[</em><em>Union</em><em>[</em><a class=\"reference external\" href=\"/usr/share/doc/python3-doc/html/library/stdtypes.html#str\" title=\"(in Python v3.11)\"><em>str</em></a><em>, </em><a class=\"reference external\" href=\"/usr/share/doc/python3-doc/html/library/functions.html#int\" title=\"(in Python v3.11)\"><em>int</em></a><em>]</em><em>]</em>) \u2013 A unique identifier for the file on the legacy network.\n-Plugins should try their best to provide it, to avoid duplicates.</p></li>\n-<li><p><strong>thread</strong> (<em>Optional</em><em>[</em><em>slidge.util.types.LegacyThreadType</em><em>]</em>) \u2013 </p></li>\n-</ul>\n-</dd>\n-<dt class=\"field-even\">Return type<span class=\"colon\">:</span></dt>\n-<dd class=\"field-even\"><p><a class=\"reference external\" href=\"/usr/share/doc/python3-doc/html/library/stdtypes.html#tuple\" title=\"(in Python v3.11)\">tuple</a>[Optional[<a class=\"reference external\" href=\"/usr/share/doc/python3-doc/html/library/stdtypes.html#str\" title=\"(in Python v3.11)\">str</a>], <a class=\"reference external\" href=\"/usr/share/doc/python3-doc/html/library/stdtypes.html#list\" title=\"(in Python v3.11)\">list</a>[slixmpp.Message]]</p>\n-</dd>\n-</dl>\n-</dd></dl>\n-\n </dd></dl>\n \n </section>\n </section>\n </section>\n \n </article>\n@@ -619,33 +339,14 @@\n <li><a class=\"reference internal\" href=\"#module-contents\">Module Contents</a><ul>\n <li><a class=\"reference internal\" href=\"#classes\">Classes</a><ul>\n <li><a class=\"reference internal\" href=\"#slidge.group.participant.LegacyParticipant\"><code class=\"docutils literal notranslate\"><span class=\"pre\">LegacyParticipant</span></code></a><ul>\n <li><a class=\"reference internal\" href=\"#slidge.group.participant.LegacyParticipant.send_initial_presence\"><code class=\"docutils literal notranslate\"><span class=\"pre\">LegacyParticipant.send_initial_presence()</span></code></a></li>\n <li><a class=\"reference internal\" href=\"#slidge.group.participant.LegacyParticipant.leave\"><code class=\"docutils literal notranslate\"><span class=\"pre\">LegacyParticipant.leave()</span></code></a></li>\n <li><a class=\"reference internal\" href=\"#slidge.group.participant.LegacyParticipant.kick\"><code class=\"docutils literal notranslate\"><span class=\"pre\">LegacyParticipant.kick()</span></code></a></li>\n <li><a class=\"reference internal\" href=\"#slidge.group.participant.LegacyParticipant.ban\"><code class=\"docutils literal notranslate\"><span class=\"pre\">LegacyParticipant.ban()</span></code></a></li>\n-<li><a class=\"reference internal\" href=\"#slidge.group.participant.LegacyParticipant.online\"><code class=\"docutils literal notranslate\"><span class=\"pre\">LegacyParticipant.online()</span></code></a></li>\n-<li><a class=\"reference internal\" href=\"#slidge.group.participant.LegacyParticipant.away\"><code class=\"docutils literal notranslate\"><span class=\"pre\">LegacyParticipant.away()</span></code></a></li>\n-<li><a class=\"reference internal\" href=\"#slidge.group.participant.LegacyParticipant.extended_away\"><code class=\"docutils literal notranslate\"><span class=\"pre\">LegacyParticipant.extended_away()</span></code></a></li>\n-<li><a class=\"reference internal\" href=\"#slidge.group.participant.LegacyParticipant.busy\"><code class=\"docutils literal notranslate\"><span class=\"pre\">LegacyParticipant.busy()</span></code></a></li>\n-<li><a class=\"reference internal\" href=\"#slidge.group.participant.LegacyParticipant.offline\"><code class=\"docutils literal notranslate\"><span class=\"pre\">LegacyParticipant.offline()</span></code></a></li>\n-<li><a class=\"reference internal\" href=\"#slidge.group.participant.LegacyParticipant.invite_to\"><code class=\"docutils literal notranslate\"><span class=\"pre\">LegacyParticipant.invite_to()</span></code></a></li>\n-<li><a class=\"reference internal\" href=\"#slidge.group.participant.LegacyParticipant.active\"><code class=\"docutils literal notranslate\"><span class=\"pre\">LegacyParticipant.active()</span></code></a></li>\n-<li><a class=\"reference internal\" href=\"#slidge.group.participant.LegacyParticipant.composing\"><code class=\"docutils literal notranslate\"><span class=\"pre\">LegacyParticipant.composing()</span></code></a></li>\n-<li><a class=\"reference internal\" href=\"#slidge.group.participant.LegacyParticipant.paused\"><code class=\"docutils literal notranslate\"><span class=\"pre\">LegacyParticipant.paused()</span></code></a></li>\n-<li><a class=\"reference internal\" href=\"#slidge.group.participant.LegacyParticipant.inactive\"><code class=\"docutils literal notranslate\"><span class=\"pre\">LegacyParticipant.inactive()</span></code></a></li>\n-<li><a class=\"reference internal\" href=\"#slidge.group.participant.LegacyParticipant.gone\"><code class=\"docutils literal notranslate\"><span class=\"pre\">LegacyParticipant.gone()</span></code></a></li>\n-<li><a class=\"reference internal\" href=\"#slidge.group.participant.LegacyParticipant.ack\"><code class=\"docutils literal notranslate\"><span class=\"pre\">LegacyParticipant.ack()</span></code></a></li>\n-<li><a class=\"reference internal\" href=\"#slidge.group.participant.LegacyParticipant.received\"><code class=\"docutils literal notranslate\"><span class=\"pre\">LegacyParticipant.received()</span></code></a></li>\n-<li><a class=\"reference internal\" href=\"#slidge.group.participant.LegacyParticipant.displayed\"><code class=\"docutils literal notranslate\"><span class=\"pre\">LegacyParticipant.displayed()</span></code></a></li>\n-<li><a class=\"reference internal\" href=\"#slidge.group.participant.LegacyParticipant.send_text\"><code class=\"docutils literal notranslate\"><span class=\"pre\">LegacyParticipant.send_text()</span></code></a></li>\n-<li><a class=\"reference internal\" href=\"#slidge.group.participant.LegacyParticipant.correct\"><code class=\"docutils literal notranslate\"><span class=\"pre\">LegacyParticipant.correct()</span></code></a></li>\n-<li><a class=\"reference internal\" href=\"#slidge.group.participant.LegacyParticipant.react\"><code class=\"docutils literal notranslate\"><span class=\"pre\">LegacyParticipant.react()</span></code></a></li>\n-<li><a class=\"reference internal\" href=\"#slidge.group.participant.LegacyParticipant.retract\"><code class=\"docutils literal notranslate\"><span class=\"pre\">LegacyParticipant.retract()</span></code></a></li>\n-<li><a class=\"reference internal\" href=\"#slidge.group.participant.LegacyParticipant.send_file\"><code class=\"docutils literal notranslate\"><span class=\"pre\">LegacyParticipant.send_file()</span></code></a></li>\n </ul>\n </li>\n </ul>\n </li>\n </ul>\n </li>\n </ul>\n", "details": [{"source1": "html2text {}", "source2": "html2text {}", "unified_diff": "@@ -89,247 +89,19 @@\n used internally by slidge\n leave()#\n Call this when the participant leaves the room\n kick()#\n Call this when the participant is kicked from the room\n ban()#\n Call this when the participant is banned from the room\n- online(status=None, last_seen=None)#\n- Send an \u00e2\u0080\u009conline\u00e2\u0080\u009d presence from this contact to the user.\n- Parameters:\n- * status (Optional[str]) \u00e2\u0080\u0093 Arbitrary text, details of\n- the status, eg: \u00e2\u0080\u009cListening to Britney Spears\u00e2\u0080\u009d\n- * last_seen (Optional[datetime.datetime]) \u00e2\u0080\u0093 For XEP-\n- 0319\n- away(status=None, last_seen=None)#\n- Send an \u00e2\u0080\u009caway\u00e2\u0080\u009d presence from this contact to the user.\n- This is a global status, as opposed to LegacyContact.inactive()\n- which concerns a specific conversation, ie a specific \u00e2\u0080\u009cchat\n- window\u00e2\u0080\u009d\n- Parameters:\n- * status (Optional[str]) \u00e2\u0080\u0093 Arbitrary text, details of\n- the status, eg: \u00e2\u0080\u009cGone to fight capitalism\u00e2\u0080\u009d\n- * last_seen (Optional[datetime.datetime]) \u00e2\u0080\u0093 For XEP-\n- 0319\n- extended_away(status=None, last_seen=None)#\n- Send an \u00e2\u0080\u009cextended away\u00e2\u0080\u009d presence from this contact to the user.\n- This is a global status, as opposed to LegacyContact.inactive()\n- which concerns a specific conversation, ie a specific \u00e2\u0080\u009cchat\n- window\u00e2\u0080\u009d\n- Parameters:\n- * status (Optional[str]) \u00e2\u0080\u0093 Arbitrary text, details of\n- the status, eg: \u00e2\u0080\u009cGone to fight capitalism\u00e2\u0080\u009d\n- * last_seen (Optional[datetime.datetime]) \u00e2\u0080\u0093 For XEP-\n- 0319\n- busy(status=None, last_seen=None)#\n- Send a \u00e2\u0080\u009cbusy\u00e2\u0080\u009d (ie, \u00e2\u0080\u009cdnd\u00e2\u0080\u009d) presence from this contact to the\n- user,\n- Parameters:\n- * status (Optional[str]) \u00e2\u0080\u0093 eg: \u00e2\u0080\u009cTrying to make sense\n- of XEP-0100\u00e2\u0080\u009d\n- * last_seen (Optional[datetime.datetime]) \u00e2\u0080\u0093 For XEP-\n- 0319\n- offline(status=None, last_seen=None)#\n- Send an \u00e2\u0080\u009coffline\u00e2\u0080\u009d presence from this contact to the user.\n- Parameters:\n- * status (Optional[str]) \u00e2\u0080\u0093 eg: \u00e2\u0080\u009cTrying to make sense\n- of XEP-0100\u00e2\u0080\u009d\n- * last_seen (Optional[datetime.datetime]) \u00e2\u0080\u0093 For XEP-\n- 0319\n- invite_to(muc, reason=None, password=None, **send_kwargs)#\n- Send an invitation to join a group (XEP-0249) from this XMPP\n- Entity.\n- Parameters:\n- * muc (slidge.group.LegacyMUC) \u00e2\u0080\u0093 the muc the user is\n- invited to\n- * reason (Optional[str]) \u00e2\u0080\u0093 a text explaining why the\n- user should join this muc\n- * password (Optional[str]) \u00e2\u0080\u0093 maybe this will make sense\n- later? not sure\n- * send_kwargs \u00e2\u0080\u0093 additional kwargs to be passed to _send\n- () (internal use by slidge)\n- active(**kwargs)#\n- Send an \u00e2\u0080\u009cactive\u00e2\u0080\u009d chat state (XEP-0085) from this XMPP_Entity.\n- composing(**kwargs)#\n- Send a \u00e2\u0080\u009ccomposing\u00e2\u0080\u009d (ie \u00e2\u0080\u009ctyping notification\u00e2\u0080\u009d) chat state\n- (XEP-0085) from this XMPP_Entity.\n- paused(**kwargs)#\n- Send a \u00e2\u0080\u009cpaused\u00e2\u0080\u009d (ie \u00e2\u0080\u009ctyping paused notification\u00e2\u0080\u009d) chat\n- state (XEP-0085) from this XMPP_Entity.\n- inactive(**kwargs)#\n- Send an \u00e2\u0080\u009cinactive\u00e2\u0080\u009d (ie \u00e2\u0080\u009ccontact has not interacted with the\n- chat session interface for an intermediate period of time\u00e2\u0080\u009d) chat\n- state (XEP-0085) from this XMPP_Entity.\n- gone(**kwargs)#\n- Send a \u00e2\u0080\u009cgone\u00e2\u0080\u009d (ie \u00e2\u0080\u009ccontact has not interacted with the chat\n- session interface, system, or device for a relatively long period\n- of time\u00e2\u0080\u009d) chat state (XEP-0085) from this XMPP_Entity.\n- ack(legacy_msg_id, **kwargs)#\n- Send an \u00e2\u0080\u009cacknowledged\u00e2\u0080\u009d message marker (XEP-0333) from this XMPP\n- Entity.\n- Parameters:\n- legacy_msg_id (slidge.util.types.LegacyMessageType) \u00e2\u0080\u0093 The\n- message this marker refers to\n- received(legacy_msg_id, **kwargs)#\n- Send a \u00e2\u0080\u009creceived\u00e2\u0080\u009d message marker (XEP-0333) from this XMPP\n- Entity. If called on a LegacyContact, also send a delivery receipt\n- marker (XEP-0184).\n- Parameters:\n- legacy_msg_id (slidge.util.types.LegacyMessageType) \u00e2\u0080\u0093 The\n- message this marker refers to\n- displayed(legacy_msg_id, **kwargs)#\n- Send a \u00e2\u0080\u009cdisplayed\u00e2\u0080\u009d message marker (XEP-0333) from this XMPP\n- Entity.\n- Parameters:\n- legacy_msg_id (slidge.util.types.LegacyMessageType) \u00e2\u0080\u0093 The\n- message this marker refers to\n- send_text(body, legacy_msg_id=None, *, when=None, reply_to=None,\n- thread=None, hints=None, carbon=False, archive_only=False,\n- correction=False, correction_event_id=None, link_previews=None,\n- **send_kwargs)#\n- Send a text message from this XMPP_Entity.\n- Parameters:\n- * body (str) \u00e2\u0080\u0093 Content of the message\n- * legacy_msg_id (Optional\n- [slidge.util.types.LegacyMessageType]) \u00e2\u0080\u0093 If you want\n- to be able to transport read markers from the gateway\n- user to the legacy network, specify this\n- * when (Optional[datetime.datetime]) \u00e2\u0080\u0093 when the message\n- was sent, for a \u00e2\u0080\u009cdelay\u00e2\u0080\u009d tag (XEP-0203)\n- * reply_to (Optional[slidge.util.types.MessageReference])\n- \u00e2\u0080\u0093 Quote another message (XEP-0461)\n- * hints (Optional[Iterable\n- [slidge.util.types.ProcessingHint]]) \u00e2\u0080\u0093\n- * thread (Optional[slidge.util.types.LegacyThreadType])\n- \u00e2\u0080\u0093\n- * carbon \u00e2\u0080\u0093 (only used if called on a LegacyContact) Set\n- this to True if this is actually a message sent to the\n- LegacyContact by the User. Use this to synchronize\n- outgoing history for legacy official apps.\n- * correction \u00e2\u0080\u0093 whether this message is a correction or\n- not\n- * correction_event_id (Optional\n- [slidge.util.types.LegacyMessageType]) \u00e2\u0080\u0093 in the case\n- where an ID is associated with the legacy \u00e2\u0080\u0098correction\n- event\u00e2\u0080\u0099, specify it here to use it on the XMPP side.\n- If not specified, a random ID will be used.\n- * link_previews (Optional[list\n- [slidge.util.types.LinkPreview]]) \u00e2\u0080\u0093 A little of\n- sender (or server, or gateway)-generated previews of\n- URLs linked in the body.\n- * archive_only \u00e2\u0080\u0093 (only in groups) Do not send this\n- message to user, but store it in the archive. Meant to\n- be used during MUC.backfill()\n- correct(legacy_msg_id, new_text, *, when=None, reply_to=None,\n- thread=None, hints=None, carbon=False, archive_only=False,\n- correction_event_id=None, link_previews=None, **send_kwargs)#\n- Modify a message that was previously sent by this XMPP_Entity.\n- Uses last message correction (XEP-0308)\n- Parameters:\n- * new_text (str) \u00e2\u0080\u0093 New content of the message\n- * legacy_msg_id (slidge.util.types.LegacyMessageType) \u00e2\u0080\u0093\n- The legacy message ID of the message to correct\n- * when (Optional[datetime.datetime]) \u00e2\u0080\u0093 when the message\n- was sent, for a \u00e2\u0080\u009cdelay\u00e2\u0080\u009d tag (XEP-0203)\n- * reply_to (Optional[slidge.util.types.MessageReference])\n- \u00e2\u0080\u0093 Quote another message (XEP-0461)\n- * hints (Optional[Iterable\n- [slidge.util.types.ProcessingHint]]) \u00e2\u0080\u0093\n- * thread (Optional[slidge.util.types.LegacyThreadType])\n- \u00e2\u0080\u0093\n- * carbon \u00e2\u0080\u0093 (only in 1:1) Reflect a message sent to this\n- Contact by the user. Use this to synchronize outgoing\n- history for legacy official apps.\n- * archive_only \u00e2\u0080\u0093 (only in groups) Do not send this\n- message to user, but store it in the archive. Meant to\n- be used during MUC.backfill()\n- * correction_event_id (Optional\n- [slidge.util.types.LegacyMessageType]) \u00e2\u0080\u0093 in the case\n- where an ID is associated with the legacy \u00e2\u0080\u0098correction\n- event\u00e2\u0080\u0099, specify it here to use it on the XMPP side.\n- If not specified, a random ID will be used.\n- * link_previews (Optional[list\n- [slidge.util.types.LinkPreview]]) \u00e2\u0080\u0093 A little of\n- sender (or server, or gateway)-generated previews of\n- URLs linked in the body.\n- react(legacy_msg_id, emojis=(), thread=None, **kwargs)#\n- Send a reaction (XEP-0444) from this XMPP_Entity.\n- Parameters:\n- * legacy_msg_id (slidge.util.types.LegacyMessageType) \u00e2\u0080\u0093\n- The message which the reaction refers to.\n- * emojis (Iterable[str]) \u00e2\u0080\u0093 An iterable of emojis used\n- as reactions\n- * thread (Optional[slidge.util.types.LegacyThreadType])\n- \u00e2\u0080\u0093\n- retract(legacy_msg_id, thread=None, **kwargs)#\n- Send a message retraction (XEP-0424) from this XMPP_Entity.\n- Parameters:\n- * legacy_msg_id (slidge.util.types.LegacyMessageType) \u00e2\u0080\u0093\n- Legacy ID of the message to delete\n- * thread (Optional[slidge.util.types.LegacyThreadType])\n- \u00e2\u0080\u0093\n- asyncsend_file(file_path=None, legacy_msg_id=None, *, data_stream=None,\n- data=None, file_url=None, file_name=None, content_type=None,\n- reply_to=None, when=None, caption=None, legacy_file_id=None,\n- thread=None, **kwargs)#\n- Send a single file from this XMPP_Entity.\n- Parameters:\n- * file_path (Optional[Union[pathlib.Path,str]]) \u00e2\u0080\u0093 Path\n- to the attachment\n- * data_stream (Optional[IO[bytes]]) \u00e2\u0080\u0093 Alternatively, a\n- stream of bytes (such as a File object)\n- * data (Optional[bytes]) \u00e2\u0080\u0093 Alternatively, a bytes\n- object\n- * file_url (Optional[str]) \u00e2\u0080\u0093 Alternatively, a URL\n- * file_name (Optional[str]) \u00e2\u0080\u0093 How the file should be\n- named.\n- * content_type (Optional[str]) \u00e2\u0080\u0093 MIME type, inferred\n- from filename if not given\n- * legacy_msg_id (Optional\n- [slidge.util.types.LegacyMessageType]) \u00e2\u0080\u0093 If you want\n- to be able to transport read markers from the gateway\n- user to the legacy network, specify this\n- * reply_to (Optional[slidge.util.types.MessageReference])\n- \u00e2\u0080\u0093 Quote another message (XEP-0461)\n- * when (Optional[datetime.datetime]) \u00e2\u0080\u0093 when the file\n- was sent, for a \u00e2\u0080\u009cdelay\u00e2\u0080\u009d tag (XEP-0203)\n- * caption (Optional[str]) \u00e2\u0080\u0093 an optional text that is\n- linked to the file\n- * legacy_file_id (Optional[Union[str,int]]) \u00e2\u0080\u0093 A unique\n- identifier for the file on the legacy network. Plugins\n- should try their best to provide it, to avoid\n- duplicates.\n- * thread (Optional[slidge.util.types.LegacyThreadType])\n- \u00e2\u0080\u0093\n- Return type:\n- tuple[Optional[str], list[slixmpp.Message]]\n \n Copyright \u00a9 2024, Nicolas Cedilnik\n Made with Sphinx and @pradyunsg's Furo\n On this page\n * slidge.group.participant\n o Module_Contents\n # Classes\n # LegacyParticipant\n # LegacyParticipant.send_initial_presence()\n # LegacyParticipant.leave()\n # LegacyParticipant.kick()\n # LegacyParticipant.ban()\n- # LegacyParticipant.online()\n- # LegacyParticipant.away()\n- # LegacyParticipant.extended_away()\n- # LegacyParticipant.busy()\n- # LegacyParticipant.offline()\n- # LegacyParticipant.invite_to()\n- # LegacyParticipant.active()\n- # LegacyParticipant.composing()\n- # LegacyParticipant.paused()\n- # LegacyParticipant.inactive()\n- # LegacyParticipant.gone()\n- # LegacyParticipant.ack()\n- # LegacyParticipant.received()\n- # LegacyParticipant.displayed()\n- # LegacyParticipant.send_text()\n- # LegacyParticipant.correct()\n- # LegacyParticipant.react()\n- # LegacyParticipant.retract()\n- # LegacyParticipant.send_file()\n"}]}, {"source1": "./usr/share/doc/python-slidge-doc/html/dev/api/slidge/group/room/index.html", "source2": "./usr/share/doc/python-slidge-doc/html/dev/api/slidge/group/room/index.html", "unified_diff": "@@ -256,43 +256,14 @@\n <dd class=\"field-odd\"><ul class=\"simple\">\n <li><p><strong>session</strong> (<a class=\"reference internal\" href=\"../../core/session/index.html#slidge.core.session.BaseSession\" title=\"slidge.core.session.BaseSession\"><em>slidge.core.session.BaseSession</em></a>) \u2013 </p></li>\n <li><p><strong>legacy_id</strong> (<em>slidge.util.types.LegacyGroupIdType</em>) \u2013 </p></li>\n <li><p><strong>jid</strong> (<em>slixmpp.JID</em>) \u2013 </p></li>\n </ul>\n </dd>\n </dl>\n-<dl class=\"py property\">\n-<dt class=\"sig sig-object py\" id=\"slidge.group.room.LegacyMUC.avatar_id\">\n-<em class=\"property\"><span class=\"pre\">property</span><span class=\"w\"> </span></em><span class=\"sig-name descname\"><span class=\"pre\">avatar_id</span></span><em class=\"property\"><span class=\"p\"><span class=\"pre\">:</span></span><span class=\"w\"> </span><span class=\"pre\">slidge.util.types.AvatarIdType</span><span class=\"w\"> </span><span class=\"p\"><span class=\"pre\">|</span></span><span class=\"w\"> </span><a class=\"reference external\" href=\"/usr/share/doc/python3-doc/html/library/constants.html#None\" title=\"(in Python v3.11)\"><span class=\"pre\">None</span></a></em><a class=\"headerlink\" href=\"#slidge.group.room.LegacyMUC.avatar_id\" title=\"Link to this definition\">#</a></dt>\n-<dd><p>The unique ID of this entity\u2019s avatar.</p>\n-<dl class=\"field-list simple\">\n-<dt class=\"field-odd\">Return type<span class=\"colon\">:</span></dt>\n-<dd class=\"field-odd\"><p>Optional[slidge.util.types.AvatarIdType]</p>\n-</dd>\n-</dl>\n-</dd></dl>\n-\n-<dl class=\"py property\">\n-<dt class=\"sig sig-object py\" id=\"slidge.group.room.LegacyMUC.avatar\">\n-<em class=\"property\"><span class=\"pre\">property</span><span class=\"w\"> </span></em><span class=\"sig-name descname\"><span class=\"pre\">avatar</span></span><em class=\"property\"><span class=\"p\"><span class=\"pre\">:</span></span><span class=\"w\"> </span><span class=\"pre\">slidge.util.types.AvatarIdType</span><span class=\"w\"> </span><span class=\"p\"><span class=\"pre\">|</span></span><span class=\"w\"> </span><a class=\"reference external\" href=\"/usr/share/doc/python3-doc/html/library/constants.html#None\" title=\"(in Python v3.11)\"><span class=\"pre\">None</span></a></em><a class=\"headerlink\" href=\"#slidge.group.room.LegacyMUC.avatar\" title=\"Link to this definition\">#</a></dt>\n-<dd><p>This property can be used to set the avatar, but\n-<a class=\"reference internal\" href=\"../../core/mixins/avatar/index.html#slidge.core.mixins.avatar.AvatarMixin.set_avatar\" title=\"slidge.core.mixins.avatar.AvatarMixin.set_avatar\"><code class=\"xref py py-meth docutils literal notranslate\"><span class=\"pre\">set_avatar()</span></code></a> should be preferred because you can\n-provide a unique ID for the avatar for efficient caching.\n-Setting this is OKish in case the avatar type is a URL or a local path\n-that can act as a legacy ID.</p>\n-<p>Python\u2019s <code class=\"docutils literal notranslate\"><span class=\"pre\">property</span></code> is abused here to maintain backwards\n-compatibility, but when getting it you actually get the avatar legacy\n-ID.</p>\n-<dl class=\"field-list simple\">\n-<dt class=\"field-odd\">Return type<span class=\"colon\">:</span></dt>\n-<dd class=\"field-odd\"><p>Optional[slidge.util.types.AvatarIdType]</p>\n-</dd>\n-</dl>\n-</dd></dl>\n-\n <dl class=\"py attribute\">\n <dt class=\"sig sig-object py\" id=\"slidge.group.room.LegacyMUC.STABLE_ARCHIVE\">\n <span class=\"sig-name descname\"><span class=\"pre\">STABLE_ARCHIVE</span></span><em class=\"property\"><span class=\"w\"> </span><span class=\"p\"><span class=\"pre\">=</span></span><span class=\"w\"> </span><span class=\"pre\">False</span></em><a class=\"headerlink\" href=\"#slidge.group.room.LegacyMUC.STABLE_ARCHIVE\" title=\"Link to this definition\">#</a></dt>\n <dd><p>Because legacy events like reactions, editions, etc. don\u2019t all map to a stanza\n with a proper legacy ID, slidge usually cannot guarantee the stability of the archive\n across restarts.</p>\n <p>Set this to True if you know what you\u2019re doing, but realistically, this can\u2019t\n@@ -514,16 +485,16 @@\n <li><p><strong>mime</strong> (<em>Optional</em><em>[</em><a class=\"reference external\" href=\"/usr/share/doc/python3-doc/html/library/stdtypes.html#str\" title=\"(in Python v3.11)\"><em>str</em></a><em>]</em>) \u2013 the mime type of the image. Since this is provided by\n the XMPP client, there is no guarantee that this is valid or\n correct.</p></li>\n </ul>\n </dd>\n <dt class=\"field-even\">Returns<span class=\"colon\">:</span></dt>\n <dd class=\"field-even\"><p>A unique avatar identifier, which will trigger\n-<a class=\"reference internal\" href=\"#slidge.group.room.LegacyMUC.set_avatar\" title=\"slidge.group.room.LegacyMUC.set_avatar\"><code class=\"xref py py-meth docutils literal notranslate\"><span class=\"pre\">slidge.group.room.LegacyMUC.set_avatar()</span></code></a>. Alternatively, None, if\n-<a class=\"reference internal\" href=\"#slidge.group.room.LegacyMUC.set_avatar\" title=\"slidge.group.room.LegacyMUC.set_avatar\"><code class=\"xref py py-meth docutils literal notranslate\"><span class=\"pre\">LegacyMUC.set_avatar()</span></code></a> is meant to be awaited somewhere else.</p>\n+<code class=\"xref py py-meth docutils literal notranslate\"><span class=\"pre\">slidge.group.room.LegacyMUC.set_avatar()</span></code>. Alternatively, None, if\n+<code class=\"xref py py-meth docutils literal notranslate\"><span class=\"pre\">LegacyMUC.set_avatar()</span></code> is meant to be awaited somewhere else.</p>\n </dd>\n <dt class=\"field-odd\">Return type<span class=\"colon\">:</span></dt>\n <dd class=\"field-odd\"><p>Optional[Union[<a class=\"reference external\" href=\"/usr/share/doc/python3-doc/html/library/functions.html#int\" title=\"(in Python v3.11)\">int</a>, <a class=\"reference external\" href=\"/usr/share/doc/python3-doc/html/library/stdtypes.html#str\" title=\"(in Python v3.11)\">str</a>]]</p>\n </dd>\n </dl>\n </dd></dl>\n \n@@ -570,51 +541,14 @@\n <dl class=\"field-list simple\">\n <dt class=\"field-odd\">Parameters<span class=\"colon\">:</span></dt>\n <dd class=\"field-odd\"><p><strong>reason</strong> (<em>Optional</em><em>[</em><a class=\"reference external\" href=\"/usr/share/doc/python3-doc/html/library/stdtypes.html#str\" title=\"(in Python v3.11)\"><em>str</em></a><em>]</em>) \u2013 Optionally, a reason for the destruction</p>\n </dd>\n </dl>\n </dd></dl>\n \n-<dl class=\"py method\">\n-<dt class=\"sig sig-object py\" id=\"slidge.group.room.LegacyMUC.set_avatar\">\n-<em class=\"property\"><span class=\"pre\">async</span><span class=\"w\"> </span></em><span class=\"sig-name descname\"><span class=\"pre\">set_avatar</span></span><span class=\"sig-paren\">(</span><em class=\"sig-param\"><span class=\"n\"><span class=\"pre\">a</span></span></em>, <em class=\"sig-param\"><span class=\"n\"><span class=\"pre\">avatar_unique_id</span></span><span class=\"o\"><span class=\"pre\">=</span></span><span class=\"default_value\"><span class=\"pre\">None</span></span></em>, <em class=\"sig-param\"><span class=\"n\"><span class=\"pre\">blocking</span></span><span class=\"o\"><span class=\"pre\">=</span></span><span class=\"default_value\"><span class=\"pre\">False</span></span></em>, <em class=\"sig-param\"><span class=\"n\"><span class=\"pre\">cancel</span></span><span class=\"o\"><span class=\"pre\">=</span></span><span class=\"default_value\"><span class=\"pre\">True</span></span></em><span class=\"sig-paren\">)</span><a class=\"headerlink\" href=\"#slidge.group.room.LegacyMUC.set_avatar\" title=\"Link to this definition\">#</a></dt>\n-<dd><p>Set an avatar for this entity</p>\n-<dl class=\"field-list simple\">\n-<dt class=\"field-odd\">Parameters<span class=\"colon\">:</span></dt>\n-<dd class=\"field-odd\"><ul class=\"simple\">\n-<li><p><strong>a</strong> (<em>Optional</em><em>[</em><em>slidge.util.types.AvatarType</em><em>]</em>) \u2013 </p></li>\n-<li><p><strong>avatar_unique_id</strong> (<em>Optional</em><em>[</em><em>slidge.util.types.LegacyFileIdType</em><em>]</em>) \u2013 </p></li>\n-<li><p><strong>blocking</strong> \u2013 </p></li>\n-<li><p><strong>cancel</strong> \u2013 </p></li>\n-</ul>\n-</dd>\n-<dt class=\"field-even\">Return type<span class=\"colon\">:</span></dt>\n-<dd class=\"field-even\"><p>None</p>\n-</dd>\n-</dl>\n-</dd></dl>\n-\n-<dl class=\"py method\">\n-<dt class=\"sig sig-object py\" id=\"slidge.group.room.LegacyMUC.available_emojis\">\n-<em class=\"property\"><span class=\"pre\">async</span><span class=\"w\"> </span></em><span class=\"sig-name descname\"><span class=\"pre\">available_emojis</span></span><span class=\"sig-paren\">(</span><em class=\"sig-param\"><span class=\"n\"><span class=\"pre\">legacy_msg_id</span></span><span class=\"o\"><span class=\"pre\">=</span></span><span class=\"default_value\"><span class=\"pre\">None</span></span></em><span class=\"sig-paren\">)</span><a class=\"headerlink\" href=\"#slidge.group.room.LegacyMUC.available_emojis\" title=\"Link to this definition\">#</a></dt>\n-<dd><p>Override this to restrict the subset of reactions this recipient\n-can handle.</p>\n-<dl class=\"field-list simple\">\n-<dt class=\"field-odd\">Returns<span class=\"colon\">:</span></dt>\n-<dd class=\"field-odd\"><p>A set of emojis or None if any emoji is allowed</p>\n-</dd>\n-<dt class=\"field-even\">Parameters<span class=\"colon\">:</span></dt>\n-<dd class=\"field-even\"><p><strong>legacy_msg_id</strong> (<em>Optional</em><em>[</em><em>slidge.util.types.LegacyMessageType</em><em>]</em>) \u2013 </p>\n-</dd>\n-<dt class=\"field-odd\">Return type<span class=\"colon\">:</span></dt>\n-<dd class=\"field-odd\"><p>Optional[<a class=\"reference external\" href=\"/usr/share/doc/python3-doc/html/library/stdtypes.html#set\" title=\"(in Python v3.11)\">set</a>[<a class=\"reference external\" href=\"/usr/share/doc/python3-doc/html/library/stdtypes.html#str\" title=\"(in Python v3.11)\">str</a>]]</p>\n-</dd>\n-</dl>\n-</dd></dl>\n-\n </dd></dl>\n \n </section>\n </section>\n </section>\n \n </article>\n@@ -654,16 +588,14 @@\n <div class=\"toc-tree-container\">\n <div class=\"toc-tree\">\n <ul>\n <li><a class=\"reference internal\" href=\"#\"><code class=\"xref py py-mod docutils literal notranslate\"><span class=\"pre\">slidge.group.room</span></code></a><ul>\n <li><a class=\"reference internal\" href=\"#module-contents\">Module Contents</a><ul>\n <li><a class=\"reference internal\" href=\"#classes\">Classes</a><ul>\n <li><a class=\"reference internal\" href=\"#slidge.group.room.LegacyMUC\"><code class=\"docutils literal notranslate\"><span class=\"pre\">LegacyMUC</span></code></a><ul>\n-<li><a class=\"reference internal\" href=\"#slidge.group.room.LegacyMUC.avatar_id\"><code class=\"docutils literal notranslate\"><span class=\"pre\">LegacyMUC.avatar_id</span></code></a></li>\n-<li><a class=\"reference internal\" href=\"#slidge.group.room.LegacyMUC.avatar\"><code class=\"docutils literal notranslate\"><span class=\"pre\">LegacyMUC.avatar</span></code></a></li>\n <li><a class=\"reference internal\" href=\"#slidge.group.room.LegacyMUC.STABLE_ARCHIVE\"><code class=\"docutils literal notranslate\"><span class=\"pre\">LegacyMUC.STABLE_ARCHIVE</span></code></a></li>\n <li><a class=\"reference internal\" href=\"#slidge.group.room.LegacyMUC.KEEP_BACKFILLED_PARTICIPANTS\"><code class=\"docutils literal notranslate\"><span class=\"pre\">LegacyMUC.KEEP_BACKFILLED_PARTICIPANTS</span></code></a></li>\n <li><a class=\"reference internal\" href=\"#slidge.group.room.LegacyMUC.update_info\"><code class=\"docutils literal notranslate\"><span class=\"pre\">LegacyMUC.update_info()</span></code></a></li>\n <li><a class=\"reference internal\" href=\"#slidge.group.room.LegacyMUC.backfill\"><code class=\"docutils literal notranslate\"><span class=\"pre\">LegacyMUC.backfill()</span></code></a></li>\n <li><a class=\"reference internal\" href=\"#slidge.group.room.LegacyMUC.fill_participants\"><code class=\"docutils literal notranslate\"><span class=\"pre\">LegacyMUC.fill_participants()</span></code></a></li>\n <li><a class=\"reference internal\" href=\"#slidge.group.room.LegacyMUC.get_user_participant\"><code class=\"docutils literal notranslate\"><span class=\"pre\">LegacyMUC.get_user_participant()</span></code></a></li>\n <li><a class=\"reference internal\" href=\"#slidge.group.room.LegacyMUC.get_participant\"><code class=\"docutils literal notranslate\"><span class=\"pre\">LegacyMUC.get_participant()</span></code></a></li>\n@@ -673,16 +605,14 @@\n <li><a class=\"reference internal\" href=\"#slidge.group.room.LegacyMUC.remove_participant\"><code class=\"docutils literal notranslate\"><span class=\"pre\">LegacyMUC.remove_participant()</span></code></a></li>\n <li><a class=\"reference internal\" href=\"#slidge.group.room.LegacyMUC.kick_resource\"><code class=\"docutils literal notranslate\"><span class=\"pre\">LegacyMUC.kick_resource()</span></code></a></li>\n <li><a class=\"reference internal\" href=\"#slidge.group.room.LegacyMUC.add_to_bookmarks\"><code class=\"docutils literal notranslate\"><span class=\"pre\">LegacyMUC.add_to_bookmarks()</span></code></a></li>\n <li><a class=\"reference internal\" href=\"#slidge.group.room.LegacyMUC.on_avatar\"><code class=\"docutils literal notranslate\"><span class=\"pre\">LegacyMUC.on_avatar()</span></code></a></li>\n <li><a class=\"reference internal\" href=\"#slidge.group.room.LegacyMUC.on_set_affiliation\"><code class=\"docutils literal notranslate\"><span class=\"pre\">LegacyMUC.on_set_affiliation()</span></code></a></li>\n <li><a class=\"reference internal\" href=\"#slidge.group.room.LegacyMUC.on_set_config\"><code class=\"docutils literal notranslate\"><span class=\"pre\">LegacyMUC.on_set_config()</span></code></a></li>\n <li><a class=\"reference internal\" href=\"#slidge.group.room.LegacyMUC.on_destroy_request\"><code class=\"docutils literal notranslate\"><span class=\"pre\">LegacyMUC.on_destroy_request()</span></code></a></li>\n-<li><a class=\"reference internal\" href=\"#slidge.group.room.LegacyMUC.set_avatar\"><code class=\"docutils literal notranslate\"><span class=\"pre\">LegacyMUC.set_avatar()</span></code></a></li>\n-<li><a class=\"reference internal\" href=\"#slidge.group.room.LegacyMUC.available_emojis\"><code class=\"docutils literal notranslate\"><span class=\"pre\">LegacyMUC.available_emojis()</span></code></a></li>\n </ul>\n </li>\n </ul>\n </li>\n </ul>\n </li>\n </ul>\n", "details": [{"source1": "html2text {}", "source2": "html2text {}", "unified_diff": "@@ -74,28 +74,14 @@\n MUC instances are obtained by calling\n slidge.group.bookmarks.LegacyBookmarks() on the user\u00e2\u0080\u0099s\n slidge.core.session.BaseSession.\n Parameters:\n * session (slidge.core.session.BaseSession) \u00e2\u0080\u0093\n * legacy_id (slidge.util.types.LegacyGroupIdType) \u00e2\u0080\u0093\n * jid (slixmpp.JID) \u00e2\u0080\u0093\n- propertyavatar_id: slidge.util.types.AvatarIdType | None#\n- The unique ID of this entity\u00e2\u0080\u0099s avatar.\n- Return type:\n- Optional[slidge.util.types.AvatarIdType]\n- propertyavatar: slidge.util.types.AvatarIdType | None#\n- This property can be used to set the avatar, but set_avatar()\n- should be preferred because you can provide a unique ID for the\n- avatar for efficient caching. Setting this is OKish in case the\n- avatar type is a URL or a local path that can act as a legacy ID.\n- Python\u00e2\u0080\u0099s property is abused here to maintain backwards\n- compatibility, but when getting it you actually get the avatar\n- legacy ID.\n- Return type:\n- Optional[slidge.util.types.AvatarIdType]\n STABLE_ARCHIVE= False#\n Because legacy events like reactions, editions, etc. don\u00e2\u0080\u0099t all\n map to a stanza with a proper legacy ID, slidge usually cannot\n guarantee the stability of the archive across restarts.\n Set this to True if you know what you\u00e2\u0080\u0099re doing, but\n realistically, this can\u00e2\u0080\u0099t be set to True until archive is\n permanently stored on disk by slidge.\n@@ -262,44 +248,22 @@\n * description (Optional[str]) \u00e2\u0080\u0093 The new description of\n the room.\n abstract asyncon_destroy_request(reason)#\n Triggered when the user requests room destruction.\n Parameters:\n reason (Optional[str]) \u00e2\u0080\u0093 Optionally, a reason for the\n destruction\n- asyncset_avatar(a, avatar_unique_id=None, blocking=False, cancel=True)#\n- Set an avatar for this entity\n- Parameters:\n- * a (Optional[slidge.util.types.AvatarType]) \u00e2\u0080\u0093\n- * avatar_unique_id (Optional\n- [slidge.util.types.LegacyFileIdType]) \u00e2\u0080\u0093\n- * blocking \u00e2\u0080\u0093\n- * cancel \u00e2\u0080\u0093\n- Return type:\n- None\n- asyncavailable_emojis(legacy_msg_id=None)#\n- Override this to restrict the subset of reactions this recipient\n- can handle.\n- Returns:\n- A set of emojis or None if any emoji is allowed\n- Parameters:\n- legacy_msg_id (Optional[slidge.util.types.LegacyMessageType])\n- \u00e2\u0080\u0093\n- Return type:\n- Optional[set[str]]\n \n Copyright \u00a9 2024, Nicolas Cedilnik\n Made with Sphinx and @pradyunsg's Furo\n On this page\n * slidge.group.room\n o Module_Contents\n # Classes\n # LegacyMUC\n- # LegacyMUC.avatar_id\n- # LegacyMUC.avatar\n # LegacyMUC.STABLE_ARCHIVE\n # LegacyMUC.KEEP_BACKFILLED_PARTICIPANTS\n # LegacyMUC.update_info()\n # LegacyMUC.backfill()\n # LegacyMUC.fill_participants()\n # LegacyMUC.get_user_participant()\n # LegacyMUC.get_participant()\n@@ -309,9 +273,7 @@\n # LegacyMUC.remove_participant()\n # LegacyMUC.kick_resource()\n # LegacyMUC.add_to_bookmarks()\n # LegacyMUC.on_avatar()\n # LegacyMUC.on_set_affiliation()\n # LegacyMUC.on_set_config()\n # LegacyMUC.on_destroy_request()\n- # LegacyMUC.set_avatar()\n- # LegacyMUC.available_emojis()\n"}]}, {"source1": "./usr/share/doc/python-slidge-doc/html/dev/api/slidge/index.html", "source2": "./usr/share/doc/python-slidge-doc/html/dev/api/slidge/index.html", "unified_diff": "@@ -959,15 +959,15 @@\n <dt class=\"sig sig-object py\" id=\"slidge.BaseSession.on_displayed\">\n <em class=\"property\"><span class=\"pre\">abstract</span><span class=\"w\"> </span><span class=\"pre\">async</span><span class=\"w\"> </span></em><span class=\"sig-name descname\"><span class=\"pre\">on_displayed</span></span><span class=\"sig-paren\">(</span><em class=\"sig-param\"><span class=\"n\"><span class=\"pre\">chat</span></span></em>, <em class=\"sig-param\"><span class=\"n\"><span class=\"pre\">legacy_msg_id</span></span></em>, <em class=\"sig-param\"><span class=\"n\"><span class=\"pre\">thread</span></span><span class=\"o\"><span class=\"pre\">=</span></span><span class=\"default_value\"><span class=\"pre\">None</span></span></em><span class=\"sig-paren\">)</span><a class=\"headerlink\" href=\"#slidge.BaseSession.on_displayed\" title=\"Link to this definition\">#</a></dt>\n <dd><p>Triggered when the user reads a message in a legacy chat. (<a class=\"reference external\" href=\"https://xmpp.org/extensions/xep-0333.html\">XEP-0333</a>)</p>\n <p>This is only possible if a valid <code class=\"docutils literal notranslate\"><span class=\"pre\">legacy_msg_id</span></code> was passed when\n transmitting a message from a legacy chat to the user, eg in\n <a class=\"reference internal\" href=\"contact/index.html#slidge.contact.LegacyContact.send_text\" title=\"slidge.contact.LegacyContact.send_text\"><code class=\"xref py py-meth docutils literal notranslate\"><span class=\"pre\">slidge.contact.LegacyContact.send_text()</span></code></a>\n or\n-<a class=\"reference internal\" href=\"group/index.html#slidge.group.LegacyParticipant.send_text\" title=\"slidge.group.LegacyParticipant.send_text\"><code class=\"xref py py-meth docutils literal notranslate\"><span class=\"pre\">slidge.group.LegacyParticipant.send_text()</span></code></a>.</p>\n+<code class=\"xref py py-meth docutils literal notranslate\"><span class=\"pre\">slidge.group.LegacyParticipant.send_text()</span></code>.</p>\n <dl class=\"field-list simple\">\n <dt class=\"field-odd\">Parameters<span class=\"colon\">:</span></dt>\n <dd class=\"field-odd\"><ul class=\"simple\">\n <li><p><strong>chat</strong> (<em>slidge.util.types.RecipientType</em>) \u2013 See <a class=\"reference internal\" href=\"#slidge.BaseSession.on_text\" title=\"slidge.BaseSession.on_text\"><code class=\"xref py py-meth docutils literal notranslate\"><span class=\"pre\">BaseSession.on_text()</span></code></a></p></li>\n <li><p><strong>legacy_msg_id</strong> (<em>slidge.util.types.LegacyMessageType</em>) \u2013 Identifier of the message/</p></li>\n <li><p><strong>thread</strong> (<em>Optional</em><em>[</em><em>slidge.util.types.LegacyThreadType</em><em>]</em>) \u2013 </p></li>\n </ul>\n"}, {"source1": "./usr/share/doc/python-slidge-doc/html/dev/api/superduper/group/index.html", "source2": "./usr/share/doc/python-slidge-doc/html/dev/api/superduper/group/index.html", "unified_diff": "@@ -572,16 +572,16 @@\n <li><p><strong>mime</strong> (<em>Optional</em><em>[</em><a class=\"reference external\" href=\"/usr/share/doc/python3-doc/html/library/stdtypes.html#str\" title=\"(in Python v3.11)\"><em>str</em></a><em>]</em>) \u2013 the mime type of the image. Since this is provided by\n the XMPP client, there is no guarantee that this is valid or\n correct.</p></li>\n </ul>\n </dd>\n <dt class=\"field-even\">Returns<span class=\"colon\">:</span></dt>\n <dd class=\"field-even\"><p>A unique avatar identifier, which will trigger\n-<a class=\"reference internal\" href=\"../../slidge/group/room/index.html#slidge.group.room.LegacyMUC.set_avatar\" title=\"slidge.group.room.LegacyMUC.set_avatar\"><code class=\"xref py py-meth docutils literal notranslate\"><span class=\"pre\">slidge.group.room.LegacyMUC.set_avatar()</span></code></a>. Alternatively, None, if\n-<a class=\"reference internal\" href=\"../../slidge/group/index.html#slidge.group.LegacyMUC.set_avatar\" title=\"slidge.group.LegacyMUC.set_avatar\"><code class=\"xref py py-meth docutils literal notranslate\"><span class=\"pre\">LegacyMUC.set_avatar()</span></code></a> is meant to be awaited somewhere else.</p>\n+<code class=\"xref py py-meth docutils literal notranslate\"><span class=\"pre\">slidge.group.room.LegacyMUC.set_avatar()</span></code>. Alternatively, None, if\n+<code class=\"xref py py-meth docutils literal notranslate\"><span class=\"pre\">LegacyMUC.set_avatar()</span></code> is meant to be awaited somewhere else.</p>\n </dd>\n <dt class=\"field-odd\">Return type<span class=\"colon\">:</span></dt>\n <dd class=\"field-odd\"><p>Optional[Union[<a class=\"reference external\" href=\"/usr/share/doc/python3-doc/html/library/functions.html#int\" title=\"(in Python v3.11)\">int</a>, <a class=\"reference external\" href=\"/usr/share/doc/python3-doc/html/library/stdtypes.html#str\" title=\"(in Python v3.11)\">str</a>]]</p>\n </dd>\n </dl>\n </dd></dl>\n \n"}, {"source1": "./usr/share/doc/python-slidge-doc/html/dev/api/superduper/session/index.html", "source2": "./usr/share/doc/python-slidge-doc/html/dev/api/superduper/session/index.html", "unified_diff": "@@ -429,15 +429,15 @@\n <dt class=\"sig sig-object py\" id=\"superduper.session.Session.on_displayed\">\n <em class=\"property\"><span class=\"pre\">abstract</span><span class=\"w\"> </span><span class=\"pre\">async</span><span class=\"w\"> </span></em><span class=\"sig-name descname\"><span class=\"pre\">on_displayed</span></span><span class=\"sig-paren\">(</span><em class=\"sig-param\"><span class=\"n\"><span class=\"pre\">chat</span></span></em>, <em class=\"sig-param\"><span class=\"n\"><span class=\"pre\">legacy_msg_id</span></span></em>, <em class=\"sig-param\"><span class=\"n\"><span class=\"pre\">thread</span></span><span class=\"o\"><span class=\"pre\">=</span></span><span class=\"default_value\"><span class=\"pre\">None</span></span></em><span class=\"sig-paren\">)</span><a class=\"headerlink\" href=\"#superduper.session.Session.on_displayed\" title=\"Link to this definition\">#</a></dt>\n <dd><p>Triggered when the user reads a message in a legacy chat. (<a class=\"reference external\" href=\"https://xmpp.org/extensions/xep-0333.html\">XEP-0333</a>)</p>\n <p>This is only possible if a valid <code class=\"docutils literal notranslate\"><span class=\"pre\">legacy_msg_id</span></code> was passed when\n transmitting a message from a legacy chat to the user, eg in\n <a class=\"reference internal\" href=\"../../slidge/contact/index.html#slidge.contact.LegacyContact.send_text\" title=\"slidge.contact.LegacyContact.send_text\"><code class=\"xref py py-meth docutils literal notranslate\"><span class=\"pre\">slidge.contact.LegacyContact.send_text()</span></code></a>\n or\n-<a class=\"reference internal\" href=\"../../slidge/group/index.html#slidge.group.LegacyParticipant.send_text\" title=\"slidge.group.LegacyParticipant.send_text\"><code class=\"xref py py-meth docutils literal notranslate\"><span class=\"pre\">slidge.group.LegacyParticipant.send_text()</span></code></a>.</p>\n+<code class=\"xref py py-meth docutils literal notranslate\"><span class=\"pre\">slidge.group.LegacyParticipant.send_text()</span></code>.</p>\n <dl class=\"field-list simple\">\n <dt class=\"field-odd\">Parameters<span class=\"colon\">:</span></dt>\n <dd class=\"field-odd\"><ul class=\"simple\">\n <li><p><strong>chat</strong> (<em>slidge.util.types.RecipientType</em>) \u2013 See <a class=\"reference internal\" href=\"../../slidge/core/session/index.html#slidge.core.session.BaseSession.on_text\" title=\"slidge.core.session.BaseSession.on_text\"><code class=\"xref py py-meth docutils literal notranslate\"><span class=\"pre\">BaseSession.on_text()</span></code></a></p></li>\n <li><p><strong>legacy_msg_id</strong> (<em>slidge.util.types.LegacyMessageType</em>) \u2013 Identifier of the message/</p></li>\n <li><p><strong>thread</strong> (<em>Optional</em><em>[</em><em>slidge.util.types.LegacyThreadType</em><em>]</em>) \u2013 </p></li>\n </ul>\n"}, {"source1": "./usr/share/doc/python-slidge-doc/html/genindex.html", "source2": "./usr/share/doc/python-slidge-doc/html/genindex.html", "unified_diff": "@@ -263,18 +263,14 @@\n </li>\n <li><a href=\"dev/api/slidge/contact/index.html#slidge.contact.LegacyContact.ack\">(slidge.contact.LegacyContact method)</a>\n </li>\n <li><a href=\"dev/api/slidge/core/gateway/base/index.html#slidge.core.gateway.base.BaseGateway.ack\">(slidge.core.gateway.base.BaseGateway method)</a>\n </li>\n <li><a href=\"dev/api/slidge/core/gateway/index.html#slidge.core.gateway.BaseGateway.ack\">(slidge.core.gateway.BaseGateway method)</a>\n </li>\n- <li><a href=\"dev/api/slidge/group/index.html#slidge.group.LegacyParticipant.ack\">(slidge.group.LegacyParticipant method)</a>\n-</li>\n- <li><a href=\"dev/api/slidge/group/participant/index.html#slidge.group.participant.LegacyParticipant.ack\">(slidge.group.participant.LegacyParticipant method)</a>\n-</li>\n <li><a href=\"dev/api/superduper/contact/index.html#superduper.contact.Contact.ack\">(superduper.contact.Contact method)</a>\n </li>\n <li><a href=\"dev/api/superduper/gateway/index.html#superduper.gateway.Gateway.ack\">(superduper.gateway.Gateway method)</a>\n </li>\n <li><a href=\"dev/api/superduper/group/index.html#superduper.group.Participant.ack\">(superduper.group.Participant method)</a>\n </li>\n </ul></li>\n@@ -285,18 +281,14 @@\n </li>\n <li><a href=\"dev/api/slidge/contact/index.html#slidge.contact.LegacyContact.active\">(slidge.contact.LegacyContact method)</a>\n </li>\n <li><a href=\"dev/api/slidge/core/gateway/base/index.html#slidge.core.gateway.base.BaseGateway.active\">(slidge.core.gateway.base.BaseGateway method)</a>\n </li>\n <li><a href=\"dev/api/slidge/core/gateway/index.html#slidge.core.gateway.BaseGateway.active\">(slidge.core.gateway.BaseGateway method)</a>\n </li>\n- <li><a href=\"dev/api/slidge/group/index.html#slidge.group.LegacyParticipant.active\">(slidge.group.LegacyParticipant method)</a>\n-</li>\n- <li><a href=\"dev/api/slidge/group/participant/index.html#slidge.group.participant.LegacyParticipant.active\">(slidge.group.participant.LegacyParticipant method)</a>\n-</li>\n <li><a href=\"dev/api/superduper/contact/index.html#superduper.contact.Contact.active\">(superduper.contact.Contact method)</a>\n </li>\n <li><a href=\"dev/api/superduper/gateway/index.html#superduper.gateway.Gateway.active\">(superduper.gateway.Gateway method)</a>\n </li>\n <li><a href=\"dev/api/superduper/group/index.html#superduper.group.Participant.active\">(superduper.group.Participant method)</a>\n </li>\n </ul></li>\n@@ -356,14 +348,16 @@\n \n <ul>\n <li><a href=\"dev/api/slidge/util/test/index.html#slidge.util.test.SlixTestPlus.addTypeEqualityFunc\">(slidge.util.test.SlixTestPlus method)</a>\n </li>\n </ul></li>\n <li><a href=\"dev/api/slidge/command/adhoc/index.html#slidge.command.adhoc.AdhocProvider\">AdhocProvider (class in slidge.command.adhoc)</a>\n </li>\n+ <li><a href=\"dev/api/slidge/command/admin/index.html#slidge.command.admin.AdminCommand\">AdminCommand (class in slidge.command.admin)</a>\n+</li>\n <li><a href=\"dev/api/slidge/slixfix/link_preview/stanza/index.html#slidge.slixfix.link_preview.stanza.Description.append\">append() (slidge.slixfix.link_preview.stanza.Description method)</a>\n \n <ul>\n <li><a href=\"dev/api/slidge/slixfix/link_preview/stanza/index.html#slidge.slixfix.link_preview.stanza.Image.append\">(slidge.slixfix.link_preview.stanza.Image method)</a>\n </li>\n <li><a href=\"dev/api/slidge/slixfix/link_preview/stanza/index.html#slidge.slixfix.link_preview.stanza.LinkPreview.append\">(slidge.slixfix.link_preview.stanza.LinkPreview method)</a>\n </li>\n@@ -430,28 +424,28 @@\n </ul></li>\n <li><a href=\"dev/api/slidge/util/test/index.html#slidge.util.test.SlidgeTest.assertGreater\">assertGreater() (slidge.util.test.SlidgeTest method)</a>\n \n <ul>\n <li><a href=\"dev/api/slidge/util/test/index.html#slidge.util.test.SlixTestPlus.assertGreater\">(slidge.util.test.SlixTestPlus method)</a>\n </li>\n </ul></li>\n+ </ul></td>\n+ <td style=\"width: 33%; vertical-align: top;\"><ul>\n <li><a href=\"dev/api/slidge/util/test/index.html#slidge.util.test.SlidgeTest.assertGreaterEqual\">assertGreaterEqual() (slidge.util.test.SlidgeTest method)</a>\n \n <ul>\n <li><a href=\"dev/api/slidge/util/test/index.html#slidge.util.test.SlixTestPlus.assertGreaterEqual\">(slidge.util.test.SlixTestPlus method)</a>\n </li>\n </ul></li>\n <li><a href=\"dev/api/slidge/util/test/index.html#slidge.util.test.SlidgeTest.assertIn\">assertIn() (slidge.util.test.SlidgeTest method)</a>\n \n <ul>\n <li><a href=\"dev/api/slidge/util/test/index.html#slidge.util.test.SlixTestPlus.assertIn\">(slidge.util.test.SlixTestPlus method)</a>\n </li>\n </ul></li>\n- </ul></td>\n- <td style=\"width: 33%; vertical-align: top;\"><ul>\n <li><a href=\"dev/api/slidge/util/test/index.html#slidge.util.test.SlidgeTest.assertIs\">assertIs() (slidge.util.test.SlidgeTest method)</a>\n \n <ul>\n <li><a href=\"dev/api/slidge/util/test/index.html#slidge.util.test.SlixTestPlus.assertIs\">(slidge.util.test.SlixTestPlus method)</a>\n </li>\n </ul></li>\n <li><a href=\"dev/api/slidge/util/test/index.html#slidge.util.test.SlidgeTest.assertIsInstance\">assertIsInstance() (slidge.util.test.SlidgeTest method)</a>\n@@ -599,18 +593,14 @@\n </li>\n </ul></li>\n <li><a href=\"dev/api/slidge/contact/contact/index.html#slidge.contact.contact.LegacyContact.available_emojis\">available_emojis() (slidge.contact.contact.LegacyContact method)</a>\n \n <ul>\n <li><a href=\"dev/api/slidge/contact/index.html#slidge.contact.LegacyContact.available_emojis\">(slidge.contact.LegacyContact method)</a>\n </li>\n- <li><a href=\"dev/api/slidge/group/index.html#slidge.group.LegacyMUC.available_emojis\">(slidge.group.LegacyMUC method)</a>\n-</li>\n- <li><a href=\"dev/api/slidge/group/room/index.html#slidge.group.room.LegacyMUC.available_emojis\">(slidge.group.room.LegacyMUC method)</a>\n-</li>\n <li><a href=\"dev/api/superduper/contact/index.html#superduper.contact.Contact.available_emojis\">(superduper.contact.Contact method)</a>\n </li>\n <li><a href=\"dev/api/superduper/group/index.html#superduper.group.MUC.available_emojis\">(superduper.group.MUC method)</a>\n </li>\n </ul></li>\n <li><a href=\"glossary.html#term-Avatar\"><strong>Avatar</strong></a>\n </li>\n@@ -619,36 +609,28 @@\n <ul>\n <li><a href=\"dev/api/slidge/contact/index.html#slidge.contact.LegacyContact.avatar\">(slidge.contact.LegacyContact property)</a>\n </li>\n <li><a href=\"dev/api/slidge/core/mixins/avatar/index.html#slidge.core.mixins.avatar.AvatarMixin.avatar\">(slidge.core.mixins.avatar.AvatarMixin property)</a>\n </li>\n <li><a href=\"dev/api/slidge/core/mixins/index.html#slidge.core.mixins.AvatarMixin.avatar\">(slidge.core.mixins.AvatarMixin property)</a>\n </li>\n- <li><a href=\"dev/api/slidge/group/index.html#slidge.group.LegacyMUC.avatar\">(slidge.group.LegacyMUC property)</a>\n-</li>\n- <li><a href=\"dev/api/slidge/group/room/index.html#slidge.group.room.LegacyMUC.avatar\">(slidge.group.room.LegacyMUC property)</a>\n-</li>\n <li><a href=\"dev/api/superduper/contact/index.html#superduper.contact.Contact.avatar\">(superduper.contact.Contact property)</a>\n </li>\n <li><a href=\"dev/api/superduper/group/index.html#superduper.group.MUC.avatar\">(superduper.group.MUC property)</a>\n </li>\n </ul></li>\n <li><a href=\"dev/api/slidge/contact/contact/index.html#slidge.contact.contact.LegacyContact.avatar_id\">avatar_id (slidge.contact.contact.LegacyContact property)</a>\n \n <ul>\n <li><a href=\"dev/api/slidge/contact/index.html#slidge.contact.LegacyContact.avatar_id\">(slidge.contact.LegacyContact property)</a>\n </li>\n <li><a href=\"dev/api/slidge/core/mixins/avatar/index.html#slidge.core.mixins.avatar.AvatarMixin.avatar_id\">(slidge.core.mixins.avatar.AvatarMixin property)</a>\n </li>\n <li><a href=\"dev/api/slidge/core/mixins/index.html#slidge.core.mixins.AvatarMixin.avatar_id\">(slidge.core.mixins.AvatarMixin property)</a>\n </li>\n- <li><a href=\"dev/api/slidge/group/index.html#slidge.group.LegacyMUC.avatar_id\">(slidge.group.LegacyMUC property)</a>\n-</li>\n- <li><a href=\"dev/api/slidge/group/room/index.html#slidge.group.room.LegacyMUC.avatar_id\">(slidge.group.room.LegacyMUC property)</a>\n-</li>\n <li><a href=\"dev/api/superduper/contact/index.html#superduper.contact.Contact.avatar_id\">(superduper.contact.Contact property)</a>\n </li>\n <li><a href=\"dev/api/superduper/group/index.html#superduper.group.MUC.avatar_id\">(superduper.group.MUC property)</a>\n </li>\n </ul></li>\n <li><a href=\"dev/api/slidge/core/mixins/index.html#slidge.core.mixins.AvatarMixin\">AvatarMixin (class in slidge.core.mixins)</a>\n \n@@ -657,18 +639,14 @@\n </li>\n </ul></li>\n <li><a href=\"dev/api/slidge/contact/contact/index.html#slidge.contact.contact.LegacyContact.away\">away() (slidge.contact.contact.LegacyContact method)</a>\n \n <ul>\n <li><a href=\"dev/api/slidge/contact/index.html#slidge.contact.LegacyContact.away\">(slidge.contact.LegacyContact method)</a>\n </li>\n- <li><a href=\"dev/api/slidge/group/index.html#slidge.group.LegacyParticipant.away\">(slidge.group.LegacyParticipant method)</a>\n-</li>\n- <li><a href=\"dev/api/slidge/group/participant/index.html#slidge.group.participant.LegacyParticipant.away\">(slidge.group.participant.LegacyParticipant method)</a>\n-</li>\n <li><a href=\"dev/api/superduper/contact/index.html#superduper.contact.Contact.away\">(superduper.contact.Contact method)</a>\n </li>\n <li><a href=\"dev/api/superduper/group/index.html#superduper.group.Participant.away\">(superduper.group.Participant method)</a>\n </li>\n </ul></li>\n </ul></td>\n </tr></table>\n@@ -700,33 +678,29 @@\n \n <ul>\n <li><a href=\"dev/api/slidge/core/gateway/index.html#slidge.core.gateway.BaseGateway\">(class in slidge.core.gateway)</a>\n </li>\n <li><a href=\"dev/api/slidge/core/gateway/base/index.html#slidge.core.gateway.base.BaseGateway\">(class in slidge.core.gateway.base)</a>\n </li>\n </ul></li>\n+ </ul></td>\n+ <td style=\"width: 33%; vertical-align: top;\"><ul>\n <li><a href=\"dev/api/slidge/index.html#slidge.BaseSession\">BaseSession (class in slidge)</a>\n \n <ul>\n <li><a href=\"dev/api/slidge/core/session/index.html#slidge.core.session.BaseSession\">(class in slidge.core.session)</a>\n </li>\n </ul></li>\n- </ul></td>\n- <td style=\"width: 33%; vertical-align: top;\"><ul>\n <li><a href=\"dev/api/superduper/group/index.html#superduper.group.Bookmarks\">Bookmarks (class in superduper.group)</a>\n </li>\n <li><a href=\"dev/api/slidge/contact/contact/index.html#slidge.contact.contact.LegacyContact.busy\">busy() (slidge.contact.contact.LegacyContact method)</a>\n \n <ul>\n <li><a href=\"dev/api/slidge/contact/index.html#slidge.contact.LegacyContact.busy\">(slidge.contact.LegacyContact method)</a>\n </li>\n- <li><a href=\"dev/api/slidge/group/index.html#slidge.group.LegacyParticipant.busy\">(slidge.group.LegacyParticipant method)</a>\n-</li>\n- <li><a href=\"dev/api/slidge/group/participant/index.html#slidge.group.participant.LegacyParticipant.busy\">(slidge.group.participant.LegacyParticipant method)</a>\n-</li>\n <li><a href=\"dev/api/superduper/contact/index.html#superduper.contact.Contact.busy\">(superduper.contact.Contact method)</a>\n </li>\n <li><a href=\"dev/api/superduper/group/index.html#superduper.group.Participant.busy\">(superduper.group.Participant method)</a>\n </li>\n </ul></li>\n <li><a href=\"dev/api/slidge/contact/index.html#slidge.contact.LegacyRoster.by_legacy_id\">by_legacy_id() (slidge.contact.LegacyRoster method)</a>\n \n@@ -762,29 +736,41 @@\n <li><a href=\"dev/api/slidge/command/user/index.html#slidge.command.user.Login.CATEGORY\">(slidge.command.user.Login attribute)</a>\n </li>\n <li><a href=\"dev/api/slidge/command/user/index.html#slidge.command.user.Unregister.CATEGORY\">(slidge.command.user.Unregister attribute)</a>\n </li>\n </ul></li>\n <li><a href=\"dev/api/slidge/util/types/index.html#slidge.util.types.URL.center\">center() (slidge.util.types.URL method)</a>\n </li>\n+ <li><a href=\"dev/api/slidge/command/admin/index.html#slidge.command.admin.ChangeLoglevel\">ChangeLoglevel (class in slidge.command.admin)</a>\n+</li>\n <li><a href=\"dev/api/slidge/group/index.html#slidge.group.MucType.CHANNEL\">CHANNEL (slidge.group.MucType attribute)</a>\n \n <ul>\n <li><a href=\"dev/api/slidge/util/types/index.html#slidge.util.types.MucType.CHANNEL\">(slidge.util.types.MucType attribute)</a>\n </li>\n </ul></li>\n <li><a href=\"dev/api/slidge/group/index.html#slidge.group.MucType.CHANNEL_NON_ANONYMOUS\">CHANNEL_NON_ANONYMOUS (slidge.group.MucType attribute)</a>\n \n <ul>\n <li><a href=\"dev/api/slidge/util/types/index.html#slidge.util.types.MucType.CHANNEL_NON_ANONYMOUS\">(slidge.util.types.MucType attribute)</a>\n </li>\n </ul></li>\n- <li><a href=\"dev/api/slidge/command/base/index.html#slidge.command.base.Command.CHAT_COMMAND\">CHAT_COMMAND (slidge.command.base.Command attribute)</a>\n+ <li><a href=\"dev/api/slidge/command/admin/index.html#slidge.command.admin.AdminCommand.CHAT_COMMAND\">CHAT_COMMAND (slidge.command.admin.AdminCommand attribute)</a>\n \n <ul>\n+ <li><a href=\"dev/api/slidge/command/admin/index.html#slidge.command.admin.ChangeLoglevel.CHAT_COMMAND\">(slidge.command.admin.ChangeLoglevel attribute)</a>\n+</li>\n+ <li><a href=\"dev/api/slidge/command/admin/index.html#slidge.command.admin.DeleteUser.CHAT_COMMAND\">(slidge.command.admin.DeleteUser attribute)</a>\n+</li>\n+ <li><a href=\"dev/api/slidge/command/admin/index.html#slidge.command.admin.ListUsers.CHAT_COMMAND\">(slidge.command.admin.ListUsers attribute)</a>\n+</li>\n+ <li><a href=\"dev/api/slidge/command/admin/index.html#slidge.command.admin.SlidgeInfo.CHAT_COMMAND\">(slidge.command.admin.SlidgeInfo attribute)</a>\n+</li>\n+ <li><a href=\"dev/api/slidge/command/base/index.html#slidge.command.base.Command.CHAT_COMMAND\">(slidge.command.base.Command attribute)</a>\n+</li>\n <li><a href=\"dev/api/slidge/command/index.html#slidge.command.Command.CHAT_COMMAND\">(slidge.command.Command attribute)</a>\n </li>\n <li><a href=\"dev/api/slidge/command/user/index.html#slidge.command.user.CreateGroup.CHAT_COMMAND\">(slidge.command.user.CreateGroup attribute)</a>\n </li>\n <li><a href=\"dev/api/slidge/command/user/index.html#slidge.command.user.ListContacts.CHAT_COMMAND\">(slidge.command.user.ListContacts attribute)</a>\n </li>\n <li><a href=\"dev/api/slidge/command/user/index.html#slidge.command.user.ListGroups.CHAT_COMMAND\">(slidge.command.user.ListGroups attribute)</a>\n@@ -832,30 +818,30 @@\n <li><a href=\"dev/api/slidge/slixfix/roster/index.html#slidge.slixfix.roster.YesSet.clear\">(slidge.slixfix.roster.YesSet method)</a>\n </li>\n <li><a href=\"dev/api/slidge/util/db/index.html#slidge.util.db.EncryptedShelf.clear\">(slidge.util.db.EncryptedShelf method)</a>\n </li>\n <li><a href=\"dev/api/slidge/util/types/index.html#slidge.util.types.ResourceDict.clear\">(slidge.util.types.ResourceDict method)</a>\n </li>\n </ul></li>\n+ </ul></td>\n+ <td style=\"width: 33%; vertical-align: top;\"><ul>\n <li><a href=\"glossary.html#term-Command\"><strong>Command</strong></a>\n \n <ul>\n <li><a href=\"dev/api/slidge/command/index.html#slidge.command.Command\">(class in slidge.command)</a>\n </li>\n <li><a href=\"dev/api/slidge/command/base/index.html#slidge.command.base.Command\">(class in slidge.command.base)</a>\n </li>\n </ul></li>\n <li><a href=\"dev/api/slidge/command/index.html#slidge.command.CommandAccess\">CommandAccess (class in slidge.command)</a>\n \n <ul>\n <li><a href=\"dev/api/slidge/command/base/index.html#slidge.command.base.CommandAccess\">(class in slidge.command.base)</a>\n </li>\n </ul></li>\n- </ul></td>\n- <td style=\"width: 33%; vertical-align: top;\"><ul>\n <li><a href=\"dev/api/slidge/util/test/index.html#slidge.util.test.SlidgeTest.compare\">compare() (slidge.util.test.SlidgeTest method)</a>\n \n <ul>\n <li><a href=\"dev/api/slidge/util/test/index.html#slidge.util.test.SlixTestPlus.compare\">(slidge.util.test.SlixTestPlus method)</a>\n </li>\n </ul></li>\n <li><a href=\"dev/api/slidge/index.html#slidge.BaseGateway.COMPONENT_AVATAR\">COMPONENT_AVATAR (slidge.BaseGateway attribute)</a>\n@@ -889,18 +875,14 @@\n </li>\n <li><a href=\"dev/api/slidge/contact/index.html#slidge.contact.LegacyContact.composing\">(slidge.contact.LegacyContact method)</a>\n </li>\n <li><a href=\"dev/api/slidge/core/gateway/base/index.html#slidge.core.gateway.base.BaseGateway.composing\">(slidge.core.gateway.base.BaseGateway method)</a>\n </li>\n <li><a href=\"dev/api/slidge/core/gateway/index.html#slidge.core.gateway.BaseGateway.composing\">(slidge.core.gateway.BaseGateway method)</a>\n </li>\n- <li><a href=\"dev/api/slidge/group/index.html#slidge.group.LegacyParticipant.composing\">(slidge.group.LegacyParticipant method)</a>\n-</li>\n- <li><a href=\"dev/api/slidge/group/participant/index.html#slidge.group.participant.LegacyParticipant.composing\">(slidge.group.participant.LegacyParticipant method)</a>\n-</li>\n <li><a href=\"dev/api/superduper/contact/index.html#superduper.contact.Contact.composing\">(superduper.contact.Contact method)</a>\n </li>\n <li><a href=\"dev/api/superduper/gateway/index.html#superduper.gateway.Gateway.composing\">(superduper.gateway.Gateway method)</a>\n </li>\n <li><a href=\"dev/api/superduper/group/index.html#superduper.group.Participant.composing\">(superduper.group.Participant method)</a>\n </li>\n </ul></li>\n@@ -939,18 +921,14 @@\n </li>\n <li><a href=\"dev/api/slidge/contact/index.html#slidge.contact.LegacyContact.correct\">(slidge.contact.LegacyContact method)</a>\n </li>\n <li><a href=\"dev/api/slidge/core/gateway/base/index.html#slidge.core.gateway.base.BaseGateway.correct\">(slidge.core.gateway.base.BaseGateway method)</a>\n </li>\n <li><a href=\"dev/api/slidge/core/gateway/index.html#slidge.core.gateway.BaseGateway.correct\">(slidge.core.gateway.BaseGateway method)</a>\n </li>\n- <li><a href=\"dev/api/slidge/group/index.html#slidge.group.LegacyParticipant.correct\">(slidge.group.LegacyParticipant method)</a>\n-</li>\n- <li><a href=\"dev/api/slidge/group/participant/index.html#slidge.group.participant.LegacyParticipant.correct\">(slidge.group.participant.LegacyParticipant method)</a>\n-</li>\n <li><a href=\"dev/api/superduper/contact/index.html#superduper.contact.Contact.correct\">(superduper.contact.Contact method)</a>\n </li>\n <li><a href=\"dev/api/superduper/gateway/index.html#superduper.gateway.Gateway.correct\">(superduper.gateway.Gateway method)</a>\n </li>\n <li><a href=\"dev/api/superduper/group/index.html#superduper.group.Participant.correct\">(superduper.group.Participant method)</a>\n </li>\n </ul></li>\n@@ -972,14 +950,16 @@\n \n <ul>\n <li><a href=\"dev/api/slidge/util/test/index.html#slidge.util.test.SlixTestPlus.debug\">(slidge.util.test.SlixTestPlus method)</a>\n </li>\n <li><a href=\"dev/api/slidge/util/util/index.html#slidge.util.util.SlidgeLogger.debug\">(slidge.util.util.SlidgeLogger method)</a>\n </li>\n </ul></li>\n+ <li><a href=\"dev/api/slidge/command/admin/index.html#slidge.command.admin.DeleteUser\">DeleteUser (class in slidge.command.admin)</a>\n+</li>\n <li><a href=\"dev/api/slidge/slixfix/link_preview/stanza/index.html#slidge.slixfix.link_preview.stanza.Description\">Description (class in slidge.slixfix.link_preview.stanza)</a>\n </li>\n <li><a href=\"dev/api/slidge/command/base/index.html#slidge.command.base.TableResult.description\">description (slidge.command.base.TableResult attribute)</a>\n \n <ul>\n <li><a href=\"dev/api/slidge/command/index.html#slidge.command.TableResult.description\">(slidge.command.TableResult attribute)</a>\n </li>\n@@ -997,18 +977,14 @@\n </li>\n <li><a href=\"dev/api/slidge/contact/index.html#slidge.contact.LegacyContact.displayed\">(slidge.contact.LegacyContact method)</a>\n </li>\n <li><a href=\"dev/api/slidge/core/gateway/base/index.html#slidge.core.gateway.base.BaseGateway.displayed\">(slidge.core.gateway.base.BaseGateway method)</a>\n </li>\n <li><a href=\"dev/api/slidge/core/gateway/index.html#slidge.core.gateway.BaseGateway.displayed\">(slidge.core.gateway.BaseGateway method)</a>\n </li>\n- <li><a href=\"dev/api/slidge/group/index.html#slidge.group.LegacyParticipant.displayed\">(slidge.group.LegacyParticipant method)</a>\n-</li>\n- <li><a href=\"dev/api/slidge/group/participant/index.html#slidge.group.participant.LegacyParticipant.displayed\">(slidge.group.participant.LegacyParticipant method)</a>\n-</li>\n <li><a href=\"dev/api/superduper/contact/index.html#superduper.contact.Contact.displayed\">(superduper.contact.Contact method)</a>\n </li>\n <li><a href=\"dev/api/superduper/gateway/index.html#superduper.gateway.Gateway.displayed\">(superduper.gateway.Gateway method)</a>\n </li>\n <li><a href=\"dev/api/superduper/group/index.html#superduper.group.Participant.displayed\">(superduper.group.Participant method)</a>\n </li>\n </ul></li>\n@@ -1074,25 +1050,23 @@\n </ul></li>\n <li><a href=\"dev/api/slidge/index.html#slidge.entrypoint\">entrypoint() (in module slidge)</a>\n </li>\n <li><a href=\"dev/api/slidge/util/util/index.html#slidge.util.util.SlidgeLogger.error\">error() (slidge.util.util.SlidgeLogger method)</a>\n </li>\n <li><a href=\"dev/api/slidge/util/util/index.html#slidge.util.util.SlidgeLogger.exception\">exception() (slidge.util.util.SlidgeLogger method)</a>\n </li>\n+ <li><a href=\"dev/api/slidge/command/admin/index.html#slidge.command.admin.Exec\">Exec (class in slidge.command.admin)</a>\n+</li>\n <li><a href=\"dev/api/slidge/util/types/index.html#slidge.util.types.URL.expandtabs\">expandtabs() (slidge.util.types.URL method)</a>\n </li>\n <li><a href=\"dev/api/slidge/contact/contact/index.html#slidge.contact.contact.LegacyContact.extended_away\">extended_away() (slidge.contact.contact.LegacyContact method)</a>\n \n <ul>\n <li><a href=\"dev/api/slidge/contact/index.html#slidge.contact.LegacyContact.extended_away\">(slidge.contact.LegacyContact method)</a>\n </li>\n- <li><a href=\"dev/api/slidge/group/index.html#slidge.group.LegacyParticipant.extended_away\">(slidge.group.LegacyParticipant method)</a>\n-</li>\n- <li><a href=\"dev/api/slidge/group/participant/index.html#slidge.group.participant.LegacyParticipant.extended_away\">(slidge.group.participant.LegacyParticipant method)</a>\n-</li>\n <li><a href=\"dev/api/superduper/contact/index.html#superduper.contact.Contact.extended_away\">(superduper.contact.Contact method)</a>\n </li>\n <li><a href=\"dev/api/superduper/group/index.html#superduper.group.Participant.extended_away\">(superduper.group.Participant method)</a>\n </li>\n </ul></li>\n </ul></td>\n </tr></table>\n@@ -1347,18 +1321,14 @@\n </li>\n <li><a href=\"dev/api/slidge/contact/index.html#slidge.contact.LegacyContact.gone\">(slidge.contact.LegacyContact method)</a>\n </li>\n <li><a href=\"dev/api/slidge/core/gateway/base/index.html#slidge.core.gateway.base.BaseGateway.gone\">(slidge.core.gateway.base.BaseGateway method)</a>\n </li>\n <li><a href=\"dev/api/slidge/core/gateway/index.html#slidge.core.gateway.BaseGateway.gone\">(slidge.core.gateway.BaseGateway method)</a>\n </li>\n- <li><a href=\"dev/api/slidge/group/index.html#slidge.group.LegacyParticipant.gone\">(slidge.group.LegacyParticipant method)</a>\n-</li>\n- <li><a href=\"dev/api/slidge/group/participant/index.html#slidge.group.participant.LegacyParticipant.gone\">(slidge.group.participant.LegacyParticipant method)</a>\n-</li>\n <li><a href=\"dev/api/superduper/contact/index.html#superduper.contact.Contact.gone\">(superduper.contact.Contact method)</a>\n </li>\n <li><a href=\"dev/api/superduper/gateway/index.html#superduper.gateway.Gateway.gone\">(superduper.gateway.Gateway method)</a>\n </li>\n <li><a href=\"dev/api/superduper/group/index.html#superduper.group.Participant.gone\">(superduper.group.Participant method)</a>\n </li>\n </ul></li>\n@@ -1396,17 +1366,21 @@\n <li><a href=\"dev/api/slidge/command/index.html#slidge.command.Confirmation.handler_kwargs\">(slidge.command.Confirmation attribute)</a>\n </li>\n </ul></li>\n </ul></td>\n <td style=\"width: 33%; vertical-align: top;\"><ul>\n <li><a href=\"dev/api/slidge/util/util/index.html#slidge.util.util.SlidgeLogger.hasHandlers\">hasHandlers() (slidge.util.util.SlidgeLogger method)</a>\n </li>\n- <li><a href=\"dev/api/slidge/command/base/index.html#slidge.command.base.Command.HELP\">HELP (slidge.command.base.Command attribute)</a>\n+ <li><a href=\"dev/api/slidge/command/admin/index.html#slidge.command.admin.AdminCommand.HELP\">HELP (slidge.command.admin.AdminCommand attribute)</a>\n \n <ul>\n+ <li><a href=\"dev/api/slidge/command/admin/index.html#slidge.command.admin.Exec.HELP\">(slidge.command.admin.Exec attribute)</a>\n+</li>\n+ <li><a href=\"dev/api/slidge/command/base/index.html#slidge.command.base.Command.HELP\">(slidge.command.base.Command attribute)</a>\n+</li>\n <li><a href=\"dev/api/slidge/command/index.html#slidge.command.Command.HELP\">(slidge.command.Command attribute)</a>\n </li>\n <li><a href=\"dev/api/slidge/command/user/index.html#slidge.command.user.ListContacts.HELP\">(slidge.command.user.ListContacts attribute)</a>\n </li>\n <li><a href=\"dev/api/slidge/command/user/index.html#slidge.command.user.ListGroups.HELP\">(slidge.command.user.ListGroups attribute)</a>\n </li>\n </ul></li>\n@@ -1435,18 +1409,14 @@\n </li>\n <li><a href=\"dev/api/slidge/contact/index.html#slidge.contact.LegacyContact.inactive\">(slidge.contact.LegacyContact method)</a>\n </li>\n <li><a href=\"dev/api/slidge/core/gateway/base/index.html#slidge.core.gateway.base.BaseGateway.inactive\">(slidge.core.gateway.base.BaseGateway method)</a>\n </li>\n <li><a href=\"dev/api/slidge/core/gateway/index.html#slidge.core.gateway.BaseGateway.inactive\">(slidge.core.gateway.BaseGateway method)</a>\n </li>\n- <li><a href=\"dev/api/slidge/group/index.html#slidge.group.LegacyParticipant.inactive\">(slidge.group.LegacyParticipant method)</a>\n-</li>\n- <li><a href=\"dev/api/slidge/group/participant/index.html#slidge.group.participant.LegacyParticipant.inactive\">(slidge.group.participant.LegacyParticipant method)</a>\n-</li>\n <li><a href=\"dev/api/superduper/contact/index.html#superduper.contact.Contact.inactive\">(superduper.contact.Contact method)</a>\n </li>\n <li><a href=\"dev/api/superduper/gateway/index.html#superduper.gateway.Gateway.inactive\">(superduper.gateway.Gateway method)</a>\n </li>\n <li><a href=\"dev/api/superduper/group/index.html#superduper.group.Participant.inactive\">(superduper.group.Participant method)</a>\n </li>\n </ul></li>\n@@ -1499,18 +1469,14 @@\n </li>\n <li><a href=\"dev/api/slidge/contact/index.html#slidge.contact.LegacyContact.invite_to\">(slidge.contact.LegacyContact method)</a>\n </li>\n <li><a href=\"dev/api/slidge/core/gateway/base/index.html#slidge.core.gateway.base.BaseGateway.invite_to\">(slidge.core.gateway.base.BaseGateway method)</a>\n </li>\n <li><a href=\"dev/api/slidge/core/gateway/index.html#slidge.core.gateway.BaseGateway.invite_to\">(slidge.core.gateway.BaseGateway method)</a>\n </li>\n- <li><a href=\"dev/api/slidge/group/index.html#slidge.group.LegacyParticipant.invite_to\">(slidge.group.LegacyParticipant method)</a>\n-</li>\n- <li><a href=\"dev/api/slidge/group/participant/index.html#slidge.group.participant.LegacyParticipant.invite_to\">(slidge.group.participant.LegacyParticipant method)</a>\n-</li>\n <li><a href=\"dev/api/superduper/contact/index.html#superduper.contact.Contact.invite_to\">(superduper.contact.Contact method)</a>\n </li>\n <li><a href=\"dev/api/superduper/gateway/index.html#superduper.gateway.Gateway.invite_to\">(superduper.gateway.Gateway method)</a>\n </li>\n <li><a href=\"dev/api/superduper/group/index.html#superduper.group.Participant.invite_to\">(superduper.group.Participant method)</a>\n </li>\n </ul></li>\n@@ -1756,14 +1722,16 @@\n </ul></li>\n <li><a href=\"dev/api/slidge/slixfix/link_preview/stanza/index.html#slidge.slixfix.link_preview.stanza.LinkPreview\">LinkPreview (class in slidge.slixfix.link_preview.stanza)</a>\n </li>\n <li><a href=\"dev/api/slidge/command/user/index.html#slidge.command.user.ListContacts\">ListContacts (class in slidge.command.user)</a>\n </li>\n <li><a href=\"dev/api/slidge/command/user/index.html#slidge.command.user.ListGroups\">ListGroups (class in slidge.command.user)</a>\n </li>\n+ <li><a href=\"dev/api/slidge/command/admin/index.html#slidge.command.admin.ListUsers\">ListUsers (class in slidge.command.admin)</a>\n+</li>\n <li><a href=\"dev/api/slidge/util/types/index.html#slidge.util.types.URL.ljust\">ljust() (slidge.util.types.URL method)</a>\n </li>\n <li><a href=\"dev/api/slidge/util/util/index.html#slidge.util.util.SlidgeLogger.log\">log() (slidge.util.util.SlidgeLogger method)</a>\n </li>\n <li><a href=\"dev/api/slidge/command/user/index.html#slidge.command.user.Login\">Login (class in slidge.command.user)</a>\n </li>\n <li><a href=\"dev/api/slidge/index.html#slidge.BaseSession.login\">login() (slidge.BaseSession method)</a>\n@@ -1999,17 +1967,21 @@\n </tr></table>\n </section>\n \n <section id=\"N\" class=\"genindex-section\">\n <h2>N</h2>\n <table style=\"width: 100%\" class=\"indextable genindextable\"><tr>\n <td style=\"width: 33%; vertical-align: top;\"><ul>\n- <li><a href=\"dev/api/slidge/command/base/index.html#slidge.command.base.Command.NAME\">NAME (slidge.command.base.Command attribute)</a>\n+ <li><a href=\"dev/api/slidge/command/admin/index.html#slidge.command.admin.AdminCommand.NAME\">NAME (slidge.command.admin.AdminCommand attribute)</a>\n \n <ul>\n+ <li><a href=\"dev/api/slidge/command/admin/index.html#slidge.command.admin.Exec.NAME\">(slidge.command.admin.Exec attribute)</a>\n+</li>\n+ <li><a href=\"dev/api/slidge/command/base/index.html#slidge.command.base.Command.NAME\">(slidge.command.base.Command attribute)</a>\n+</li>\n <li><a href=\"dev/api/slidge/command/index.html#slidge.command.Command.NAME\">(slidge.command.Command attribute)</a>\n </li>\n <li><a href=\"dev/api/slidge/command/user/index.html#slidge.command.user.ListContacts.NAME\">(slidge.command.user.ListContacts attribute)</a>\n </li>\n <li><a href=\"dev/api/slidge/command/user/index.html#slidge.command.user.ListGroups.NAME\">(slidge.command.user.ListGroups attribute)</a>\n </li>\n </ul></li>\n@@ -2037,17 +2009,27 @@\n <li><a href=\"dev/api/slidge/slixfix/link_preview/stanza/index.html#slidge.slixfix.link_preview.stanza.Type_.next\">(slidge.slixfix.link_preview.stanza.Type_ method)</a>\n </li>\n <li><a href=\"dev/api/slidge/slixfix/link_preview/stanza/index.html#slidge.slixfix.link_preview.stanza.Url.next\">(slidge.slixfix.link_preview.stanza.Url method)</a>\n </li>\n </ul></li>\n </ul></td>\n <td style=\"width: 33%; vertical-align: top;\"><ul>\n- <li><a href=\"dev/api/slidge/command/base/index.html#slidge.command.base.Command.NODE\">NODE (slidge.command.base.Command attribute)</a>\n+ <li><a href=\"dev/api/slidge/command/admin/index.html#slidge.command.admin.AdminCommand.NODE\">NODE (slidge.command.admin.AdminCommand attribute)</a>\n \n <ul>\n+ <li><a href=\"dev/api/slidge/command/admin/index.html#slidge.command.admin.ChangeLoglevel.NODE\">(slidge.command.admin.ChangeLoglevel attribute)</a>\n+</li>\n+ <li><a href=\"dev/api/slidge/command/admin/index.html#slidge.command.admin.DeleteUser.NODE\">(slidge.command.admin.DeleteUser attribute)</a>\n+</li>\n+ <li><a href=\"dev/api/slidge/command/admin/index.html#slidge.command.admin.ListUsers.NODE\">(slidge.command.admin.ListUsers attribute)</a>\n+</li>\n+ <li><a href=\"dev/api/slidge/command/admin/index.html#slidge.command.admin.SlidgeInfo.NODE\">(slidge.command.admin.SlidgeInfo attribute)</a>\n+</li>\n+ <li><a href=\"dev/api/slidge/command/base/index.html#slidge.command.base.Command.NODE\">(slidge.command.base.Command attribute)</a>\n+</li>\n <li><a href=\"dev/api/slidge/command/index.html#slidge.command.Command.NODE\">(slidge.command.Command attribute)</a>\n </li>\n <li><a href=\"dev/api/slidge/command/user/index.html#slidge.command.user.CreateGroup.NODE\">(slidge.command.user.CreateGroup attribute)</a>\n </li>\n <li><a href=\"dev/api/slidge/command/user/index.html#slidge.command.user.ListContacts.NODE\">(slidge.command.user.ListContacts attribute)</a>\n </li>\n <li><a href=\"dev/api/slidge/command/user/index.html#slidge.command.user.ListGroups.NODE\">(slidge.command.user.ListGroups attribute)</a>\n@@ -2070,18 +2052,14 @@\n <li><a href=\"glossary.html#term-Official-Client\"><strong>Official Client</strong></a>\n </li>\n <li><a href=\"dev/api/slidge/contact/contact/index.html#slidge.contact.contact.LegacyContact.offline\">offline() (slidge.contact.contact.LegacyContact method)</a>\n \n <ul>\n <li><a href=\"dev/api/slidge/contact/index.html#slidge.contact.LegacyContact.offline\">(slidge.contact.LegacyContact method)</a>\n </li>\n- <li><a href=\"dev/api/slidge/group/index.html#slidge.group.LegacyParticipant.offline\">(slidge.group.LegacyParticipant method)</a>\n-</li>\n- <li><a href=\"dev/api/slidge/group/participant/index.html#slidge.group.participant.LegacyParticipant.offline\">(slidge.group.participant.LegacyParticipant method)</a>\n-</li>\n <li><a href=\"dev/api/superduper/contact/index.html#superduper.contact.Contact.offline\">(superduper.contact.Contact method)</a>\n </li>\n <li><a href=\"dev/api/superduper/group/index.html#superduper.group.Participant.offline\">(superduper.group.Participant method)</a>\n </li>\n </ul></li>\n <li><a href=\"dev/api/slidge/index.html#slidge.BaseSession.on_active\">on_active() (slidge.BaseSession method)</a>\n \n@@ -2268,18 +2246,14 @@\n </li>\n </ul></li>\n <li><a href=\"dev/api/slidge/contact/contact/index.html#slidge.contact.contact.LegacyContact.online\">online() (slidge.contact.contact.LegacyContact method)</a>\n \n <ul>\n <li><a href=\"dev/api/slidge/contact/index.html#slidge.contact.LegacyContact.online\">(slidge.contact.LegacyContact method)</a>\n </li>\n- <li><a href=\"dev/api/slidge/group/index.html#slidge.group.LegacyParticipant.online\">(slidge.group.LegacyParticipant method)</a>\n-</li>\n- <li><a href=\"dev/api/slidge/group/participant/index.html#slidge.group.participant.LegacyParticipant.online\">(slidge.group.participant.LegacyParticipant method)</a>\n-</li>\n <li><a href=\"dev/api/superduper/contact/index.html#superduper.contact.Contact.online\">(superduper.contact.Contact method)</a>\n </li>\n <li><a href=\"dev/api/superduper/group/index.html#superduper.group.Participant.online\">(superduper.group.Participant method)</a>\n </li>\n </ul></li>\n <li><a href=\"dev/api/slidge/slixfix/link_preview/stanza/index.html#slidge.slixfix.link_preview.stanza.OpenGraphMixin\">OpenGraphMixin (class in slidge.slixfix.link_preview.stanza)</a>\n </li>\n@@ -2304,18 +2278,14 @@\n </li>\n <li><a href=\"dev/api/slidge/contact/index.html#slidge.contact.LegacyContact.paused\">(slidge.contact.LegacyContact method)</a>\n </li>\n <li><a href=\"dev/api/slidge/core/gateway/base/index.html#slidge.core.gateway.base.BaseGateway.paused\">(slidge.core.gateway.base.BaseGateway method)</a>\n </li>\n <li><a href=\"dev/api/slidge/core/gateway/index.html#slidge.core.gateway.BaseGateway.paused\">(slidge.core.gateway.BaseGateway method)</a>\n </li>\n- <li><a href=\"dev/api/slidge/group/index.html#slidge.group.LegacyParticipant.paused\">(slidge.group.LegacyParticipant method)</a>\n-</li>\n- <li><a href=\"dev/api/slidge/group/participant/index.html#slidge.group.participant.LegacyParticipant.paused\">(slidge.group.participant.LegacyParticipant method)</a>\n-</li>\n <li><a href=\"dev/api/superduper/contact/index.html#superduper.contact.Contact.paused\">(superduper.contact.Contact method)</a>\n </li>\n <li><a href=\"dev/api/superduper/gateway/index.html#superduper.gateway.Gateway.paused\">(superduper.gateway.Gateway method)</a>\n </li>\n <li><a href=\"dev/api/superduper/group/index.html#superduper.group.Participant.paused\">(superduper.group.Participant method)</a>\n </li>\n </ul></li>\n@@ -2397,17 +2367,29 @@\n </tr></table>\n </section>\n \n <section id=\"R\" class=\"genindex-section\">\n <h2>R</h2>\n <table style=\"width: 100%\" class=\"indextable genindextable\"><tr>\n <td style=\"width: 33%; vertical-align: top;\"><ul>\n- <li><a href=\"dev/api/slidge/command/base/index.html#slidge.command.base.Command.raise_if_not_authorized\">raise_if_not_authorized() (slidge.command.base.Command method)</a>\n+ <li><a href=\"dev/api/slidge/command/admin/index.html#slidge.command.admin.AdminCommand.raise_if_not_authorized\">raise_if_not_authorized() (slidge.command.admin.AdminCommand method)</a>\n \n <ul>\n+ <li><a href=\"dev/api/slidge/command/admin/index.html#slidge.command.admin.ChangeLoglevel.raise_if_not_authorized\">(slidge.command.admin.ChangeLoglevel method)</a>\n+</li>\n+ <li><a href=\"dev/api/slidge/command/admin/index.html#slidge.command.admin.DeleteUser.raise_if_not_authorized\">(slidge.command.admin.DeleteUser method)</a>\n+</li>\n+ <li><a href=\"dev/api/slidge/command/admin/index.html#slidge.command.admin.Exec.raise_if_not_authorized\">(slidge.command.admin.Exec method)</a>\n+</li>\n+ <li><a href=\"dev/api/slidge/command/admin/index.html#slidge.command.admin.ListUsers.raise_if_not_authorized\">(slidge.command.admin.ListUsers method)</a>\n+</li>\n+ <li><a href=\"dev/api/slidge/command/admin/index.html#slidge.command.admin.SlidgeInfo.raise_if_not_authorized\">(slidge.command.admin.SlidgeInfo method)</a>\n+</li>\n+ <li><a href=\"dev/api/slidge/command/base/index.html#slidge.command.base.Command.raise_if_not_authorized\">(slidge.command.base.Command method)</a>\n+</li>\n <li><a href=\"dev/api/slidge/command/index.html#slidge.command.Command.raise_if_not_authorized\">(slidge.command.Command method)</a>\n </li>\n <li><a href=\"dev/api/slidge/command/user/index.html#slidge.command.user.CreateGroup.raise_if_not_authorized\">(slidge.command.user.CreateGroup method)</a>\n </li>\n <li><a href=\"dev/api/slidge/command/user/index.html#slidge.command.user.ListContacts.raise_if_not_authorized\">(slidge.command.user.ListContacts method)</a>\n </li>\n <li><a href=\"dev/api/slidge/command/user/index.html#slidge.command.user.ListGroups.raise_if_not_authorized\">(slidge.command.user.ListGroups method)</a>\n@@ -2428,18 +2410,14 @@\n </li>\n <li><a href=\"dev/api/slidge/contact/index.html#slidge.contact.LegacyContact.react\">(slidge.contact.LegacyContact method)</a>\n </li>\n <li><a href=\"dev/api/slidge/core/gateway/base/index.html#slidge.core.gateway.base.BaseGateway.react\">(slidge.core.gateway.base.BaseGateway method)</a>\n </li>\n <li><a href=\"dev/api/slidge/core/gateway/index.html#slidge.core.gateway.BaseGateway.react\">(slidge.core.gateway.BaseGateway method)</a>\n </li>\n- <li><a href=\"dev/api/slidge/group/index.html#slidge.group.LegacyParticipant.react\">(slidge.group.LegacyParticipant method)</a>\n-</li>\n- <li><a href=\"dev/api/slidge/group/participant/index.html#slidge.group.participant.LegacyParticipant.react\">(slidge.group.participant.LegacyParticipant method)</a>\n-</li>\n <li><a href=\"dev/api/superduper/contact/index.html#superduper.contact.Contact.react\">(superduper.contact.Contact method)</a>\n </li>\n <li><a href=\"dev/api/superduper/gateway/index.html#superduper.gateway.Gateway.react\">(superduper.gateway.Gateway method)</a>\n </li>\n <li><a href=\"dev/api/superduper/group/index.html#superduper.group.Participant.react\">(superduper.group.Participant method)</a>\n </li>\n </ul></li>\n@@ -2450,18 +2428,14 @@\n </li>\n <li><a href=\"dev/api/slidge/contact/index.html#slidge.contact.LegacyContact.received\">(slidge.contact.LegacyContact method)</a>\n </li>\n <li><a href=\"dev/api/slidge/core/gateway/base/index.html#slidge.core.gateway.base.BaseGateway.received\">(slidge.core.gateway.base.BaseGateway method)</a>\n </li>\n <li><a href=\"dev/api/slidge/core/gateway/index.html#slidge.core.gateway.BaseGateway.received\">(slidge.core.gateway.BaseGateway method)</a>\n </li>\n- <li><a href=\"dev/api/slidge/group/index.html#slidge.group.LegacyParticipant.received\">(slidge.group.LegacyParticipant method)</a>\n-</li>\n- <li><a href=\"dev/api/slidge/group/participant/index.html#slidge.group.participant.LegacyParticipant.received\">(slidge.group.participant.LegacyParticipant method)</a>\n-</li>\n <li><a href=\"dev/api/superduper/contact/index.html#superduper.contact.Contact.received\">(superduper.contact.Contact method)</a>\n </li>\n <li><a href=\"dev/api/superduper/gateway/index.html#superduper.gateway.Gateway.received\">(superduper.gateway.Gateway method)</a>\n </li>\n <li><a href=\"dev/api/superduper/group/index.html#superduper.group.Participant.received\">(superduper.group.Participant method)</a>\n </li>\n </ul></li>\n@@ -2584,18 +2558,14 @@\n </li>\n <li><a href=\"dev/api/slidge/contact/index.html#slidge.contact.LegacyContact.retract\">(slidge.contact.LegacyContact method)</a>\n </li>\n <li><a href=\"dev/api/slidge/core/gateway/base/index.html#slidge.core.gateway.base.BaseGateway.retract\">(slidge.core.gateway.base.BaseGateway method)</a>\n </li>\n <li><a href=\"dev/api/slidge/core/gateway/index.html#slidge.core.gateway.BaseGateway.retract\">(slidge.core.gateway.BaseGateway method)</a>\n </li>\n- <li><a href=\"dev/api/slidge/group/index.html#slidge.group.LegacyParticipant.retract\">(slidge.group.LegacyParticipant method)</a>\n-</li>\n- <li><a href=\"dev/api/slidge/group/participant/index.html#slidge.group.participant.LegacyParticipant.retract\">(slidge.group.participant.LegacyParticipant method)</a>\n-</li>\n <li><a href=\"dev/api/superduper/contact/index.html#superduper.contact.Contact.retract\">(superduper.contact.Contact method)</a>\n </li>\n <li><a href=\"dev/api/superduper/gateway/index.html#superduper.gateway.Gateway.retract\">(superduper.gateway.Gateway method)</a>\n </li>\n <li><a href=\"dev/api/superduper/group/index.html#superduper.group.Participant.retract\">(superduper.group.Participant method)</a>\n </li>\n </ul></li>\n@@ -2625,17 +2595,29 @@\n </li>\n <li><a href=\"dev/api/slidge/util/types/index.html#slidge.util.types.URL.rpartition\">rpartition() (slidge.util.types.URL method)</a>\n </li>\n <li><a href=\"dev/api/slidge/util/types/index.html#slidge.util.types.URL.rsplit\">rsplit() (slidge.util.types.URL method)</a>\n </li>\n <li><a href=\"dev/api/slidge/util/types/index.html#slidge.util.types.URL.rstrip\">rstrip() (slidge.util.types.URL method)</a>\n </li>\n- <li><a href=\"dev/api/slidge/command/base/index.html#slidge.command.base.Command.run\">run() (slidge.command.base.Command method)</a>\n+ <li><a href=\"dev/api/slidge/command/admin/index.html#slidge.command.admin.AdminCommand.run\">run() (slidge.command.admin.AdminCommand method)</a>\n \n <ul>\n+ <li><a href=\"dev/api/slidge/command/admin/index.html#slidge.command.admin.ChangeLoglevel.run\">(slidge.command.admin.ChangeLoglevel method)</a>\n+</li>\n+ <li><a href=\"dev/api/slidge/command/admin/index.html#slidge.command.admin.DeleteUser.run\">(slidge.command.admin.DeleteUser method)</a>\n+</li>\n+ <li><a href=\"dev/api/slidge/command/admin/index.html#slidge.command.admin.Exec.run\">(slidge.command.admin.Exec method)</a>\n+</li>\n+ <li><a href=\"dev/api/slidge/command/admin/index.html#slidge.command.admin.ListUsers.run\">(slidge.command.admin.ListUsers method)</a>\n+</li>\n+ <li><a href=\"dev/api/slidge/command/admin/index.html#slidge.command.admin.SlidgeInfo.run\">(slidge.command.admin.SlidgeInfo method)</a>\n+</li>\n+ <li><a href=\"dev/api/slidge/command/base/index.html#slidge.command.base.Command.run\">(slidge.command.base.Command method)</a>\n+</li>\n <li><a href=\"dev/api/slidge/command/index.html#slidge.command.Command.run\">(slidge.command.Command method)</a>\n </li>\n <li><a href=\"dev/api/slidge/command/user/index.html#slidge.command.user.CreateGroup.run\">(slidge.command.user.CreateGroup method)</a>\n </li>\n <li><a href=\"dev/api/slidge/command/user/index.html#slidge.command.user.ListContacts.run\">(slidge.command.user.ListContacts method)</a>\n </li>\n <li><a href=\"dev/api/slidge/command/user/index.html#slidge.command.user.ListGroups.run\">(slidge.command.user.ListGroups method)</a>\n@@ -2714,18 +2696,14 @@\n </li>\n <li><a href=\"dev/api/slidge/contact/index.html#slidge.contact.LegacyContact.send_file\">(slidge.contact.LegacyContact method)</a>\n </li>\n <li><a href=\"dev/api/slidge/core/gateway/base/index.html#slidge.core.gateway.base.BaseGateway.send_file\">(slidge.core.gateway.base.BaseGateway method)</a>\n </li>\n <li><a href=\"dev/api/slidge/core/gateway/index.html#slidge.core.gateway.BaseGateway.send_file\">(slidge.core.gateway.BaseGateway method)</a>\n </li>\n- <li><a href=\"dev/api/slidge/group/index.html#slidge.group.LegacyParticipant.send_file\">(slidge.group.LegacyParticipant method)</a>\n-</li>\n- <li><a href=\"dev/api/slidge/group/participant/index.html#slidge.group.participant.LegacyParticipant.send_file\">(slidge.group.participant.LegacyParticipant method)</a>\n-</li>\n <li><a href=\"dev/api/superduper/contact/index.html#superduper.contact.Contact.send_file\">(superduper.contact.Contact method)</a>\n </li>\n <li><a href=\"dev/api/superduper/gateway/index.html#superduper.gateway.Gateway.send_file\">(superduper.gateway.Gateway method)</a>\n </li>\n <li><a href=\"dev/api/superduper/group/index.html#superduper.group.Participant.send_file\">(superduper.group.Participant method)</a>\n </li>\n </ul></li>\n@@ -2790,18 +2768,14 @@\n </li>\n <li><a href=\"dev/api/slidge/contact/index.html#slidge.contact.LegacyContact.send_text\">(slidge.contact.LegacyContact method)</a>\n </li>\n <li><a href=\"dev/api/slidge/core/gateway/base/index.html#slidge.core.gateway.base.BaseGateway.send_text\">(slidge.core.gateway.base.BaseGateway method)</a>\n </li>\n <li><a href=\"dev/api/slidge/core/gateway/index.html#slidge.core.gateway.BaseGateway.send_text\">(slidge.core.gateway.BaseGateway method)</a>\n </li>\n- <li><a href=\"dev/api/slidge/group/index.html#slidge.group.LegacyParticipant.send_text\">(slidge.group.LegacyParticipant method)</a>\n-</li>\n- <li><a href=\"dev/api/slidge/group/participant/index.html#slidge.group.participant.LegacyParticipant.send_text\">(slidge.group.participant.LegacyParticipant method)</a>\n-</li>\n <li><a href=\"dev/api/superduper/contact/index.html#superduper.contact.Contact.send_text\">(superduper.contact.Contact method)</a>\n </li>\n <li><a href=\"dev/api/superduper/gateway/index.html#superduper.gateway.Gateway.send_text\">(superduper.gateway.Gateway method)</a>\n </li>\n <li><a href=\"dev/api/superduper/group/index.html#superduper.group.Participant.send_text\">(superduper.group.Participant method)</a>\n </li>\n </ul></li>\n@@ -2812,18 +2786,14 @@\n <ul>\n <li><a href=\"dev/api/slidge/contact/index.html#slidge.contact.LegacyContact.set_avatar\">(slidge.contact.LegacyContact method)</a>\n </li>\n <li><a href=\"dev/api/slidge/core/mixins/avatar/index.html#slidge.core.mixins.avatar.AvatarMixin.set_avatar\">(slidge.core.mixins.avatar.AvatarMixin method)</a>\n </li>\n <li><a href=\"dev/api/slidge/core/mixins/index.html#slidge.core.mixins.AvatarMixin.set_avatar\">(slidge.core.mixins.AvatarMixin method)</a>\n </li>\n- <li><a href=\"dev/api/slidge/group/index.html#slidge.group.LegacyMUC.set_avatar\">(slidge.group.LegacyMUC method)</a>\n-</li>\n- <li><a href=\"dev/api/slidge/group/room/index.html#slidge.group.room.LegacyMUC.set_avatar\">(slidge.group.room.LegacyMUC method)</a>\n-</li>\n <li><a href=\"dev/api/superduper/contact/index.html#superduper.contact.Contact.set_avatar\">(superduper.contact.Contact method)</a>\n </li>\n <li><a href=\"dev/api/superduper/group/index.html#superduper.group.MUC.set_avatar\">(superduper.group.MUC method)</a>\n </li>\n </ul></li>\n <li><a href=\"dev/api/slidge/util/db/index.html#slidge.util.db.UserStore.set_file\">set_file() (slidge.util.db.UserStore method)</a>\n </li>\n@@ -3000,30 +2970,30 @@\n <li>\n slidge.core.gateway\n \n <ul>\n <li><a href=\"dev/api/slidge/core/gateway/index.html#module-slidge.core.gateway\">module</a>\n </li>\n </ul></li>\n- </ul></td>\n- <td style=\"width: 33%; vertical-align: top;\"><ul>\n <li>\n slidge.core.gateway.base\n \n <ul>\n <li><a href=\"dev/api/slidge/core/gateway/base/index.html#module-slidge.core.gateway.base\">module</a>\n </li>\n </ul></li>\n <li>\n slidge.core.gateway.caps\n \n <ul>\n <li><a href=\"dev/api/slidge/core/gateway/caps/index.html#module-slidge.core.gateway.caps\">module</a>\n </li>\n </ul></li>\n+ </ul></td>\n+ <td style=\"width: 33%; vertical-align: top;\"><ul>\n <li>\n slidge.core.gateway.delivery_receipt\n \n <ul>\n <li><a href=\"dev/api/slidge/core/gateway/delivery_receipt/index.html#module-slidge.core.gateway.delivery_receipt\">module</a>\n </li>\n </ul></li>\n@@ -3303,14 +3273,16 @@\n <li>\n slidge.util.util\n \n <ul>\n <li><a href=\"dev/api/slidge/util/util/index.html#module-slidge.util.util\">module</a>\n </li>\n </ul></li>\n+ <li><a href=\"dev/api/slidge/command/admin/index.html#slidge.command.admin.SlidgeInfo\">SlidgeInfo (class in slidge.command.admin)</a>\n+</li>\n <li><a href=\"dev/api/slidge/util/util/index.html#slidge.util.util.SlidgeLogger\">SlidgeLogger (class in slidge.util.util)</a>\n </li>\n <li><a href=\"dev/api/slidge/util/test/index.html#slidge.util.test.SlidgeTest\">SlidgeTest (class in slidge.util.test)</a>\n </li>\n <li><a href=\"dev/api/slidge/util/test/index.html#slidge.util.test.SlixTestPlus\">SlixTestPlus (class in slidge.util.test)</a>\n </li>\n <li><a href=\"dev/api/slidge/index.html#slidge.BaseSession.SPECIAL_MSG_ID_PREFIX\">SPECIAL_MSG_ID_PREFIX (slidge.BaseSession attribute)</a>\n", "details": [{"source1": "html2text {}", "source2": "html2text {}", "unified_diff": "@@ -64,243 +64,274 @@\n \n \n ****** Index ******\n A | B | C | D | E | F | G | H | I | J | K | L | M | N | O | P | Q | R | S | T |\n U | V | W | X | Y | Z\n \n ***** A *****\n- * assertIs()_(slidge.util.test.SlidgeTest_method)\n+ * assertGreaterEqual()_\n+ (slidge.util.test.SlidgeTest_method)\n o (slidge.util.test.SlixTestPlus_method)\n- * assertIsInstance()_(slidge.util.test.SlidgeTest\n+ * assertIn()_(slidge.util.test.SlidgeTest\n method)\n- * ABCSubclassableOnceAtMost_(class_in_slidge.util) o (slidge.util.test.SlixTestPlus_method)\n- o (class_in_slidge.util.util) * assertIsNone()_(slidge.util.test.SlidgeTest\n- * accept_friend_request()_ method)\n- (slidge.contact.contact.LegacyContact_method) o (slidge.util.test.SlixTestPlus_method)\n- o (slidge.contact.LegacyContact_method) * assertIsNot()_(slidge.util.test.SlidgeTest\n- o (superduper.contact.Contact_method) method)\n- * ACCESS_(slidge.command.base.Command_attribute) o (slidge.util.test.SlixTestPlus_method)\n- o (slidge.command.Command_attribute) * assertIsNotNone()_(slidge.util.test.SlidgeTest\n- * ack()_(slidge.BaseGateway_method) method)\n- o (slidge.contact.contact.LegacyContact_method) o (slidge.util.test.SlixTestPlus_method)\n- o (slidge.contact.LegacyContact_method) * assertLess()_(slidge.util.test.SlidgeTest_method)\n- o (slidge.core.gateway.base.BaseGateway_method) o (slidge.util.test.SlixTestPlus_method)\n- o (slidge.core.gateway.BaseGateway_method) * assertLessEqual()_(slidge.util.test.SlidgeTest\n- o (slidge.group.LegacyParticipant_method) method)\n- o (slidge.group.participant.LegacyParticipant o (slidge.util.test.SlixTestPlus_method)\n- method) * assertListEqual()_(slidge.util.test.SlidgeTest\n- o (superduper.contact.Contact_method) method)\n- o (superduper.gateway.Gateway_method) o (slidge.util.test.SlixTestPlus_method)\n- o (superduper.group.Participant_method) * assertLogs()_(slidge.util.test.SlidgeTest_method)\n- * active()_(slidge.BaseGateway_method) o (slidge.util.test.SlixTestPlus_method)\n- o (slidge.contact.contact.LegacyContact_method) * assertMultiLineEqual()_\n- o (slidge.contact.LegacyContact_method) (slidge.util.test.SlidgeTest_method)\n+ o (slidge.util.test.SlixTestPlus_method)\n+ * assertIs()_(slidge.util.test.SlidgeTest\n+ method)\n+ o (slidge.util.test.SlixTestPlus_method)\n+ * assertIsInstance()_\n+ (slidge.util.test.SlidgeTest_method)\n+ o (slidge.util.test.SlixTestPlus_method)\n+ * ABCSubclassableOnceAtMost_(class_in_slidge.util) * assertIsNone()_(slidge.util.test.SlidgeTest\n+ o (class_in_slidge.util.util) method)\n+ * accept_friend_request()_ o (slidge.util.test.SlixTestPlus_method)\n+ (slidge.contact.contact.LegacyContact_method) * assertIsNot()_(slidge.util.test.SlidgeTest\n+ o (slidge.contact.LegacyContact_method) method)\n+ o (superduper.contact.Contact_method) o (slidge.util.test.SlixTestPlus_method)\n+ * ACCESS_(slidge.command.base.Command_attribute) * assertIsNotNone()_\n+ o (slidge.command.Command_attribute) (slidge.util.test.SlidgeTest_method)\n+ * ack()_(slidge.BaseGateway_method) o (slidge.util.test.SlixTestPlus_method)\n+ o (slidge.contact.contact.LegacyContact_method) * assertLess()_(slidge.util.test.SlidgeTest\n+ o (slidge.contact.LegacyContact_method) method)\n o (slidge.core.gateway.base.BaseGateway_method) o (slidge.util.test.SlixTestPlus_method)\n- o (slidge.core.gateway.BaseGateway_method) * assertNoLogs()_(slidge.util.test.SlidgeTest\n- o (slidge.group.LegacyParticipant_method) method)\n- o (slidge.group.participant.LegacyParticipant o (slidge.util.test.SlixTestPlus_method)\n- method) * assertNotAlmostEqual()_\n+ o (slidge.core.gateway.BaseGateway_method) * assertLessEqual()_\n o (superduper.contact.Contact_method) (slidge.util.test.SlidgeTest_method)\n o (superduper.gateway.Gateway_method) o (slidge.util.test.SlixTestPlus_method)\n- o (superduper.group.Participant_method) * assertNotEqual()_(slidge.util.test.SlidgeTest\n- * Ad-hoc_Command method)\n- * add()_(slidge.slixfix.roster.YesSet_method) o (slidge.util.test.SlixTestPlus_method)\n- o (slidge.util.db.UserStore_method) * assertNotIn()_(slidge.util.test.SlidgeTest\n- * add_note()_(slidge.__main__.SigTermInterrupt_method) method)\n- o (slidge.command.register.TwoFactorNotRequired o (slidge.util.test.SlixTestPlus_method)\n- method) * assertNotIsInstance()_\n- o (slidge.contact.roster.ContactIsUser_method) (slidge.util.test.SlidgeTest_method)\n- o (slidge.core.gateway.session_dispatcher.Ignore o (slidge.util.test.SlixTestPlus_method)\n- method) * assertNotRegex()_(slidge.util.test.SlidgeTest\n- * add_to_bookmarks()_(slidge.group.LegacyMUC_method) method)\n- o (slidge.group.room.LegacyMUC_method) o (slidge.util.test.SlixTestPlus_method)\n- o (superduper.group.MUC_method) * assertRaises()_(slidge.util.test.SlidgeTest\n- * add_to_roster()_(slidge.contact.contact.LegacyContact method)\n- method) o (slidge.util.test.SlixTestPlus_method)\n- o (slidge.contact.LegacyContact_method) * assertRaisesRegex()_(slidge.util.test.SlidgeTest\n- o (superduper.contact.Contact_method) method)\n- * addClassCleanup()_(slidge.util.test.SlidgeTest_class o (slidge.util.test.SlixTestPlus_method)\n- method) * assertRegex()_(slidge.util.test.SlidgeTest\n- o (slidge.util.test.SlixTestPlus_class_method) method)\n- * addCleanup()_(slidge.util.test.SlidgeTest_method) o (slidge.util.test.SlixTestPlus_method)\n- o (slidge.util.test.SlixTestPlus_method) * assertSequenceEqual()_\n- * addFilter()_(slidge.util.util.SlidgeLogger_method) (slidge.util.test.SlidgeTest_method)\n- * addHandler()_(slidge.util.util.SlidgeLogger_method) o (slidge.util.test.SlixTestPlus_method)\n- * addLoggingLevel()_(in_module_slidge.util.util) * assertSetEqual()_(slidge.util.test.SlidgeTest\n- * addTypeEqualityFunc()_(slidge.util.test.SlidgeTest method)\n+ o (superduper.group.Participant_method) * assertListEqual()_\n+ * active()_(slidge.BaseGateway_method) (slidge.util.test.SlidgeTest_method)\n+ o (slidge.contact.contact.LegacyContact_method) o (slidge.util.test.SlixTestPlus_method)\n+ o (slidge.contact.LegacyContact_method) * assertLogs()_(slidge.util.test.SlidgeTest\n+ o (slidge.core.gateway.base.BaseGateway_method) method)\n+ o (slidge.core.gateway.BaseGateway_method) o (slidge.util.test.SlixTestPlus_method)\n+ o (superduper.contact.Contact_method) * assertMultiLineEqual()_\n+ o (superduper.gateway.Gateway_method) (slidge.util.test.SlidgeTest_method)\n+ o (superduper.group.Participant_method) o (slidge.util.test.SlixTestPlus_method)\n+ * Ad-hoc_Command * assertNoLogs()_(slidge.util.test.SlidgeTest\n+ * add()_(slidge.slixfix.roster.YesSet_method) method)\n+ o (slidge.util.db.UserStore_method) o (slidge.util.test.SlixTestPlus_method)\n+ * add_note()_(slidge.__main__.SigTermInterrupt_method) * assertNotAlmostEqual()_\n+ o (slidge.command.register.TwoFactorNotRequired (slidge.util.test.SlidgeTest_method)\n+ method) o (slidge.util.test.SlixTestPlus_method)\n+ o (slidge.contact.roster.ContactIsUser_method) * assertNotEqual()_\n+ o (slidge.core.gateway.session_dispatcher.Ignore (slidge.util.test.SlidgeTest_method)\n+ method) o (slidge.util.test.SlixTestPlus_method)\n+ * add_to_bookmarks()_(slidge.group.LegacyMUC_method) * assertNotIn()_(slidge.util.test.SlidgeTest\n+ o (slidge.group.room.LegacyMUC_method) method)\n+ o (superduper.group.MUC_method) o (slidge.util.test.SlixTestPlus_method)\n+ * add_to_roster()_(slidge.contact.contact.LegacyContact * assertNotIsInstance()_\n+ method) (slidge.util.test.SlidgeTest_method)\n+ o (slidge.contact.LegacyContact_method) o (slidge.util.test.SlixTestPlus_method)\n+ o (superduper.contact.Contact_method) * assertNotRegex()_\n+ * addClassCleanup()_(slidge.util.test.SlidgeTest_class (slidge.util.test.SlidgeTest_method)\n method) o (slidge.util.test.SlixTestPlus_method)\n- o (slidge.util.test.SlixTestPlus_method) * assertTrue()_(slidge.util.test.SlidgeTest_method)\n- * AdhocProvider_(class_in_slidge.command.adhoc) o (slidge.util.test.SlixTestPlus_method)\n- * append()_(slidge.slixfix.link_preview.stanza.Description * assertTupleEqual()_(slidge.util.test.SlidgeTest\n+ o (slidge.util.test.SlixTestPlus_class_method) * assertRaises()_(slidge.util.test.SlidgeTest\n+ * addCleanup()_(slidge.util.test.SlidgeTest_method) method)\n+ o (slidge.util.test.SlixTestPlus_method) o (slidge.util.test.SlixTestPlus_method)\n+ * addFilter()_(slidge.util.util.SlidgeLogger_method) * assertRaisesRegex()_\n+ * addHandler()_(slidge.util.util.SlidgeLogger_method) (slidge.util.test.SlidgeTest_method)\n+ * addLoggingLevel()_(in_module_slidge.util.util) o (slidge.util.test.SlixTestPlus_method)\n+ * addTypeEqualityFunc()_(slidge.util.test.SlidgeTest * assertRegex()_(slidge.util.test.SlidgeTest\n method) method)\n- o (slidge.slixfix.link_preview.stanza.Image_method) o (slidge.util.test.SlixTestPlus_method)\n- o (slidge.slixfix.link_preview.stanza.LinkPreview * assertWarns()_(slidge.util.test.SlidgeTest\n- method) method)\n- o (slidge.slixfix.link_preview.stanza.OpenGraphMixin o (slidge.util.test.SlixTestPlus_method)\n- method) * assertWarnsRegex()_(slidge.util.test.SlidgeTest\n- o (slidge.slixfix.link_preview.stanza.SiteName method)\n+ o (slidge.util.test.SlixTestPlus_method) o (slidge.util.test.SlixTestPlus_method)\n+ * AdhocProvider_(class_in_slidge.command.adhoc) * assertSequenceEqual()_\n+ * AdminCommand_(class_in_slidge.command.admin) (slidge.util.test.SlidgeTest_method)\n+ * append()_(slidge.slixfix.link_preview.stanza.Description o (slidge.util.test.SlixTestPlus_method)\n+ method) * assertSetEqual()_\n+ o (slidge.slixfix.link_preview.stanza.Image_method) (slidge.util.test.SlidgeTest_method)\n+ o (slidge.slixfix.link_preview.stanza.LinkPreview o (slidge.util.test.SlixTestPlus_method)\n+ method) * assertTrue()_(slidge.util.test.SlidgeTest\n+ o (slidge.slixfix.link_preview.stanza.OpenGraphMixin method)\n method) o (slidge.util.test.SlixTestPlus_method)\n- o (slidge.slixfix.link_preview.stanza.Title_method) * available_emojis()_\n- o (slidge.slixfix.link_preview.stanza.Type__method) (slidge.contact.contact.LegacyContact_method)\n- o (slidge.slixfix.link_preview.stanza.Url_method) o (slidge.contact.LegacyContact_method)\n- * appendxml()_ o (slidge.group.LegacyMUC_method)\n- (slidge.slixfix.link_preview.stanza.Description_method) o (slidge.group.room.LegacyMUC_method)\n- o (slidge.slixfix.link_preview.stanza.Image_method) o (superduper.contact.Contact_method)\n- o (slidge.slixfix.link_preview.stanza.LinkPreview o (superduper.group.MUC_method)\n- method) * Avatar\n- o (slidge.slixfix.link_preview.stanza.OpenGraphMixin * avatar_(slidge.contact.contact.LegacyContact\n- method) property)\n- o (slidge.slixfix.link_preview.stanza.SiteName o (slidge.contact.LegacyContact_property)\n- method) o (slidge.core.mixins.avatar.AvatarMixin\n- o (slidge.slixfix.link_preview.stanza.Title_method) property)\n- o (slidge.slixfix.link_preview.stanza.Type__method) o (slidge.core.mixins.AvatarMixin_property)\n- o (slidge.slixfix.link_preview.stanza.Url_method) o (slidge.group.LegacyMUC_property)\n- * archivable()_(in_module_slidge.group.archive) o (slidge.group.room.LegacyMUC_property)\n- * assertAlmostEqual()_(slidge.util.test.SlidgeTest_method) o (superduper.contact.Contact_property)\n- o (slidge.util.test.SlixTestPlus_method) o (superduper.group.MUC_property)\n- * assertCountEqual()_(slidge.util.test.SlidgeTest_method) * avatar_id_(slidge.contact.contact.LegacyContact\n- o (slidge.util.test.SlixTestPlus_method) property)\n- * assertDictContainsSubset()_(slidge.util.test.SlidgeTest o (slidge.contact.LegacyContact_property)\n- method) o (slidge.core.mixins.avatar.AvatarMixin\n+ o (slidge.slixfix.link_preview.stanza.SiteName * assertTupleEqual()_\n+ method) (slidge.util.test.SlidgeTest_method)\n+ o (slidge.slixfix.link_preview.stanza.Title_method) o (slidge.util.test.SlixTestPlus_method)\n+ o (slidge.slixfix.link_preview.stanza.Type__method) * assertWarns()_(slidge.util.test.SlidgeTest\n+ o (slidge.slixfix.link_preview.stanza.Url_method) method)\n+ * appendxml()_ o (slidge.util.test.SlixTestPlus_method)\n+ (slidge.slixfix.link_preview.stanza.Description_method) * assertWarnsRegex()_\n+ o (slidge.slixfix.link_preview.stanza.Image_method) (slidge.util.test.SlidgeTest_method)\n+ o (slidge.slixfix.link_preview.stanza.LinkPreview o (slidge.util.test.SlixTestPlus_method)\n+ method) * available_emojis()_\n+ o (slidge.slixfix.link_preview.stanza.OpenGraphMixin (slidge.contact.contact.LegacyContact\n+ method) method)\n+ o (slidge.slixfix.link_preview.stanza.SiteName o (slidge.contact.LegacyContact_method)\n+ method) o (superduper.contact.Contact_method)\n+ o (slidge.slixfix.link_preview.stanza.Title_method) o (superduper.group.MUC_method)\n+ o (slidge.slixfix.link_preview.stanza.Type__method) * Avatar\n+ o (slidge.slixfix.link_preview.stanza.Url_method) * avatar_(slidge.contact.contact.LegacyContact\n+ * archivable()_(in_module_slidge.group.archive) property)\n+ * assertAlmostEqual()_(slidge.util.test.SlidgeTest_method) o (slidge.contact.LegacyContact\n+ o (slidge.util.test.SlixTestPlus_method) property)\n+ * assertCountEqual()_(slidge.util.test.SlidgeTest_method) o (slidge.core.mixins.avatar.AvatarMixin\n o (slidge.util.test.SlixTestPlus_method) property)\n- * assertEqual()_(slidge.util.test.SlidgeTest_method) o (slidge.core.mixins.AvatarMixin_property)\n- o (slidge.util.test.SlixTestPlus_method) o (slidge.group.LegacyMUC_property)\n- * assertFalse()_(slidge.util.test.SlidgeTest_method) o (slidge.group.room.LegacyMUC_property)\n+ * assertDictContainsSubset()_(slidge.util.test.SlidgeTest o (slidge.core.mixins.AvatarMixin\n+ method) property)\n o (slidge.util.test.SlixTestPlus_method) o (superduper.contact.Contact_property)\n- * assertGreater()_(slidge.util.test.SlidgeTest_method) o (superduper.group.MUC_property)\n- o (slidge.util.test.SlixTestPlus_method) * AvatarMixin_(class_in_slidge.core.mixins)\n- * assertGreaterEqual()_(slidge.util.test.SlidgeTest o (class_in_slidge.core.mixins.avatar)\n- method) * away()_(slidge.contact.contact.LegacyContact\n- o (slidge.util.test.SlixTestPlus_method) method)\n- * assertIn()_(slidge.util.test.SlidgeTest_method) o (slidge.contact.LegacyContact_method)\n- o (slidge.util.test.SlixTestPlus_method) o (slidge.group.LegacyParticipant_method)\n- o (slidge.group.participant.LegacyParticipant\n- method)\n+ * assertEqual()_(slidge.util.test.SlidgeTest_method) o (superduper.group.MUC_property)\n+ o (slidge.util.test.SlixTestPlus_method) * avatar_id_\n+ * assertFalse()_(slidge.util.test.SlidgeTest_method) (slidge.contact.contact.LegacyContact\n+ o (slidge.util.test.SlixTestPlus_method) property)\n+ * assertGreater()_(slidge.util.test.SlidgeTest_method) o (slidge.contact.LegacyContact\n+ o (slidge.util.test.SlixTestPlus_method) property)\n+ o (slidge.core.mixins.avatar.AvatarMixin\n+ property)\n+ o (slidge.core.mixins.AvatarMixin\n+ property)\n+ o (superduper.contact.Contact_property)\n+ o (superduper.group.MUC_property)\n+ * AvatarMixin_(class_in_slidge.core.mixins)\n+ o (class_in_slidge.core.mixins.avatar)\n+ * away()_(slidge.contact.contact.LegacyContact\n+ method)\n+ o (slidge.contact.LegacyContact_method)\n o (superduper.contact.Contact_method)\n o (superduper.group.Participant_method)\n \n ***** B *****\n+ * BaseSession_(class_in_slidge)\n+ o (class_in_slidge.core.session)\n * backfill()_(slidge.group.LegacyMUC_method) * Bookmarks_(class_in_superduper.group)\n- o (slidge.group.room.LegacyMUC_method) * busy()_(slidge.contact.contact.LegacyContact\n- o (superduper.group.MUC_method) method)\n- * ban()_(slidge.group.LegacyParticipant_method) o (slidge.contact.LegacyContact_method)\n- o (slidge.group.participant.LegacyParticipant o (slidge.group.LegacyParticipant_method)\n- method) o (slidge.group.participant.LegacyParticipant\n- o (superduper.group.Participant_method) method)\n- * bare_jid_(slidge.util.db.GatewayUser_attribute) o (superduper.contact.Contact_method)\n- * BaseGateway_(class_in_slidge) o (superduper.group.Participant_method)\n- o (class_in_slidge.core.gateway) * by_legacy_id()_(slidge.contact.LegacyRoster\n- o (class_in_slidge.core.gateway.base) method)\n- * BaseSession_(class_in_slidge) o (slidge.contact.roster.LegacyRoster_method)\n- o (class_in_slidge.core.session) o (superduper.contact.Roster_method)\n+ o (slidge.group.room.LegacyMUC_method) * busy()_\n+ o (superduper.group.MUC_method) (slidge.contact.contact.LegacyContact\n+ * ban()_(slidge.group.LegacyParticipant_method) method)\n+ o (slidge.group.participant.LegacyParticipant o (slidge.contact.LegacyContact\n+ method) method)\n+ o (superduper.group.Participant_method) o (superduper.contact.Contact_method)\n+ * bare_jid_(slidge.util.db.GatewayUser_attribute) o (superduper.group.Participant\n+ * BaseGateway_(class_in_slidge) method)\n+ o (class_in_slidge.core.gateway) * by_legacy_id()_\n+ o (class_in_slidge.core.gateway.base) (slidge.contact.LegacyRoster_method)\n+ o (slidge.contact.roster.LegacyRoster\n+ method)\n+ o (superduper.contact.Roster_method)\n \n ***** C *****\n- * compare()_(slidge.util.test.SlidgeTest_method)\n- o (slidge.util.test.SlixTestPlus_method)\n- * COMPONENT_AVATAR_(slidge.BaseGateway_attribute)\n- * callHandlers()_(slidge.util.util.SlidgeLogger_method) o (slidge.core.gateway.base.BaseGateway\n- * capitalize()_(slidge.util.types.URL_method) attribute)\n- * caption_(slidge.util.types.LegacyAttachment_attribute) o (slidge.core.gateway.BaseGateway_attribute)\n- * Carbons * COMPONENT_NAME_(slidge.BaseGateway_attribute)\n- * casefold()_(slidge.util.types.URL_method) o (slidge.core.gateway.base.BaseGateway\n- * CATEGORY_(slidge.command.base.Command_attribute) attribute)\n- o (slidge.command.Command_attribute) o (slidge.core.gateway.BaseGateway_attribute)\n- o (slidge.command.user.Login_attribute) * COMPONENT_TYPE_(slidge.BaseGateway_attribute)\n- o (slidge.command.user.Unregister_attribute) o (slidge.core.gateway.base.BaseGateway\n- * center()_(slidge.util.types.URL_method) attribute)\n- * CHANNEL_(slidge.group.MucType_attribute) o (slidge.core.gateway.BaseGateway_attribute)\n- o (slidge.util.types.MucType_attribute) * composing()_(slidge.BaseGateway_method)\n- * CHANNEL_NON_ANONYMOUS_(slidge.group.MucType_attribute) o (slidge.contact.contact.LegacyContact\n- o (slidge.util.types.MucType_attribute) method)\n- * CHAT_COMMAND_(slidge.command.base.Command_attribute) o (slidge.contact.LegacyContact_method)\n- o (slidge.command.Command_attribute) o (slidge.core.gateway.base.BaseGateway\n- o (slidge.command.user.CreateGroup_attribute) method)\n- o (slidge.command.user.ListContacts_attribute) o (slidge.core.gateway.BaseGateway_method)\n- o (slidge.command.user.ListGroups_attribute) o (slidge.group.LegacyParticipant_method)\n- o (slidge.command.user.Login_attribute) o (slidge.group.participant.LegacyParticipant\n- o (slidge.command.user.SyncContacts_attribute) method)\n- o (slidge.command.user.Unregister_attribute) o (superduper.contact.Contact_method)\n- * Chatbot_Command o (superduper.gateway.Gateway_method)\n- * check()_(slidge.util.test.SlidgeTest_method) o (superduper.group.Participant_method)\n- o (slidge.util.test.SlixTestPlus_method) * confirm_qr()_(slidge.BaseGateway_method)\n- * check_jid()_(slidge.util.test.SlidgeTest_method) o (slidge.core.gateway.base.BaseGateway\n- o (slidge.util.test.SlixTestPlus_method) method)\n- * clear()_(slidge.command.base.Option_method) o (slidge.core.gateway.BaseGateway_method)\n+ * Command\n+ o (class_in_slidge.command)\n+ o (class_in_slidge.command.base)\n+ * CommandAccess_(class_in_slidge.command)\n+ o (class_in_slidge.command.base)\n+ * compare()_(slidge.util.test.SlidgeTest\n+ method)\n+ o (slidge.util.test.SlixTestPlus\n+ * callHandlers()_(slidge.util.util.SlidgeLogger_method) method)\n+ * capitalize()_(slidge.util.types.URL_method) * COMPONENT_AVATAR_(slidge.BaseGateway\n+ * caption_(slidge.util.types.LegacyAttachment_attribute) attribute)\n+ * Carbons o (slidge.core.gateway.base.BaseGateway\n+ * casefold()_(slidge.util.types.URL_method) attribute)\n+ * CATEGORY_(slidge.command.base.Command_attribute) o (slidge.core.gateway.BaseGateway\n+ o (slidge.command.Command_attribute) attribute)\n+ o (slidge.command.user.Login_attribute) * COMPONENT_NAME_(slidge.BaseGateway\n+ o (slidge.command.user.Unregister_attribute) attribute)\n+ * center()_(slidge.util.types.URL_method) o (slidge.core.gateway.base.BaseGateway\n+ * ChangeLoglevel_(class_in_slidge.command.admin) attribute)\n+ * CHANNEL_(slidge.group.MucType_attribute) o (slidge.core.gateway.BaseGateway\n+ o (slidge.util.types.MucType_attribute) attribute)\n+ * CHANNEL_NON_ANONYMOUS_(slidge.group.MucType_attribute) * COMPONENT_TYPE_(slidge.BaseGateway\n+ o (slidge.util.types.MucType_attribute) attribute)\n+ * CHAT_COMMAND_(slidge.command.admin.AdminCommand o (slidge.core.gateway.base.BaseGateway\n+ attribute) attribute)\n+ o (slidge.command.admin.ChangeLoglevel_attribute) o (slidge.core.gateway.BaseGateway\n+ o (slidge.command.admin.DeleteUser_attribute) attribute)\n+ o (slidge.command.admin.ListUsers_attribute) * composing()_(slidge.BaseGateway_method)\n+ o (slidge.command.admin.SlidgeInfo_attribute) o (slidge.contact.contact.LegacyContact\n+ o (slidge.command.base.Command_attribute) method)\n+ o (slidge.command.Command_attribute) o (slidge.contact.LegacyContact_method)\n+ o (slidge.command.user.CreateGroup_attribute) o (slidge.core.gateway.base.BaseGateway\n+ o (slidge.command.user.ListContacts_attribute) method)\n+ o (slidge.command.user.ListGroups_attribute) o (slidge.core.gateway.BaseGateway\n+ o (slidge.command.user.Login_attribute) method)\n+ o (slidge.command.user.SyncContacts_attribute) o (superduper.contact.Contact_method)\n+ o (slidge.command.user.Unregister_attribute) o (superduper.gateway.Gateway_method)\n+ * Chatbot_Command o (superduper.group.Participant_method)\n+ * check()_(slidge.util.test.SlidgeTest_method) * confirm_qr()_(slidge.BaseGateway_method)\n+ o (slidge.util.test.SlixTestPlus_method) o (slidge.core.gateway.base.BaseGateway\n+ * check_jid()_(slidge.util.test.SlidgeTest_method) method)\n+ o (slidge.util.test.SlixTestPlus_method) o (slidge.core.gateway.BaseGateway\n+ * clear()_(slidge.command.base.Option_method) method)\n o (slidge.slixfix.link_preview.stanza.Description o (superduper.gateway.Gateway_method)\n method) * Confirmation_(class_in_slidge.command)\n o (slidge.slixfix.link_preview.stanza.Image_method) o (class_in_slidge.command.base)\n o (slidge.slixfix.link_preview.stanza.LinkPreview * Contact_(class_in_superduper.contact)\n method) * ContactIsUser\n o (slidge.slixfix.link_preview.stanza.OpenGraphMixin * copy()_(slidge.command.base.Option_method)\n method) o (slidge.slixfix.roster.YesSet_method)\n- o (slidge.slixfix.link_preview.stanza.SiteName o (slidge.util.types.ResourceDict_method)\n- method) * correct()_(slidge.BaseGateway_method)\n- o (slidge.slixfix.link_preview.stanza.Title_method) o (slidge.contact.contact.LegacyContact\n- o (slidge.slixfix.link_preview.stanza.Type__method) method)\n- o (slidge.slixfix.link_preview.stanza.Url_method) o (slidge.contact.LegacyContact_method)\n- o (slidge.slixfix.roster.YesSet_method) o (slidge.core.gateway.base.BaseGateway\n- o (slidge.util.db.EncryptedShelf_method) method)\n- o (slidge.util.types.ResourceDict_method) o (slidge.core.gateway.BaseGateway_method)\n- * Command o (slidge.group.LegacyParticipant_method)\n- o (class_in_slidge.command) o (slidge.group.participant.LegacyParticipant\n- o (class_in_slidge.command.base) method)\n- * CommandAccess_(class_in_slidge.command) o (superduper.contact.Contact_method)\n- o (class_in_slidge.command.base) o (superduper.gateway.Gateway_method)\n+ o (slidge.slixfix.link_preview.stanza.SiteName o (slidge.util.types.ResourceDict\n+ method) method)\n+ o (slidge.slixfix.link_preview.stanza.Title_method) * correct()_(slidge.BaseGateway_method)\n+ o (slidge.slixfix.link_preview.stanza.Type__method) o (slidge.contact.contact.LegacyContact\n+ o (slidge.slixfix.link_preview.stanza.Url_method) method)\n+ o (slidge.slixfix.roster.YesSet_method) o (slidge.contact.LegacyContact_method)\n+ o (slidge.util.db.EncryptedShelf_method) o (slidge.core.gateway.base.BaseGateway\n+ o (slidge.util.types.ResourceDict_method) method)\n+ o (slidge.core.gateway.BaseGateway\n+ method)\n+ o (superduper.contact.Contact_method)\n+ o (superduper.gateway.Gateway_method)\n o (superduper.group.Participant_method)\n * count()_(slidge.util.types.URL_method)\n * CreateGroup_(class_in_slidge.command.user)\n- * critical()_(slidge.util.util.SlidgeLogger_method)\n+ * critical()_(slidge.util.util.SlidgeLogger\n+ method)\n \n ***** D *****\n- * debug()_(slidge.util.test.SlidgeTest_method)\n- o (slidge.util.test.SlixTestPlus_method)\n- o (slidge.util.util.SlidgeLogger_method)\n+ * debug()_(slidge.util.test.SlidgeTest\n+ method)\n+ o (slidge.util.test.SlixTestPlus\n+ method)\n+ o (slidge.util.util.SlidgeLogger\n+ method)\n+ * DeleteUser_(class_in_slidge.command.admin)\n * Description_(class_in\n slidge.slixfix.link_preview.stanza)\n- * description_(slidge.command.base.TableResult\n- attribute)\n- o (slidge.command.TableResult_attribute)\n- * difference()_(slidge.slixfix.roster.YesSet * doClassCleanups()_\n- method) (slidge.util.test.SlidgeTest_class\n- * difference_update()_(slidge.slixfix.roster.YesSet method)\n- method) o (slidge.util.test.SlixTestPlus\n- * discard()_(slidge.slixfix.roster.YesSet_method) class_method)\n- * displayed()_(slidge.BaseGateway_method) * doCleanups()_\n- o (slidge.contact.contact.LegacyContact (slidge.util.test.SlidgeTest_method)\n- method) o (slidge.util.test.SlixTestPlus\n- o (slidge.contact.LegacyContact_method) method)\n+ * description_\n+ (slidge.command.base.TableResult_attribute) * doClassCleanups()_\n+ o (slidge.command.TableResult (slidge.util.test.SlidgeTest_class\n+ attribute) method)\n+ * difference()_(slidge.slixfix.roster.YesSet o (slidge.util.test.SlixTestPlus\n+ method) class_method)\n+ * difference_update()_ * doCleanups()_\n+ (slidge.slixfix.roster.YesSet_method) (slidge.util.test.SlidgeTest_method)\n+ * discard()_(slidge.slixfix.roster.YesSet o (slidge.util.test.SlixTestPlus\n+ method) method)\n+ * displayed()_(slidge.BaseGateway_method)\n+ o (slidge.contact.contact.LegacyContact\n+ method)\n+ o (slidge.contact.LegacyContact_method)\n o (slidge.core.gateway.base.BaseGateway\n method)\n- o (slidge.core.gateway.BaseGateway_method)\n- o (slidge.group.LegacyParticipant_method)\n- o (slidge.group.participant.LegacyParticipant\n+ o (slidge.core.gateway.BaseGateway\n method)\n o (superduper.contact.Contact_method)\n o (superduper.gateway.Gateway_method)\n o (superduper.group.Participant_method)\n \n ***** E *****\n- * enable()_(slidge.slixfix.link_preview.stanza.Description\n- method) * enterContext()_(slidge.util.test.SlidgeTest\n- o (slidge.slixfix.link_preview.stanza.Image_method) method)\n- o (slidge.slixfix.link_preview.stanza.LinkPreview o (slidge.util.test.SlixTestPlus_method)\n- method) * entrypoint()_(in_module_slidge)\n- o (slidge.slixfix.link_preview.stanza.OpenGraphMixin * error()_(slidge.util.util.SlidgeLogger_method)\n- method) * exception()_(slidge.util.util.SlidgeLogger\n- o (slidge.slixfix.link_preview.stanza.SiteName method)\n- method) * expandtabs()_(slidge.util.types.URL_method)\n- o (slidge.slixfix.link_preview.stanza.Title_method) * extended_away()_\n- o (slidge.slixfix.link_preview.stanza.Type__method) (slidge.contact.contact.LegacyContact_method)\n- o (slidge.slixfix.link_preview.stanza.Url_method) o (slidge.contact.LegacyContact_method)\n- * encode()_(slidge.util.types.URL_method) o (slidge.group.LegacyParticipant_method)\n- * EncryptedShelf_(class_in_slidge.util.db) o (slidge.group.participant.LegacyParticipant\n- * endswith()_(slidge.util.types.URL_method) method)\n- * enterClassContext()_(slidge.util.test.SlidgeTest_class o (superduper.contact.Contact_method)\n- method) o (superduper.group.Participant_method)\n- o (slidge.util.test.SlixTestPlus_class_method)\n+ * enterContext()_\n+ (slidge.util.test.SlidgeTest_method)\n+ * enable()_(slidge.slixfix.link_preview.stanza.Description o (slidge.util.test.SlixTestPlus\n+ method) method)\n+ o (slidge.slixfix.link_preview.stanza.Image_method) * entrypoint()_(in_module_slidge)\n+ o (slidge.slixfix.link_preview.stanza.LinkPreview * error()_\n+ method) (slidge.util.util.SlidgeLogger\n+ o (slidge.slixfix.link_preview.stanza.OpenGraphMixin method)\n+ method) * exception()_\n+ o (slidge.slixfix.link_preview.stanza.SiteName (slidge.util.util.SlidgeLogger\n+ method) method)\n+ o (slidge.slixfix.link_preview.stanza.Title_method) * Exec_(class_in_slidge.command.admin)\n+ o (slidge.slixfix.link_preview.stanza.Type__method) * expandtabs()_(slidge.util.types.URL\n+ o (slidge.slixfix.link_preview.stanza.Url_method) method)\n+ * encode()_(slidge.util.types.URL_method) * extended_away()_\n+ * EncryptedShelf_(class_in_slidge.util.db) (slidge.contact.contact.LegacyContact\n+ * endswith()_(slidge.util.types.URL_method) method)\n+ * enterClassContext()_(slidge.util.test.SlidgeTest_class o (slidge.contact.LegacyContact\n+ method) method)\n+ o (slidge.util.test.SlixTestPlus_class_method) o (superduper.contact.Contact\n+ method)\n+ o (superduper.group.Participant\n+ method)\n \n ***** F *****\n * fill_participants()_\n (slidge.group.LegacyMUC_method)\n * fail()_(slidge.util.test.SlidgeTest_method) o (slidge.group.room.LegacyMUC\n o (slidge.util.test.SlixTestPlus_method) method)\n * fatal()_(slidge.util.util.SlidgeLogger o (superduper.group.MUC_method)\n@@ -326,96 +357,96 @@\n method)\n * FormField_(class_in_slidge.command)\n o (class_in_slidge.command.base)\n \n ***** G *****\n * Gateway_(class_in_superduper.gateway)\n * GatewayUser_(class_in_slidge.util.db)\n- * get()_(slidge.command.base.Option_method)\n- o (slidge.slixfix.link_preview.stanza.Description\n- method) * get_qr_text()_(slidge.BaseGateway_method)\n- o (slidge.slixfix.link_preview.stanza.Image_method) o (slidge.core.gateway.base.BaseGateway\n+ * get()_(slidge.command.base.Option_method) * get_qr_text()_(slidge.BaseGateway_method)\n+ o (slidge.slixfix.link_preview.stanza.Description o (slidge.core.gateway.base.BaseGateway\n+ method) method)\n+ o (slidge.slixfix.link_preview.stanza.Image_method) o (slidge.core.gateway.BaseGateway\n o (slidge.slixfix.link_preview.stanza.LinkPreview method)\n- method) o (slidge.core.gateway.BaseGateway_method)\n- o (slidge.slixfix.link_preview.stanza.OpenGraphMixin o (superduper.gateway.Gateway_method)\n- method) * get_system_participant()_(slidge.group.LegacyMUC\n- o (slidge.slixfix.link_preview.stanza.SiteName method)\n- method) o (slidge.group.room.LegacyMUC_method)\n- o (slidge.slixfix.link_preview.stanza.Title_method) o (superduper.group.MUC_method)\n- o (slidge.slixfix.link_preview.stanza.Type__method) * get_user_participant()_(slidge.group.LegacyMUC\n- o (slidge.slixfix.link_preview.stanza.Url_method) method)\n- o (slidge.util.db.EncryptedShelf_method) o (slidge.group.room.LegacyMUC_method)\n- o (slidge.util.db.UserStore_method) o (superduper.group.MUC_method)\n- o (slidge.util.types.ResourceDict_method) * get_values()_(slidge.command.base.Form_method)\n+ method) o (superduper.gateway.Gateway_method)\n+ o (slidge.slixfix.link_preview.stanza.OpenGraphMixin * get_system_participant()_\n+ method) (slidge.group.LegacyMUC_method)\n+ o (slidge.slixfix.link_preview.stanza.SiteName o (slidge.group.room.LegacyMUC_method)\n+ method) o (superduper.group.MUC_method)\n+ o (slidge.slixfix.link_preview.stanza.Title_method) * get_user_participant()_\n+ o (slidge.slixfix.link_preview.stanza.Type__method) (slidge.group.LegacyMUC_method)\n+ o (slidge.slixfix.link_preview.stanza.Url_method) o (slidge.group.room.LegacyMUC_method)\n+ o (slidge.util.db.EncryptedShelf_method) o (superduper.group.MUC_method)\n+ o (slidge.util.db.UserStore_method) * get_values()_(slidge.command.base.Form\n+ o (slidge.util.types.ResourceDict_method) method)\n * get_all()_(slidge.util.db.UserStore_method) o (slidge.command.Form_method)\n * get_by_jid()_(slidge.util.db.UserStore_method) * get_xml()_(slidge.command.base.Form_method)\n- * get_by_stanza()_(slidge.util.db.UserStore_method) o (slidge.command.base.FormField_method)\n- * get_form()_(slidge.command.base.Confirmation_method) o (slidge.command.base.SearchResult_method)\n- o (slidge.command.Confirmation_method) o (slidge.command.base.TableResult_method)\n- * get_items()_(slidge.command.adhoc.AdhocProvider_method) o (slidge.command.Form_method)\n- * get_msg_xmpp_id_up_to()_ o (slidge.command.FormField_method)\n- (slidge.contact.contact.LegacyContact_method) o (slidge.command.SearchResult_method)\n- o (slidge.contact.LegacyContact_method) o (slidge.command.TableResult_method)\n- o (superduper.contact.Contact_method) * getChild()_(slidge.util.util.SlidgeLogger_method)\n- * get_participant()_(slidge.group.LegacyMUC_method) * getEffectiveLevel()_\n+ * get_by_stanza()_(slidge.util.db.UserStore_method) o (slidge.command.base.FormField\n+ * get_form()_(slidge.command.base.Confirmation_method) method)\n+ o (slidge.command.Confirmation_method) o (slidge.command.base.SearchResult\n+ * get_items()_(slidge.command.adhoc.AdhocProvider_method) method)\n+ * get_msg_xmpp_id_up_to()_ o (slidge.command.base.TableResult\n+ (slidge.contact.contact.LegacyContact_method) method)\n+ o (slidge.contact.LegacyContact_method) o (slidge.command.Form_method)\n+ o (superduper.contact.Contact_method) o (slidge.command.FormField_method)\n+ * get_participant()_(slidge.group.LegacyMUC_method) o (slidge.command.SearchResult_method)\n+ o (slidge.group.room.LegacyMUC_method) o (slidge.command.TableResult_method)\n+ o (superduper.group.MUC_method) * getChild()_(slidge.util.util.SlidgeLogger\n+ * get_participant_by_contact()_(slidge.group.LegacyMUC method)\n+ method) * getEffectiveLevel()_\n o (slidge.group.room.LegacyMUC_method) (slidge.util.util.SlidgeLogger_method)\n o (superduper.group.MUC_method) * gone()_(slidge.BaseGateway_method)\n- * get_participant_by_contact()_(slidge.group.LegacyMUC o (slidge.contact.contact.LegacyContact\n- method) method)\n- o (slidge.group.room.LegacyMUC_method) o (slidge.contact.LegacyContact_method)\n- o (superduper.group.MUC_method) o (slidge.core.gateway.base.BaseGateway\n- * get_participants()_(slidge.group.LegacyMUC_method) method)\n- o (slidge.group.room.LegacyMUC_method) o (slidge.core.gateway.BaseGateway_method)\n- o (superduper.group.MUC_method) o (slidge.group.LegacyParticipant_method)\n- * get_plugin()_ o (slidge.group.participant.LegacyParticipant\n+ * get_participants()_(slidge.group.LegacyMUC_method) o (slidge.contact.contact.LegacyContact\n+ o (slidge.group.room.LegacyMUC_method) method)\n+ o (superduper.group.MUC_method) o (slidge.contact.LegacyContact_method)\n+ * get_plugin()_ o (slidge.core.gateway.base.BaseGateway\n (slidge.slixfix.link_preview.stanza.Description_method) method)\n- o (slidge.slixfix.link_preview.stanza.Image_method) o (superduper.contact.Contact_method)\n- o (slidge.slixfix.link_preview.stanza.LinkPreview o (superduper.gateway.Gateway_method)\n+ o (slidge.slixfix.link_preview.stanza.Image_method) o (slidge.core.gateway.BaseGateway\n+ o (slidge.slixfix.link_preview.stanza.LinkPreview method)\n+ method) o (superduper.contact.Contact_method)\n+ o (slidge.slixfix.link_preview.stanza.OpenGraphMixin o (superduper.gateway.Gateway_method)\n method) o (superduper.group.Participant_method)\n- o (slidge.slixfix.link_preview.stanza.OpenGraphMixin * GROUP_(slidge.group.MucType_attribute)\n+ o (slidge.slixfix.link_preview.stanza.SiteName * GROUP_(slidge.group.MucType_attribute)\n method) o (slidge.util.types.MucType_attribute)\n- o (slidge.slixfix.link_preview.stanza.SiteName\n- method)\n o (slidge.slixfix.link_preview.stanza.Title_method)\n o (slidge.slixfix.link_preview.stanza.Type__method)\n o (slidge.slixfix.link_preview.stanza.Url_method)\n \n ***** H *****\n * handle()_\n (slidge.util.util.SlidgeLogger\n- method)\n- * handler_\n- (slidge.command.base.Confirmation * hasHandlers()_\n- attribute) (slidge.util.util.SlidgeLogger_method)\n- o (slidge.command.Confirmation * HELP_(slidge.command.base.Command\n- attribute) attribute)\n- * handler_args_ o (slidge.command.Command\n+ method) * hasHandlers()_\n+ * handler_ (slidge.util.util.SlidgeLogger_method)\n+ (slidge.command.base.Confirmation * HELP_(slidge.command.admin.AdminCommand\n+ attribute) attribute)\n+ o (slidge.command.Confirmation o (slidge.command.admin.Exec\n+ attribute) attribute)\n+ * handler_args_ o (slidge.command.base.Command\n (slidge.command.base.Confirmation attribute)\n- attribute) o (slidge.command.user.ListContacts\n+ attribute) o (slidge.command.Command\n o (slidge.command.Confirmation attribute)\n- attribute) o (slidge.command.user.ListGroups\n+ attribute) o (slidge.command.user.ListContacts\n * handler_kwargs_ attribute)\n- (slidge.command.base.Confirmation\n- attribute)\n+ (slidge.command.base.Confirmation o (slidge.command.user.ListGroups\n+ attribute) attribute)\n o (slidge.command.Confirmation\n attribute)\n \n ***** I *****\n- * Ignore * Iq()_(slidge.util.test.SlidgeTest\n- * Image_(class_in_slidge.slixfix.link_preview.stanza) method)\n- * image_url_(slidge.command.base.FormField_attribute) o (slidge.util.test.SlixTestPlus\n- o (slidge.command.FormField_attribute) method)\n- * inactive()_(slidge.BaseGateway_method) * isalnum()_(slidge.util.types.URL\n- o (slidge.contact.contact.LegacyContact_method) method)\n- o (slidge.contact.LegacyContact_method) * isalpha()_(slidge.util.types.URL\n- o (slidge.core.gateway.base.BaseGateway_method) method)\n- o (slidge.core.gateway.BaseGateway_method) * isascii()_(slidge.util.types.URL\n- o (slidge.group.LegacyParticipant_method) method)\n- o (slidge.group.participant.LegacyParticipant * isdecimal()_(slidge.util.types.URL\n- method) method)\n+ * Iq()_(slidge.util.test.SlidgeTest\n+ method)\n+ o (slidge.util.test.SlixTestPlus\n+ * Ignore method)\n+ * Image_(class_in_slidge.slixfix.link_preview.stanza) * isalnum()_(slidge.util.types.URL\n+ * image_url_(slidge.command.base.FormField_attribute) method)\n+ o (slidge.command.FormField_attribute) * isalpha()_(slidge.util.types.URL\n+ * inactive()_(slidge.BaseGateway_method) method)\n+ o (slidge.contact.contact.LegacyContact_method) * isascii()_(slidge.util.types.URL\n+ o (slidge.contact.LegacyContact_method) method)\n+ o (slidge.core.gateway.base.BaseGateway_method) * isdecimal()_(slidge.util.types.URL\n+ o (slidge.core.gateway.BaseGateway_method) method)\n o (superduper.contact.Contact_method) * isdigit()_(slidge.util.types.URL\n o (superduper.gateway.Gateway_method) method)\n o (superduper.group.Participant_method) * isdisjoint()_\n * index()_(slidge.util.types.URL_method) (slidge.slixfix.roster.YesSet_method)\n * info()_(slidge.util.util.SlidgeLogger_method) * isEnabledFor()_\n * init_plugin()_ (slidge.util.util.SlidgeLogger_method)\n (slidge.slixfix.link_preview.stanza.Description_method) * isidentifier()_(slidge.util.types.URL\n@@ -440,20 +471,20 @@\n * intersection_update()_(slidge.slixfix.roster.YesSet (slidge.command.base.SearchResult\n method) attribute)\n * invite_to()_(slidge.BaseGateway_method) o (slidge.command.base.TableResult\n o (slidge.contact.contact.LegacyContact_method) attribute)\n o (slidge.contact.LegacyContact_method) o (slidge.command.SearchResult\n o (slidge.core.gateway.base.BaseGateway_method) attribute)\n o (slidge.core.gateway.BaseGateway_method) o (slidge.command.TableResult\n- o (slidge.group.LegacyParticipant_method) attribute)\n- o (slidge.group.participant.LegacyParticipant * items()_(slidge.command.base.Option\n- method) method)\n- o (superduper.contact.Contact_method) o (slidge.util.db.EncryptedShelf\n- o (superduper.gateway.Gateway_method) method)\n- o (superduper.group.Participant_method) o (slidge.util.types.ResourceDict\n+ o (superduper.contact.Contact_method) attribute)\n+ o (superduper.gateway.Gateway_method) * items()_(slidge.command.base.Option\n+ o (superduper.group.Participant_method) method)\n+ o (slidge.util.db.EncryptedShelf\n+ method)\n+ o (slidge.util.types.ResourceDict\n method)\n \n ***** J *****\n * jid_(slidge.util.db.GatewayUser_property)\n * JID_Local_Part\n * jid_username_to_legacy_id()_\n (slidge.contact.LegacyRoster_method)\n@@ -487,43 +518,45 @@\n o (slidge.util.types.ResourceDict_method)\n \n ***** L *****\n * LegacyContact_(class_in\n slidge.contact)\n o (class_in\n slidge.contact.contact)\n- * label_(slidge.command.base.FormField_attribute) * LegacyGroupIdType_(in_module\n- o (slidge.command.FormField_attribute) slidge.util.types)\n- * leave()_(slidge.group.LegacyParticipant_method) * LegacyMUC_(class_in_slidge.group)\n- o (slidge.group.participant.LegacyParticipant o (class_in_slidge.group.room)\n- method) * LegacyParticipant_(class_in\n- o (superduper.group.Participant_method) slidge.group)\n- * Legacy_Contact o (class_in\n- * Legacy_Module slidge.group.participant)\n- * Legacy_Network * LegacyRoster_(class_in_slidge.contact)\n- * legacy_id_(slidge.contact.contact.LegacyContact o (class_in_slidge.contact.roster)\n- attribute) * LinkPreview_(class_in\n- o (slidge.contact.LegacyContact_attribute) slidge.slixfix.link_preview.stanza)\n- o (superduper.contact.Contact_attribute) * ListContacts_(class_in\n- * legacy_id_to_jid_username()_ slidge.command.user)\n- (slidge.contact.LegacyRoster_method) * ListGroups_(class_in\n- o (slidge.contact.roster.LegacyRoster_method) slidge.command.user)\n- o (slidge.group.bookmarks.LegacyBookmarks * ljust()_(slidge.util.types.URL_method)\n- method) * log()_(slidge.util.util.SlidgeLogger\n- o (slidge.group.LegacyBookmarks_method) method)\n- o (superduper.contact.Roster_method) * Login_(class_in_slidge.command.user)\n- o (superduper.group.Bookmarks_method) * login()_(slidge.BaseSession_method)\n- * legacy_to_xmpp_msg_id()_(slidge.BaseSession o (slidge.core.session.BaseSession\n- static_method) method)\n- o (slidge.core.session.BaseSession_static o (superduper.session.Session\n- method) method)\n- o (superduper.session.Session_static_method) * logout()_(slidge.BaseSession_method)\n- * LegacyAttachment_(class_in_slidge.util.types) o (slidge.core.session.BaseSession\n- * LegacyBookmarks_(class_in_slidge.group) method)\n- o (class_in_slidge.group.bookmarks) o (superduper.session.Session\n+ * LegacyGroupIdType_(in_module\n+ * label_(slidge.command.base.FormField_attribute) slidge.util.types)\n+ o (slidge.command.FormField_attribute) * LegacyMUC_(class_in_slidge.group)\n+ * leave()_(slidge.group.LegacyParticipant_method) o (class_in_slidge.group.room)\n+ o (slidge.group.participant.LegacyParticipant * LegacyParticipant_(class_in\n+ method) slidge.group)\n+ o (superduper.group.Participant_method) o (class_in\n+ * Legacy_Contact slidge.group.participant)\n+ * Legacy_Module * LegacyRoster_(class_in_slidge.contact)\n+ * Legacy_Network o (class_in_slidge.contact.roster)\n+ * legacy_id_(slidge.contact.contact.LegacyContact * LinkPreview_(class_in\n+ attribute) slidge.slixfix.link_preview.stanza)\n+ o (slidge.contact.LegacyContact_attribute) * ListContacts_(class_in\n+ o (superduper.contact.Contact_attribute) slidge.command.user)\n+ * legacy_id_to_jid_username()_ * ListGroups_(class_in\n+ (slidge.contact.LegacyRoster_method) slidge.command.user)\n+ o (slidge.contact.roster.LegacyRoster_method) * ListUsers_(class_in\n+ o (slidge.group.bookmarks.LegacyBookmarks slidge.command.admin)\n+ method) * ljust()_(slidge.util.types.URL_method)\n+ o (slidge.group.LegacyBookmarks_method) * log()_(slidge.util.util.SlidgeLogger\n+ o (superduper.contact.Roster_method) method)\n+ o (superduper.group.Bookmarks_method) * Login_(class_in_slidge.command.user)\n+ * legacy_to_xmpp_msg_id()_(slidge.BaseSession * login()_(slidge.BaseSession_method)\n+ static_method) o (slidge.core.session.BaseSession\n+ o (slidge.core.session.BaseSession_static method)\n+ method) o (superduper.session.Session\n+ o (superduper.session.Session_static_method) method)\n+ * LegacyAttachment_(class_in_slidge.util.types) * logout()_(slidge.BaseSession_method)\n+ * LegacyBookmarks_(class_in_slidge.group) o (slidge.core.session.BaseSession\n+ o (class_in_slidge.group.bookmarks) method)\n+ o (superduper.session.Session\n method)\n * lower()_(slidge.util.types.URL_method)\n * lstrip()_(slidge.util.types.URL\n method)\n \n ***** M *****\n * make_header()_(slidge.util.test.SlidgeTest_method)\n@@ -618,338 +651,383 @@\n o superduper.gateway\n o superduper.group\n o superduper.legacy_client\n o superduper.session\n o superduper.util\n \n ***** N *****\n- * NAME_(slidge.command.base.Command_attribute)\n- o (slidge.command.Command_attribute) * NODE_(slidge.command.base.Command\n- o (slidge.command.user.ListContacts_attribute) attribute)\n- o (slidge.command.user.ListGroups_attribute) o (slidge.command.Command\n- * name_(slidge.contact.contact.LegacyContact_property) attribute)\n- o (slidge.contact.LegacyContact_property) o (slidge.command.user.CreateGroup\n- o (superduper.contact.Contact_property) attribute)\n- * next()_(slidge.slixfix.link_preview.stanza.Description o (slidge.command.user.ListContacts\n- method) attribute)\n- o (slidge.slixfix.link_preview.stanza.Image_method) o (slidge.command.user.ListGroups\n+ * NODE_(slidge.command.admin.AdminCommand\n+ attribute)\n+ * NAME_(slidge.command.admin.AdminCommand_attribute) o (slidge.command.admin.ChangeLoglevel\n+ o (slidge.command.admin.Exec_attribute) attribute)\n+ o (slidge.command.base.Command_attribute) o (slidge.command.admin.DeleteUser\n+ o (slidge.command.Command_attribute) attribute)\n+ o (slidge.command.user.ListContacts_attribute) o (slidge.command.admin.ListUsers\n+ o (slidge.command.user.ListGroups_attribute) attribute)\n+ * name_(slidge.contact.contact.LegacyContact_property) o (slidge.command.admin.SlidgeInfo\n+ o (slidge.contact.LegacyContact_property) attribute)\n+ o (superduper.contact.Contact_property) o (slidge.command.base.Command\n+ * next()_(slidge.slixfix.link_preview.stanza.Description attribute)\n+ method) o (slidge.command.Command_attribute)\n+ o (slidge.slixfix.link_preview.stanza.Image_method) o (slidge.command.user.CreateGroup\n o (slidge.slixfix.link_preview.stanza.LinkPreview attribute)\n- method) o (slidge.command.user.Login\n+ method) o (slidge.command.user.ListContacts\n o (slidge.slixfix.link_preview.stanza.OpenGraphMixin attribute)\n- method) o (slidge.command.user.SyncContacts\n+ method) o (slidge.command.user.ListGroups\n o (slidge.slixfix.link_preview.stanza.SiteName attribute)\n- method) o (slidge.command.user.Unregister\n+ method) o (slidge.command.user.Login\n o (slidge.slixfix.link_preview.stanza.Title_method) attribute)\n- o (slidge.slixfix.link_preview.stanza.Type__method)\n- o (slidge.slixfix.link_preview.stanza.Url_method)\n+ o (slidge.slixfix.link_preview.stanza.Type__method) o (slidge.command.user.SyncContacts\n+ o (slidge.slixfix.link_preview.stanza.Url_method) attribute)\n+ o (slidge.command.user.Unregister\n+ attribute)\n \n ***** O *****\n * Official_Client\n- * offline()_(slidge.contact.contact.LegacyContact\n- method) * on_inactive()_(slidge.BaseSession_method)\n- o (slidge.contact.LegacyContact_method) o (slidge.core.session.BaseSession_method)\n- o (slidge.group.LegacyParticipant_method) o (superduper.session.Session_method)\n- o (slidge.group.participant.LegacyParticipant * on_invitation()_(slidge.BaseSession_method)\n- method) o (slidge.core.session.BaseSession_method)\n- o (superduper.contact.Contact_method) o (superduper.session.Session_method)\n- o (superduper.group.Participant_method) * on_moderate()_(slidge.BaseSession_method)\n- * on_active()_(slidge.BaseSession_method) o (slidge.core.session.BaseSession_method)\n- o (slidge.core.session.BaseSession_method) o (superduper.session.Session_method)\n- o (superduper.session.Session_method) * on_paused()_(slidge.BaseSession_method)\n- * on_avatar()_(slidge.BaseSession_method) o (slidge.core.session.BaseSession_method)\n- o (slidge.core.session.BaseSession_method) o (superduper.session.Session_method)\n- o (slidge.group.LegacyMUC_method) * on_presence()_(slidge.BaseSession_method)\n- o (slidge.group.room.LegacyMUC_method) o (slidge.core.session.BaseSession_method)\n- o (superduper.group.MUC_method) o (superduper.session.Session_method)\n- o (superduper.session.Session_method) * on_react()_(slidge.BaseSession_method)\n- * on_composing()_(slidge.BaseSession_method) o (slidge.core.session.BaseSession_method)\n- o (slidge.core.session.BaseSession_method) o (superduper.session.Session_method)\n- o (superduper.session.Session_method) * on_retract()_(slidge.BaseSession_method)\n- * on_correct()_(slidge.BaseSession_method) o (slidge.core.session.BaseSession_method)\n- o (slidge.core.session.BaseSession_method) o (superduper.session.Session_method)\n- o (superduper.session.Session_method) * on_search()_(slidge.BaseSession_method)\n- * on_create_group()_(slidge.BaseSession_method) o (slidge.core.session.BaseSession_method)\n- o (slidge.core.session.BaseSession_method) o (superduper.session.Session_method)\n- o (superduper.session.Session_method) * on_set_affiliation()_(slidge.group.LegacyMUC\n- * on_destroy_request()_(slidge.group.LegacyMUC method)\n- method) o (slidge.group.room.LegacyMUC_method)\n- o (slidge.group.room.LegacyMUC_method) o (superduper.group.MUC_method)\n- o (superduper.group.MUC_method) * on_set_config()_(slidge.group.LegacyMUC_method)\n- * on_displayed()_(slidge.BaseSession_method) o (slidge.group.room.LegacyMUC_method)\n- o (slidge.core.session.BaseSession_method) o (superduper.group.MUC_method)\n- o (superduper.session.Session_method) * on_text()_(slidge.BaseSession_method)\n- * on_file()_(slidge.BaseSession_method) o (slidge.core.session.BaseSession_method)\n- o (slidge.core.session.BaseSession_method) o (superduper.session.Session_method)\n- o (superduper.session.Session_method) * online()_(slidge.contact.contact.LegacyContact\n- * on_friend_accept()_ method)\n- (slidge.contact.contact.LegacyContact_method) o (slidge.contact.LegacyContact_method)\n- o (slidge.contact.LegacyContact_method) o (slidge.group.LegacyParticipant_method)\n- o (superduper.contact.Contact_method) o (slidge.group.participant.LegacyParticipant\n- * on_friend_delete()_ method)\n- (slidge.contact.contact.LegacyContact_method) o (superduper.contact.Contact_method)\n- o (slidge.contact.LegacyContact_method) o (superduper.group.Participant_method)\n- o (superduper.contact.Contact_method) * OpenGraphMixin_(class_in\n- * on_friend_request()_ slidge.slixfix.link_preview.stanza)\n- (slidge.contact.contact.LegacyContact_method) * Option_(class_in_slidge.command.base)\n- o (slidge.contact.LegacyContact_method)\n- o (superduper.contact.Contact_method)\n+ * offline()_\n+ (slidge.contact.contact.LegacyContact\n+ method) * on_inactive()_(slidge.BaseSession\n+ o (slidge.contact.LegacyContact method)\n+ method) o (slidge.core.session.BaseSession\n+ o (superduper.contact.Contact method)\n+ method) o (superduper.session.Session\n+ o (superduper.group.Participant method)\n+ method) * on_invitation()_(slidge.BaseSession\n+ * on_active()_(slidge.BaseSession method)\n+ method) o (slidge.core.session.BaseSession\n+ o (slidge.core.session.BaseSession method)\n+ method) o (superduper.session.Session\n+ o (superduper.session.Session method)\n+ method) * on_moderate()_(slidge.BaseSession\n+ * on_avatar()_(slidge.BaseSession method)\n+ method) o (slidge.core.session.BaseSession\n+ o (slidge.core.session.BaseSession method)\n+ method) o (superduper.session.Session\n+ o (slidge.group.LegacyMUC_method) method)\n+ o (slidge.group.room.LegacyMUC * on_paused()_(slidge.BaseSession\n+ method) method)\n+ o (superduper.group.MUC_method) o (slidge.core.session.BaseSession\n+ o (superduper.session.Session method)\n+ method) o (superduper.session.Session\n+ * on_composing()_(slidge.BaseSession method)\n+ method) * on_presence()_(slidge.BaseSession\n+ o (slidge.core.session.BaseSession method)\n+ method) o (slidge.core.session.BaseSession\n+ o (superduper.session.Session method)\n+ method) o (superduper.session.Session\n+ * on_correct()_(slidge.BaseSession method)\n+ method) * on_react()_(slidge.BaseSession_method)\n+ o (slidge.core.session.BaseSession o (slidge.core.session.BaseSession\n+ method) method)\n+ o (superduper.session.Session o (superduper.session.Session\n+ method) method)\n+ * on_create_group()_(slidge.BaseSession * on_retract()_(slidge.BaseSession\n+ method) method)\n+ o (slidge.core.session.BaseSession o (slidge.core.session.BaseSession\n+ method) method)\n+ o (superduper.session.Session o (superduper.session.Session\n+ method) method)\n+ * on_destroy_request()_ * on_search()_(slidge.BaseSession\n+ (slidge.group.LegacyMUC_method) method)\n+ o (slidge.group.room.LegacyMUC o (slidge.core.session.BaseSession\n+ method) method)\n+ o (superduper.group.MUC_method) o (superduper.session.Session\n+ * on_displayed()_(slidge.BaseSession method)\n+ method) * on_set_affiliation()_\n+ o (slidge.core.session.BaseSession (slidge.group.LegacyMUC_method)\n+ method) o (slidge.group.room.LegacyMUC\n+ o (superduper.session.Session method)\n+ method) o (superduper.group.MUC_method)\n+ * on_file()_(slidge.BaseSession_method) * on_set_config()_\n+ o (slidge.core.session.BaseSession (slidge.group.LegacyMUC_method)\n+ method) o (slidge.group.room.LegacyMUC\n+ o (superduper.session.Session method)\n+ method) o (superduper.group.MUC_method)\n+ * on_friend_accept()_ * on_text()_(slidge.BaseSession_method)\n+ (slidge.contact.contact.LegacyContact o (slidge.core.session.BaseSession\n+ method) method)\n+ o (slidge.contact.LegacyContact o (superduper.session.Session\n+ method) method)\n+ o (superduper.contact.Contact * online()_\n+ method) (slidge.contact.contact.LegacyContact\n+ * on_friend_delete()_ method)\n+ (slidge.contact.contact.LegacyContact o (slidge.contact.LegacyContact\n+ method) method)\n+ o (slidge.contact.LegacyContact o (superduper.contact.Contact\n+ method) method)\n+ o (superduper.contact.Contact o (superduper.group.Participant\n+ method) method)\n+ * on_friend_request()_ * OpenGraphMixin_(class_in\n+ (slidge.contact.contact.LegacyContact slidge.slixfix.link_preview.stanza)\n+ method) * Option_(class_in_slidge.command.base)\n+ o (slidge.contact.LegacyContact\n+ method)\n+ o (superduper.contact.Contact\n+ method)\n \n ***** P *****\n- * Participant_(class_in_superduper.group)\n- * partition()_(slidge.util.types.URL_method)\n- * paused()_(slidge.BaseGateway_method) * popitem()_(slidge.command.base.Option\n- o (slidge.contact.contact.LegacyContact_method) method)\n- o (slidge.contact.LegacyContact_method) o (slidge.util.db.EncryptedShelf\n+ * Participant_(class_in_superduper.group) * popitem()_(slidge.command.base.Option\n+ * partition()_(slidge.util.types.URL_method) method)\n+ * paused()_(slidge.BaseGateway_method) o (slidge.util.db.EncryptedShelf\n+ o (slidge.contact.contact.LegacyContact_method) method)\n+ o (slidge.contact.LegacyContact_method) o (slidge.util.types.ResourceDict\n o (slidge.core.gateway.base.BaseGateway_method) method)\n- o (slidge.core.gateway.BaseGateway_method) o (slidge.util.types.ResourceDict\n- o (slidge.group.LegacyParticipant_method) method)\n- o (slidge.group.participant.LegacyParticipant * Presence()_(slidge.util.test.SlidgeTest\n- method) method)\n- o (superduper.contact.Contact_method) o (slidge.util.test.SlixTestPlus\n- o (superduper.gateway.Gateway_method) method)\n- o (superduper.group.Participant_method) * private_(slidge.command.base.FormField\n- * pop()_(slidge.command.base.Option_method) attribute)\n- o (slidge.slixfix.link_preview.stanza.Description o (slidge.command.FormField_attribute)\n- method) * prompt_(slidge.command.base.Confirmation\n- o (slidge.slixfix.link_preview.stanza.Image_method) attribute)\n- o (slidge.slixfix.link_preview.stanza.LinkPreview o (slidge.command.Confirmation\n- method) attribute)\n- o (slidge.slixfix.link_preview.stanza.OpenGraphMixin * PROPER_RECEIPTS_(slidge.BaseGateway\n- method) attribute)\n- o (slidge.slixfix.link_preview.stanza.SiteName o (slidge.core.gateway.base.BaseGateway\n- method) attribute)\n- o (slidge.slixfix.link_preview.stanza.Title_method) o (slidge.core.gateway.BaseGateway\n- o (slidge.slixfix.link_preview.stanza.Type__method) attribute)\n- o (slidge.slixfix.link_preview.stanza.Url_method) o (superduper.gateway.Gateway\n- o (slidge.slixfix.roster.YesSet_method) attribute)\n- o (slidge.util.db.EncryptedShelf_method)\n+ o (slidge.core.gateway.BaseGateway_method) * Presence()_(slidge.util.test.SlidgeTest\n+ o (superduper.contact.Contact_method) method)\n+ o (superduper.gateway.Gateway_method) o (slidge.util.test.SlixTestPlus\n+ o (superduper.group.Participant_method) method)\n+ * pop()_(slidge.command.base.Option_method) * private_(slidge.command.base.FormField\n+ o (slidge.slixfix.link_preview.stanza.Description attribute)\n+ method) o (slidge.command.FormField_attribute)\n+ o (slidge.slixfix.link_preview.stanza.Image_method) * prompt_(slidge.command.base.Confirmation\n+ o (slidge.slixfix.link_preview.stanza.LinkPreview attribute)\n+ method) o (slidge.command.Confirmation\n+ o (slidge.slixfix.link_preview.stanza.OpenGraphMixin attribute)\n+ method) * PROPER_RECEIPTS_(slidge.BaseGateway\n+ o (slidge.slixfix.link_preview.stanza.SiteName attribute)\n+ method) o (slidge.core.gateway.base.BaseGateway\n+ o (slidge.slixfix.link_preview.stanza.Title_method) attribute)\n+ o (slidge.slixfix.link_preview.stanza.Type__method) o (slidge.core.gateway.BaseGateway\n+ o (slidge.slixfix.link_preview.stanza.Url_method) attribute)\n+ o (slidge.slixfix.roster.YesSet_method) o (superduper.gateway.Gateway\n+ o (slidge.util.db.EncryptedShelf_method) attribute)\n o (slidge.util.types.ResourceDict_method)\n \n ***** Q *****\n * QRCODE_(slidge.command.register.RegistrationType_attribute)\n \n ***** R *****\n- * raise_if_not_authorized()_\n- (slidge.command.base.Command_method)\n- o (slidge.command.Command_method)\n- o (slidge.command.user.CreateGroup_method)\n- o (slidge.command.user.ListContacts_method)\n- o (slidge.command.user.ListGroups_method)\n- o (slidge.command.user.Login_method) * remove()_(slidge.slixfix.roster.YesSet_method)\n- o (slidge.command.user.Search_method) o (slidge.util.db.UserStore_method)\n- o (slidge.command.user.SyncContacts_method) * remove_by_jid()_(slidge.util.db.UserStore_method)\n- o (slidge.command.user.Unregister_method) * remove_participant()_(slidge.group.LegacyMUC\n- * react()_(slidge.BaseGateway_method) method)\n- o (slidge.contact.contact.LegacyContact o (slidge.group.room.LegacyMUC_method)\n+ * remove()_(slidge.slixfix.roster.YesSet\n+ method)\n+ o (slidge.util.db.UserStore_method)\n+ * remove_by_jid()_(slidge.util.db.UserStore\n+ method)\n+ * raise_if_not_authorized()_ * remove_participant()_\n+ (slidge.command.admin.AdminCommand_method) (slidge.group.LegacyMUC_method)\n+ o (slidge.command.admin.ChangeLoglevel o (slidge.group.room.LegacyMUC_method)\n method) o (superduper.group.MUC_method)\n- o (slidge.contact.LegacyContact_method) * removeFilter()_(slidge.util.util.SlidgeLogger\n- o (slidge.core.gateway.base.BaseGateway method)\n- method) * removeHandler()_(slidge.util.util.SlidgeLogger\n- o (slidge.core.gateway.BaseGateway_method) method)\n- o (slidge.group.LegacyParticipant_method) * removeprefix()_(slidge.util.types.URL_method)\n- o (slidge.group.participant.LegacyParticipant * removesuffix()_(slidge.util.types.URL_method)\n- method) * replace()_(slidge.util.types.URL_method)\n- o (superduper.contact.Contact_method) * reply()_(in_module_slidge.slixfix)\n- o (superduper.gateway.Gateway_method) * required_(slidge.command.base.FormField\n- o (superduper.group.Participant_method) attribute)\n- * received()_(slidge.BaseGateway_method) o (slidge.command.FormField_attribute)\n- o (slidge.contact.contact.LegacyContact * reset_subclasses()_(in_module_slidge.util.test)\n- method) * RESOURCE_(slidge.contact.contact.LegacyContact\n- o (slidge.contact.LegacyContact_method) attribute)\n- o (slidge.core.gateway.base.BaseGateway o (slidge.contact.LegacyContact_attribute)\n- method) o (superduper.contact.Contact_attribute)\n- o (slidge.core.gateway.BaseGateway_method) * ResourceDict_(class_in_slidge.util.types)\n- o (slidge.group.LegacyParticipant_method) * retract()_(slidge.BaseGateway_method)\n- o (slidge.group.participant.LegacyParticipant o (slidge.contact.contact.LegacyContact\n+ o (slidge.command.admin.DeleteUser_method) * removeFilter()_\n+ o (slidge.command.admin.Exec_method) (slidge.util.util.SlidgeLogger_method)\n+ o (slidge.command.admin.ListUsers_method) * removeHandler()_\n+ o (slidge.command.admin.SlidgeInfo_method) (slidge.util.util.SlidgeLogger_method)\n+ o (slidge.command.base.Command_method) * removeprefix()_(slidge.util.types.URL\n+ o (slidge.command.Command_method) method)\n+ o (slidge.command.user.CreateGroup_method) * removesuffix()_(slidge.util.types.URL\n+ o (slidge.command.user.ListContacts_method) method)\n+ o (slidge.command.user.ListGroups_method) * replace()_(slidge.util.types.URL_method)\n+ o (slidge.command.user.Login_method) * reply()_(in_module_slidge.slixfix)\n+ o (slidge.command.user.Search_method) * required_(slidge.command.base.FormField\n+ o (slidge.command.user.SyncContacts_method) attribute)\n+ o (slidge.command.user.Unregister_method) o (slidge.command.FormField_attribute)\n+ * react()_(slidge.BaseGateway_method) * reset_subclasses()_(in_module\n+ o (slidge.contact.contact.LegacyContact slidge.util.test)\n+ method) * RESOURCE_\n+ o (slidge.contact.LegacyContact_method) (slidge.contact.contact.LegacyContact\n+ o (slidge.core.gateway.base.BaseGateway attribute)\n+ method) o (slidge.contact.LegacyContact\n+ o (slidge.core.gateway.BaseGateway_method) attribute)\n+ o (superduper.contact.Contact_method) o (superduper.contact.Contact\n+ o (superduper.gateway.Gateway_method) attribute)\n+ o (superduper.group.Participant_method) * ResourceDict_(class_in_slidge.util.types)\n+ * received()_(slidge.BaseGateway_method) * retract()_(slidge.BaseGateway_method)\n+ o (slidge.contact.contact.LegacyContact o (slidge.contact.contact.LegacyContact\n+ method) method)\n+ o (slidge.contact.LegacyContact_method) o (slidge.contact.LegacyContact_method)\n+ o (slidge.core.gateway.base.BaseGateway o (slidge.core.gateway.base.BaseGateway\n method) method)\n- o (superduper.contact.Contact_method) o (slidge.contact.LegacyContact_method)\n- o (superduper.gateway.Gateway_method) o (slidge.core.gateway.base.BaseGateway\n- o (superduper.group.Participant_method) method)\n- * recv()_(slidge.util.test.SlidgeTest_method) o (slidge.core.gateway.BaseGateway_method)\n- o (slidge.util.test.SlixTestPlus_method) o (slidge.group.LegacyParticipant_method)\n- * recv_feature()_(slidge.util.test.SlidgeTest o (slidge.group.participant.LegacyParticipant\n- method) method)\n- o (slidge.util.test.SlixTestPlus_method) o (superduper.contact.Contact_method)\n- * recv_header()_(slidge.util.test.SlidgeTest o (superduper.gateway.Gateway_method)\n- method) o (superduper.group.Participant_method)\n+ o (slidge.core.gateway.BaseGateway_method) o (slidge.core.gateway.BaseGateway\n+ o (superduper.contact.Contact_method) method)\n+ o (superduper.gateway.Gateway_method) o (superduper.contact.Contact_method)\n+ o (superduper.group.Participant_method) o (superduper.gateway.Gateway_method)\n+ * recv()_(slidge.util.test.SlidgeTest_method) o (superduper.group.Participant_method)\n o (slidge.util.test.SlixTestPlus_method) * rfind()_(slidge.util.types.URL_method)\n- * register()_(slidge.command.adhoc.AdhocProvider * rindex()_(slidge.util.types.URL_method)\n+ * recv_feature()_(slidge.util.test.SlidgeTest * rindex()_(slidge.util.types.URL_method)\n method) * rjust()_(slidge.util.types.URL_method)\n- o (slidge.core.mixins.base.MetaBase_method) * Roster\n- o (slidge.util.ABCSubclassableOnceAtMost o (class_in_superduper.contact)\n- method) * ROSTER_GROUP_(slidge.BaseGateway_attribute)\n- o (slidge.util.util.ABCSubclassableOnceAtMost o (slidge.core.gateway.base.BaseGateway\n+ o (slidge.util.test.SlixTestPlus_method) * Roster\n+ * recv_header()_(slidge.util.test.SlidgeTest o (class_in_superduper.contact)\n+ method) * ROSTER_GROUP_(slidge.BaseGateway_attribute)\n+ o (slidge.util.test.SlixTestPlus_method) o (slidge.core.gateway.base.BaseGateway\n+ * register()_(slidge.command.adhoc.AdhocProvider attribute)\n+ method) o (slidge.core.gateway.BaseGateway\n+ o (slidge.core.mixins.base.MetaBase_method) attribute)\n+ o (slidge.util.ABCSubclassableOnceAtMost o (superduper.gateway.Gateway\n method) attribute)\n- * REGISTRATION_FIELDS_(slidge.BaseGateway o (slidge.core.gateway.BaseGateway_attribute)\n- attribute) o (superduper.gateway.Gateway_attribute)\n- o (slidge.core.gateway.base.BaseGateway * RosterBackend_(class_in_slidge.slixfix.roster)\n- attribute) * rpartition()_(slidge.util.types.URL_method)\n- o (slidge.core.gateway.BaseGateway_attribute) * rsplit()_(slidge.util.types.URL_method)\n- * registration_form_(slidge.util.db.GatewayUser * rstrip()_(slidge.util.types.URL_method)\n- attribute) * run()_(slidge.command.base.Command_method)\n- * REGISTRATION_INSTRUCTIONS_(slidge.BaseGateway o (slidge.command.Command_method)\n- attribute) o (slidge.command.user.CreateGroup_method)\n- o (slidge.core.gateway.base.BaseGateway o (slidge.command.user.ListContacts_method)\n- attribute) o (slidge.command.user.ListGroups_method)\n- o (slidge.core.gateway.BaseGateway_attribute) o (slidge.command.user.Login_method)\n- * REGISTRATION_TYPE_(slidge.BaseGateway_attribute) o (slidge.command.user.Search_method)\n- o (slidge.core.gateway.base.BaseGateway o (slidge.command.user.SyncContacts_method)\n- attribute) o (slidge.command.user.Unregister_method)\n- o (slidge.core.gateway.BaseGateway_attribute)\n- * RegistrationType_(class_in\n- slidge.command.register)\n- * reject_friend_request()_\n- (slidge.contact.contact.LegacyContact_method)\n- o (slidge.contact.LegacyContact_method)\n- o (superduper.contact.Contact_method)\n+ o (slidge.util.util.ABCSubclassableOnceAtMost * RosterBackend_(class_in\n+ method) slidge.slixfix.roster)\n+ * REGISTRATION_FIELDS_(slidge.BaseGateway * rpartition()_(slidge.util.types.URL_method)\n+ attribute) * rsplit()_(slidge.util.types.URL_method)\n+ o (slidge.core.gateway.base.BaseGateway * rstrip()_(slidge.util.types.URL_method)\n+ attribute) * run()_(slidge.command.admin.AdminCommand\n+ o (slidge.core.gateway.BaseGateway_attribute) method)\n+ * registration_form_(slidge.util.db.GatewayUser o (slidge.command.admin.ChangeLoglevel\n+ attribute) method)\n+ * REGISTRATION_INSTRUCTIONS_(slidge.BaseGateway o (slidge.command.admin.DeleteUser\n+ attribute) method)\n+ o (slidge.core.gateway.base.BaseGateway o (slidge.command.admin.Exec_method)\n+ attribute) o (slidge.command.admin.ListUsers\n+ o (slidge.core.gateway.BaseGateway_attribute) method)\n+ * REGISTRATION_TYPE_(slidge.BaseGateway_attribute) o (slidge.command.admin.SlidgeInfo\n+ o (slidge.core.gateway.base.BaseGateway method)\n+ attribute) o (slidge.command.base.Command_method)\n+ o (slidge.core.gateway.BaseGateway_attribute) o (slidge.command.Command_method)\n+ * RegistrationType_(class_in o (slidge.command.user.CreateGroup\n+ slidge.command.register) method)\n+ * reject_friend_request()_ o (slidge.command.user.ListContacts\n+ (slidge.contact.contact.LegacyContact_method) method)\n+ o (slidge.contact.LegacyContact_method) o (slidge.command.user.ListGroups\n+ o (superduper.contact.Contact_method) method)\n+ o (slidge.command.user.Login_method)\n+ o (slidge.command.user.Search_method)\n+ o (slidge.command.user.SyncContacts\n+ method)\n+ o (slidge.command.user.Unregister\n+ method)\n \n ***** S *****\n- * slidge.core.gateway.base\n+ * slidge.core.gateway.delivery_receipt\n o module\n- * slidge.core.gateway.caps\n+ * slidge.core.gateway.disco\n o module\n- * slidge.core.gateway.delivery_receipt\n+ * slidge.core.gateway.mam\n o module\n- * Search_(class_in_slidge.command.user) * slidge.core.gateway.disco\n- * SEARCH_FIELDS_(slidge.BaseGateway_attribute) o module\n- o (slidge.core.gateway.base.BaseGateway_attribute) * slidge.core.gateway.mam\n- o (slidge.core.gateway.BaseGateway_attribute) o module\n- o (superduper.gateway.Gateway_attribute) * slidge.core.gateway.muc_admin\n- * SEARCH_INSTRUCTIONS_(slidge.BaseGateway_attribute) o module\n- o (slidge.core.gateway.base.BaseGateway_attribute) * slidge.core.gateway.ping\n- o (slidge.core.gateway.BaseGateway_attribute) o module\n- o (superduper.gateway.Gateway_attribute) * slidge.core.gateway.presence\n- * SEARCH_TITLE_(slidge.BaseGateway_attribute) o module\n- o (slidge.core.gateway.base.BaseGateway_attribute) * slidge.core.gateway.registration\n- o (slidge.core.gateway.BaseGateway_attribute) o module\n- o (superduper.gateway.Gateway_attribute) * slidge.core.gateway.search\n- * SearchResult_(class_in_slidge.command) o module\n- o (class_in_slidge.command.base) * slidge.core.gateway.session_dispatcher\n- * send()_(slidge.util.test.SlidgeTest_method) o module\n- o (slidge.util.test.SlixTestPlus_method) * slidge.core.gateway.vcard_temp\n- * send_feature()_(slidge.util.test.SlidgeTest_method) o module\n- o (slidge.util.test.SlixTestPlus_method) * slidge.core.mixins\n- * send_file()_(slidge.BaseGateway_method) o module\n- o (slidge.contact.contact.LegacyContact_method) * slidge.core.mixins.attachment\n- o (slidge.contact.LegacyContact_method) o module\n- o (slidge.core.gateway.base.BaseGateway_method) * slidge.core.mixins.avatar\n- o (slidge.core.gateway.BaseGateway_method) o module\n- o (slidge.group.LegacyParticipant_method) * slidge.core.mixins.base\n- o (slidge.group.participant.LegacyParticipant o module\n- method) * slidge.core.mixins.disco\n+ * slidge.core.gateway.muc_admin\n+ * Search_(class_in_slidge.command.user) o module\n+ * SEARCH_FIELDS_(slidge.BaseGateway_attribute) * slidge.core.gateway.ping\n+ o (slidge.core.gateway.base.BaseGateway_attribute) o module\n+ o (slidge.core.gateway.BaseGateway_attribute) * slidge.core.gateway.presence\n+ o (superduper.gateway.Gateway_attribute) o module\n+ * SEARCH_INSTRUCTIONS_(slidge.BaseGateway_attribute) * slidge.core.gateway.registration\n+ o (slidge.core.gateway.base.BaseGateway_attribute) o module\n+ o (slidge.core.gateway.BaseGateway_attribute) * slidge.core.gateway.search\n+ o (superduper.gateway.Gateway_attribute) o module\n+ * SEARCH_TITLE_(slidge.BaseGateway_attribute) * slidge.core.gateway.session_dispatcher\n+ o (slidge.core.gateway.base.BaseGateway_attribute) o module\n+ o (slidge.core.gateway.BaseGateway_attribute) * slidge.core.gateway.vcard_temp\n+ o (superduper.gateway.Gateway_attribute) o module\n+ * SearchResult_(class_in_slidge.command) * slidge.core.mixins\n+ o (class_in_slidge.command.base) o module\n+ * send()_(slidge.util.test.SlidgeTest_method) * slidge.core.mixins.attachment\n+ o (slidge.util.test.SlixTestPlus_method) o module\n+ * send_feature()_(slidge.util.test.SlidgeTest_method) * slidge.core.mixins.avatar\n+ o (slidge.util.test.SlixTestPlus_method) o module\n+ * send_file()_(slidge.BaseGateway_method) * slidge.core.mixins.base\n+ o (slidge.contact.contact.LegacyContact_method) o module\n+ o (slidge.contact.LegacyContact_method) * slidge.core.mixins.disco\n+ o (slidge.core.gateway.base.BaseGateway_method) o module\n+ o (slidge.core.gateway.BaseGateway_method) * slidge.core.mixins.lock\n o (superduper.contact.Contact_method) o module\n- o (superduper.gateway.Gateway_method) * slidge.core.mixins.lock\n+ o (superduper.gateway.Gateway_method) * slidge.core.mixins.message\n o (superduper.group.Participant_method) o module\n- * send_gateway_invite()_(slidge.BaseSession_method) * slidge.core.mixins.message\n+ * send_gateway_invite()_(slidge.BaseSession_method) * slidge.core.mixins.message_maker\n o (slidge.core.session.BaseSession_method) o module\n- o (superduper.session.Session_method) * slidge.core.mixins.message_maker\n+ o (superduper.session.Session_method) * slidge.core.mixins.presence\n * send_gateway_message()_(slidge.BaseSession_method) o module\n- o (slidge.core.session.BaseSession_method) * slidge.core.mixins.presence\n+ o (slidge.core.session.BaseSession_method) * slidge.core.mixins.recipient\n o (superduper.session.Session_method) o module\n- * send_gateway_status()_(slidge.BaseSession_method) * slidge.core.mixins.recipient\n+ * send_gateway_status()_(slidge.BaseSession_method) * slidge.core.pubsub\n o (slidge.core.session.BaseSession_method) o module\n- o (superduper.session.Session_method) * slidge.core.pubsub\n+ o (superduper.session.Session_method) * slidge.core.session\n * send_header()_(slidge.util.test.SlidgeTest_method) o module\n- o (slidge.util.test.SlixTestPlus_method) * slidge.core.session\n+ o (slidge.util.test.SlixTestPlus_method) * slidge.group\n * send_initial_presence()_(slidge.group.LegacyParticipant o module\n- method) * slidge.group\n+ method) * slidge.group.archive\n o (slidge.group.participant.LegacyParticipant o module\n- method) * slidge.group.archive\n+ method) * slidge.group.bookmarks\n o (superduper.group.Participant_method) o module\n- * send_qr()_(slidge.BaseGateway_method) * slidge.group.bookmarks\n+ * send_qr()_(slidge.BaseGateway_method) * slidge.group.participant\n o (slidge.BaseSession_method) o module\n- o (slidge.core.gateway.base.BaseGateway_method) * slidge.group.participant\n+ o (slidge.core.gateway.base.BaseGateway_method) * slidge.group.room\n o (slidge.core.gateway.BaseGateway_method) o module\n- o (slidge.core.session.BaseSession_method) * slidge.group.room\n+ o (slidge.core.session.BaseSession_method) * slidge.migration\n o (superduper.gateway.Gateway_method) o module\n- o (superduper.session.Session_method) * slidge.migration\n+ o (superduper.session.Session_method) * slidge.slixfix\n * send_text()_(slidge.BaseGateway_method) o module\n- o (slidge.contact.contact.LegacyContact_method) * slidge.slixfix\n+ o (slidge.contact.contact.LegacyContact_method) * slidge.slixfix.link_preview\n o (slidge.contact.LegacyContact_method) o module\n- o (slidge.core.gateway.base.BaseGateway_method) * slidge.slixfix.link_preview\n+ o (slidge.core.gateway.base.BaseGateway_method) * slidge.slixfix.link_preview.link_preview\n o (slidge.core.gateway.BaseGateway_method) o module\n- o (slidge.group.LegacyParticipant_method) * slidge.slixfix.link_preview.link_preview\n- o (slidge.group.participant.LegacyParticipant o module\n- method) * slidge.slixfix.link_preview.stanza\n+ o (superduper.contact.Contact_method) * slidge.slixfix.link_preview.stanza\n+ o (superduper.gateway.Gateway_method) o module\n+ o (superduper.group.Participant_method) * slidge.slixfix.roster\n+ * Session_(class_in_superduper.session) o module\n+ * set_avatar()_(slidge.contact.contact.LegacyContact * slidge.util\n+ method) o module\n+ o (slidge.contact.LegacyContact_method) * slidge.util.archive_msg\n+ o (slidge.core.mixins.avatar.AvatarMixin_method) o module\n+ o (slidge.core.mixins.AvatarMixin_method) * slidge.util.conf\n o (superduper.contact.Contact_method) o module\n- o (superduper.gateway.Gateway_method) * slidge.slixfix.roster\n- o (superduper.group.Participant_method) o module\n- * Session_(class_in_superduper.session) * slidge.util\n- * set_avatar()_(slidge.contact.contact.LegacyContact o module\n- method) * slidge.util.archive_msg\n- o (slidge.contact.LegacyContact_method) o module\n- o (slidge.core.mixins.avatar.AvatarMixin_method) * slidge.util.conf\n- o (slidge.core.mixins.AvatarMixin_method) o module\n- o (slidge.group.LegacyMUC_method) * slidge.util.db\n- o (slidge.group.room.LegacyMUC_method) o module\n- o (superduper.contact.Contact_method) * slidge.util.sql\n- o (superduper.group.MUC_method) o module\n- * set_file()_(slidge.util.db.UserStore_method) * slidge.util.test\n- * setdefault()_(slidge.command.base.Option_method) o module\n- o (slidge.util.db.EncryptedShelf_method) * slidge.util.types\n- o (slidge.util.types.ResourceDict_method) o module\n- * setLevel()_(slidge.util.util.SlidgeLogger_method) * slidge.util.util\n- * setup()_(slidge.slixfix.link_preview.stanza.Description o module\n- method) * SlidgeLogger_(class_in_slidge.util.util)\n- o (slidge.slixfix.link_preview.stanza.Image_method) * SlidgeTest_(class_in_slidge.util.test)\n- o (slidge.slixfix.link_preview.stanza.LinkPreview * SlixTestPlus_(class_in_slidge.util.test)\n- method) * SPECIAL_MSG_ID_PREFIX_\n- o (slidge.slixfix.link_preview.stanza.OpenGraphMixin (slidge.BaseSession_attribute)\n- method) o (slidge.core.session.BaseSession\n- o (slidge.slixfix.link_preview.stanza.SiteName attribute)\n- method) o (superduper.session.Session\n- o (slidge.slixfix.link_preview.stanza.Title_method) attribute)\n- o (slidge.slixfix.link_preview.stanza.Type__method) * split()_(slidge.util.types.URL_method)\n- o (slidge.slixfix.link_preview.stanza.Url_method) * splitlines()_(slidge.util.types.URL\n- * setUp()_(slidge.util.test.SlidgeTest_method) method)\n- o (slidge.util.test.SlixTestPlus_method) * SQLBiDict_(class_in_slidge.util.sql)\n- * setUpClass()_(slidge.util.test.SlidgeTest_class_method) * STABLE_ARCHIVE_(slidge.group.LegacyMUC\n- o (slidge.util.test.SlixTestPlus_class_method) attribute)\n- * shortDescription()_(slidge.util.test.SlidgeTest_method) o (slidge.group.room.LegacyMUC\n- o (slidge.util.test.SlixTestPlus_method) attribute)\n- * SigTermInterrupt o (superduper.group.MUC_attribute)\n- * SINGLE_STEP_FORM_ * startswith()_(slidge.util.types.URL\n- (slidge.command.register.RegistrationType_attribute) method)\n- * SiteName_(class_in_slidge.slixfix.link_preview.stanza) * stream_close()_\n- * skipTest()_(slidge.util.test.SlidgeTest_method) (slidge.util.test.SlidgeTest_method)\n- o (slidge.util.test.SlixTestPlus_method) o (slidge.util.test.SlixTestPlus\n- * slidge method)\n- o module * stream_disconnect()_\n- * slidge.__main__ (slidge.util.test.SlidgeTest_method)\n- o module o (slidge.util.test.SlixTestPlus\n- * slidge.command method)\n- o module * stream_start()_\n- * slidge.command.adhoc (slidge.util.test.SlidgeTest_method)\n- o module o (slidge.util.test.SlixTestPlus\n- * slidge.command.admin method)\n- o module * strip()_(slidge.util.types.URL_method)\n- * slidge.command.base * subTest()_(slidge.util.test.SlidgeTest\n+ o (superduper.group.MUC_method) * slidge.util.db\n+ * set_file()_(slidge.util.db.UserStore_method) o module\n+ * setdefault()_(slidge.command.base.Option_method) * slidge.util.sql\n+ o (slidge.util.db.EncryptedShelf_method) o module\n+ o (slidge.util.types.ResourceDict_method) * slidge.util.test\n+ * setLevel()_(slidge.util.util.SlidgeLogger_method) o module\n+ * setup()_(slidge.slixfix.link_preview.stanza.Description * slidge.util.types\n+ method) o module\n+ o (slidge.slixfix.link_preview.stanza.Image_method) * slidge.util.util\n+ o (slidge.slixfix.link_preview.stanza.LinkPreview o module\n+ method) * SlidgeInfo_(class_in\n+ o (slidge.slixfix.link_preview.stanza.OpenGraphMixin slidge.command.admin)\n+ method) * SlidgeLogger_(class_in_slidge.util.util)\n+ o (slidge.slixfix.link_preview.stanza.SiteName * SlidgeTest_(class_in_slidge.util.test)\n+ method) * SlixTestPlus_(class_in_slidge.util.test)\n+ o (slidge.slixfix.link_preview.stanza.Title_method) * SPECIAL_MSG_ID_PREFIX_\n+ o (slidge.slixfix.link_preview.stanza.Type__method) (slidge.BaseSession_attribute)\n+ o (slidge.slixfix.link_preview.stanza.Url_method) o (slidge.core.session.BaseSession\n+ * setUp()_(slidge.util.test.SlidgeTest_method) attribute)\n+ o (slidge.util.test.SlixTestPlus_method) o (superduper.session.Session\n+ * setUpClass()_(slidge.util.test.SlidgeTest_class_method) attribute)\n+ o (slidge.util.test.SlixTestPlus_class_method) * split()_(slidge.util.types.URL_method)\n+ * shortDescription()_(slidge.util.test.SlidgeTest_method) * splitlines()_(slidge.util.types.URL\n+ o (slidge.util.test.SlixTestPlus_method) method)\n+ * SigTermInterrupt * SQLBiDict_(class_in_slidge.util.sql)\n+ * SINGLE_STEP_FORM_ * STABLE_ARCHIVE_(slidge.group.LegacyMUC\n+ (slidge.command.register.RegistrationType_attribute) attribute)\n+ * SiteName_(class_in_slidge.slixfix.link_preview.stanza) o (slidge.group.room.LegacyMUC\n+ * skipTest()_(slidge.util.test.SlidgeTest_method) attribute)\n+ o (slidge.util.test.SlixTestPlus_method) o (superduper.group.MUC_attribute)\n+ * slidge * startswith()_(slidge.util.types.URL\n o module method)\n+ * slidge.__main__ * stream_close()_\n+ o module (slidge.util.test.SlidgeTest_method)\n+ * slidge.command o (slidge.util.test.SlixTestPlus\n+ o module method)\n+ * slidge.command.adhoc * stream_disconnect()_\n+ o module (slidge.util.test.SlidgeTest_method)\n+ * slidge.command.admin o (slidge.util.test.SlixTestPlus\n+ o module method)\n+ * slidge.command.base * stream_start()_\n+ o module (slidge.util.test.SlidgeTest_method)\n * slidge.command.categories o (slidge.util.test.SlixTestPlus\n o module method)\n- * slidge.command.chat_command * success_\n- o module (slidge.command.base.Confirmation\n- * slidge.command.register attribute)\n- o module o (slidge.command.Confirmation\n- * slidge.command.user attribute)\n- o module * superduper\n- * slidge.contact o module\n- o module * superduper.contact\n- * slidge.contact.contact o module\n- o module * superduper.gateway\n- * slidge.contact.roster o module\n- o module * superduper.group\n- * slidge.core o module\n- o module * superduper.legacy_client\n- * slidge.core.cache o module\n- o module * superduper.session\n- * slidge.core.config o module\n- o module * superduper.util\n- * slidge.core.gateway o module\n- o module * swapcase()_(slidge.util.types.URL\n+ * slidge.command.chat_command * strip()_(slidge.util.types.URL_method)\n+ o module * subTest()_(slidge.util.test.SlidgeTest\n+ * slidge.command.register method)\n+ o module o (slidge.util.test.SlixTestPlus\n+ * slidge.command.user method)\n+ o module * success_\n+ * slidge.contact (slidge.command.base.Confirmation\n+ o module attribute)\n+ * slidge.contact.contact o (slidge.command.Confirmation\n+ o module attribute)\n+ * slidge.contact.roster * superduper\n+ o module o module\n+ * slidge.core * superduper.contact\n+ o module o module\n+ * slidge.core.cache * superduper.gateway\n+ o module o module\n+ * slidge.core.config * superduper.group\n+ o module o module\n+ * slidge.core.gateway * superduper.legacy_client\n+ o module o module\n+ * slidge.core.gateway.base * superduper.session\n+ o module o module\n+ * slidge.core.gateway.caps * superduper.util\n+ o module o module\n+ * swapcase()_(slidge.util.types.URL\n method)\n * symmetric_difference()_\n (slidge.slixfix.roster.YesSet_method)\n * symmetric_difference_update()_\n (slidge.slixfix.roster.YesSet_method)\n * SyncContacts_(class_in\n slidge.command.user)\n"}]}, {"source1": "./usr/share/doc/python-slidge-doc/html/index.html", "source2": "./usr/share/doc/python-slidge-doc/html/index.html", "unified_diff": "@@ -507,38 +507,17 @@\n </ul>\n </li>\n <li class=\"toctree-l7\"><a class=\"reference internal\" href=\"dev/api/slidge/group/index.html#slidge.group.LegacyParticipant\"><code class=\"docutils literal notranslate\"><span class=\"pre\">LegacyParticipant</span></code></a><ul>\n <li class=\"toctree-l8\"><a class=\"reference internal\" href=\"dev/api/slidge/group/index.html#slidge.group.LegacyParticipant.send_initial_presence\"><code class=\"docutils literal notranslate\"><span class=\"pre\">LegacyParticipant.send_initial_presence()</span></code></a></li>\n <li class=\"toctree-l8\"><a class=\"reference internal\" href=\"dev/api/slidge/group/index.html#slidge.group.LegacyParticipant.leave\"><code class=\"docutils literal notranslate\"><span class=\"pre\">LegacyParticipant.leave()</span></code></a></li>\n <li class=\"toctree-l8\"><a class=\"reference internal\" href=\"dev/api/slidge/group/index.html#slidge.group.LegacyParticipant.kick\"><code class=\"docutils literal notranslate\"><span class=\"pre\">LegacyParticipant.kick()</span></code></a></li>\n <li class=\"toctree-l8\"><a class=\"reference internal\" href=\"dev/api/slidge/group/index.html#slidge.group.LegacyParticipant.ban\"><code class=\"docutils literal notranslate\"><span class=\"pre\">LegacyParticipant.ban()</span></code></a></li>\n-<li class=\"toctree-l8\"><a class=\"reference internal\" href=\"dev/api/slidge/group/index.html#slidge.group.LegacyParticipant.online\"><code class=\"docutils literal notranslate\"><span class=\"pre\">LegacyParticipant.online()</span></code></a></li>\n-<li class=\"toctree-l8\"><a class=\"reference internal\" href=\"dev/api/slidge/group/index.html#slidge.group.LegacyParticipant.away\"><code class=\"docutils literal notranslate\"><span class=\"pre\">LegacyParticipant.away()</span></code></a></li>\n-<li class=\"toctree-l8\"><a class=\"reference internal\" href=\"dev/api/slidge/group/index.html#slidge.group.LegacyParticipant.extended_away\"><code class=\"docutils literal notranslate\"><span class=\"pre\">LegacyParticipant.extended_away()</span></code></a></li>\n-<li class=\"toctree-l8\"><a class=\"reference internal\" href=\"dev/api/slidge/group/index.html#slidge.group.LegacyParticipant.busy\"><code class=\"docutils literal notranslate\"><span class=\"pre\">LegacyParticipant.busy()</span></code></a></li>\n-<li class=\"toctree-l8\"><a class=\"reference internal\" href=\"dev/api/slidge/group/index.html#slidge.group.LegacyParticipant.offline\"><code class=\"docutils literal notranslate\"><span class=\"pre\">LegacyParticipant.offline()</span></code></a></li>\n-<li class=\"toctree-l8\"><a class=\"reference internal\" href=\"dev/api/slidge/group/index.html#slidge.group.LegacyParticipant.invite_to\"><code class=\"docutils literal notranslate\"><span class=\"pre\">LegacyParticipant.invite_to()</span></code></a></li>\n-<li class=\"toctree-l8\"><a class=\"reference internal\" href=\"dev/api/slidge/group/index.html#slidge.group.LegacyParticipant.active\"><code class=\"docutils literal notranslate\"><span class=\"pre\">LegacyParticipant.active()</span></code></a></li>\n-<li class=\"toctree-l8\"><a class=\"reference internal\" href=\"dev/api/slidge/group/index.html#slidge.group.LegacyParticipant.composing\"><code class=\"docutils literal notranslate\"><span class=\"pre\">LegacyParticipant.composing()</span></code></a></li>\n-<li class=\"toctree-l8\"><a class=\"reference internal\" href=\"dev/api/slidge/group/index.html#slidge.group.LegacyParticipant.paused\"><code class=\"docutils literal notranslate\"><span class=\"pre\">LegacyParticipant.paused()</span></code></a></li>\n-<li class=\"toctree-l8\"><a class=\"reference internal\" href=\"dev/api/slidge/group/index.html#slidge.group.LegacyParticipant.inactive\"><code class=\"docutils literal notranslate\"><span class=\"pre\">LegacyParticipant.inactive()</span></code></a></li>\n-<li class=\"toctree-l8\"><a class=\"reference internal\" href=\"dev/api/slidge/group/index.html#slidge.group.LegacyParticipant.gone\"><code class=\"docutils literal notranslate\"><span class=\"pre\">LegacyParticipant.gone()</span></code></a></li>\n-<li class=\"toctree-l8\"><a class=\"reference internal\" href=\"dev/api/slidge/group/index.html#slidge.group.LegacyParticipant.ack\"><code class=\"docutils literal notranslate\"><span class=\"pre\">LegacyParticipant.ack()</span></code></a></li>\n-<li class=\"toctree-l8\"><a class=\"reference internal\" href=\"dev/api/slidge/group/index.html#slidge.group.LegacyParticipant.received\"><code class=\"docutils literal notranslate\"><span class=\"pre\">LegacyParticipant.received()</span></code></a></li>\n-<li class=\"toctree-l8\"><a class=\"reference internal\" href=\"dev/api/slidge/group/index.html#slidge.group.LegacyParticipant.displayed\"><code class=\"docutils literal notranslate\"><span class=\"pre\">LegacyParticipant.displayed()</span></code></a></li>\n-<li class=\"toctree-l8\"><a class=\"reference internal\" href=\"dev/api/slidge/group/index.html#slidge.group.LegacyParticipant.send_text\"><code class=\"docutils literal notranslate\"><span class=\"pre\">LegacyParticipant.send_text()</span></code></a></li>\n-<li class=\"toctree-l8\"><a class=\"reference internal\" href=\"dev/api/slidge/group/index.html#slidge.group.LegacyParticipant.correct\"><code class=\"docutils literal notranslate\"><span class=\"pre\">LegacyParticipant.correct()</span></code></a></li>\n-<li class=\"toctree-l8\"><a class=\"reference internal\" href=\"dev/api/slidge/group/index.html#slidge.group.LegacyParticipant.react\"><code class=\"docutils literal notranslate\"><span class=\"pre\">LegacyParticipant.react()</span></code></a></li>\n-<li class=\"toctree-l8\"><a class=\"reference internal\" href=\"dev/api/slidge/group/index.html#slidge.group.LegacyParticipant.retract\"><code class=\"docutils literal notranslate\"><span class=\"pre\">LegacyParticipant.retract()</span></code></a></li>\n-<li class=\"toctree-l8\"><a class=\"reference internal\" href=\"dev/api/slidge/group/index.html#slidge.group.LegacyParticipant.send_file\"><code class=\"docutils literal notranslate\"><span class=\"pre\">LegacyParticipant.send_file()</span></code></a></li>\n </ul>\n </li>\n <li class=\"toctree-l7\"><a class=\"reference internal\" href=\"dev/api/slidge/group/index.html#slidge.group.LegacyMUC\"><code class=\"docutils literal notranslate\"><span class=\"pre\">LegacyMUC</span></code></a><ul>\n-<li class=\"toctree-l8\"><a class=\"reference internal\" href=\"dev/api/slidge/group/index.html#slidge.group.LegacyMUC.avatar_id\"><code class=\"docutils literal notranslate\"><span class=\"pre\">LegacyMUC.avatar_id</span></code></a></li>\n-<li class=\"toctree-l8\"><a class=\"reference internal\" href=\"dev/api/slidge/group/index.html#slidge.group.LegacyMUC.avatar\"><code class=\"docutils literal notranslate\"><span class=\"pre\">LegacyMUC.avatar</span></code></a></li>\n <li class=\"toctree-l8\"><a class=\"reference internal\" href=\"dev/api/slidge/group/index.html#slidge.group.LegacyMUC.STABLE_ARCHIVE\"><code class=\"docutils literal notranslate\"><span class=\"pre\">LegacyMUC.STABLE_ARCHIVE</span></code></a></li>\n <li class=\"toctree-l8\"><a class=\"reference internal\" href=\"dev/api/slidge/group/index.html#slidge.group.LegacyMUC.KEEP_BACKFILLED_PARTICIPANTS\"><code class=\"docutils literal notranslate\"><span class=\"pre\">LegacyMUC.KEEP_BACKFILLED_PARTICIPANTS</span></code></a></li>\n <li class=\"toctree-l8\"><a class=\"reference internal\" href=\"dev/api/slidge/group/index.html#slidge.group.LegacyMUC.update_info\"><code class=\"docutils literal notranslate\"><span class=\"pre\">LegacyMUC.update_info()</span></code></a></li>\n <li class=\"toctree-l8\"><a class=\"reference internal\" href=\"dev/api/slidge/group/index.html#slidge.group.LegacyMUC.backfill\"><code class=\"docutils literal notranslate\"><span class=\"pre\">LegacyMUC.backfill()</span></code></a></li>\n <li class=\"toctree-l8\"><a class=\"reference internal\" href=\"dev/api/slidge/group/index.html#slidge.group.LegacyMUC.fill_participants\"><code class=\"docutils literal notranslate\"><span class=\"pre\">LegacyMUC.fill_participants()</span></code></a></li>\n <li class=\"toctree-l8\"><a class=\"reference internal\" href=\"dev/api/slidge/group/index.html#slidge.group.LegacyMUC.get_user_participant\"><code class=\"docutils literal notranslate\"><span class=\"pre\">LegacyMUC.get_user_participant()</span></code></a></li>\n <li class=\"toctree-l8\"><a class=\"reference internal\" href=\"dev/api/slidge/group/index.html#slidge.group.LegacyMUC.get_participant\"><code class=\"docutils literal notranslate\"><span class=\"pre\">LegacyMUC.get_participant()</span></code></a></li>\n@@ -548,16 +527,14 @@\n <li class=\"toctree-l8\"><a class=\"reference internal\" href=\"dev/api/slidge/group/index.html#slidge.group.LegacyMUC.remove_participant\"><code class=\"docutils literal notranslate\"><span class=\"pre\">LegacyMUC.remove_participant()</span></code></a></li>\n <li class=\"toctree-l8\"><a class=\"reference internal\" href=\"dev/api/slidge/group/index.html#slidge.group.LegacyMUC.kick_resource\"><code class=\"docutils literal notranslate\"><span class=\"pre\">LegacyMUC.kick_resource()</span></code></a></li>\n <li class=\"toctree-l8\"><a class=\"reference internal\" href=\"dev/api/slidge/group/index.html#slidge.group.LegacyMUC.add_to_bookmarks\"><code class=\"docutils literal notranslate\"><span class=\"pre\">LegacyMUC.add_to_bookmarks()</span></code></a></li>\n <li class=\"toctree-l8\"><a class=\"reference internal\" href=\"dev/api/slidge/group/index.html#slidge.group.LegacyMUC.on_avatar\"><code class=\"docutils literal notranslate\"><span class=\"pre\">LegacyMUC.on_avatar()</span></code></a></li>\n <li class=\"toctree-l8\"><a class=\"reference internal\" href=\"dev/api/slidge/group/index.html#slidge.group.LegacyMUC.on_set_affiliation\"><code class=\"docutils literal notranslate\"><span class=\"pre\">LegacyMUC.on_set_affiliation()</span></code></a></li>\n <li class=\"toctree-l8\"><a class=\"reference internal\" href=\"dev/api/slidge/group/index.html#slidge.group.LegacyMUC.on_set_config\"><code class=\"docutils literal notranslate\"><span class=\"pre\">LegacyMUC.on_set_config()</span></code></a></li>\n <li class=\"toctree-l8\"><a class=\"reference internal\" href=\"dev/api/slidge/group/index.html#slidge.group.LegacyMUC.on_destroy_request\"><code class=\"docutils literal notranslate\"><span class=\"pre\">LegacyMUC.on_destroy_request()</span></code></a></li>\n-<li class=\"toctree-l8\"><a class=\"reference internal\" href=\"dev/api/slidge/group/index.html#slidge.group.LegacyMUC.set_avatar\"><code class=\"docutils literal notranslate\"><span class=\"pre\">LegacyMUC.set_avatar()</span></code></a></li>\n-<li class=\"toctree-l8\"><a class=\"reference internal\" href=\"dev/api/slidge/group/index.html#slidge.group.LegacyMUC.available_emojis\"><code class=\"docutils literal notranslate\"><span class=\"pre\">LegacyMUC.available_emojis()</span></code></a></li>\n </ul>\n </li>\n </ul>\n </li>\n </ul>\n </li>\n </ul>\n", "details": [{"source1": "html2text {}", "source2": "html2text {}", "unified_diff": "@@ -267,37 +267,15 @@\n # LegacyBookmarks.fill()\n # LegacyParticipant\n # LegacyParticipant.send_initial_presence\n ()\n # LegacyParticipant.leave()\n # LegacyParticipant.kick()\n # LegacyParticipant.ban()\n- # LegacyParticipant.online()\n- # LegacyParticipant.away()\n- # LegacyParticipant.extended_away\n- ()\n- # LegacyParticipant.busy()\n- # LegacyParticipant.offline()\n- # LegacyParticipant.invite_to()\n- # LegacyParticipant.active()\n- # LegacyParticipant.composing()\n- # LegacyParticipant.paused()\n- # LegacyParticipant.inactive()\n- # LegacyParticipant.gone()\n- # LegacyParticipant.ack()\n- # LegacyParticipant.received()\n- # LegacyParticipant.displayed()\n- # LegacyParticipant.send_text()\n- # LegacyParticipant.correct()\n- # LegacyParticipant.react()\n- # LegacyParticipant.retract()\n- # LegacyParticipant.send_file()\n # LegacyMUC\n- # LegacyMUC.avatar_id\n- # LegacyMUC.avatar\n # LegacyMUC.STABLE_ARCHIVE\n # LegacyMUC.KEEP_BACKFILLED_PARTICIPANTS\n # LegacyMUC.update_info()\n # LegacyMUC.backfill()\n # LegacyMUC.fill_participants()\n # LegacyMUC.get_user_participant\n ()\n@@ -310,16 +288,14 @@\n # LegacyMUC.remove_participant()\n # LegacyMUC.kick_resource()\n # LegacyMUC.add_to_bookmarks()\n # LegacyMUC.on_avatar()\n # LegacyMUC.on_set_affiliation()\n # LegacyMUC.on_set_config()\n # LegacyMUC.on_destroy_request()\n- # LegacyMUC.set_avatar()\n- # LegacyMUC.available_emojis()\n # Package_Contents\n # Classes\n # Functions\n # Attributes\n # BaseGateway\n # BaseGateway.COMPONENT_NAME\n # BaseGateway.COMPONENT_TYPE\n"}]}, {"source1": "./usr/share/doc/python-slidge-doc/html/objects.inv", "source2": "./usr/share/doc/python-slidge-doc/html/objects.inv", "unified_diff": null, "details": [{"source1": "Sphinx inventory", "source2": "Sphinx inventory", "unified_diff": "@@ -113,14 +113,46 @@\n slidge.command.TableResult.get_xml py:method 1 dev/api/slidge/command/index.html#$ -\n slidge.command.TableResult.items py:attribute 1 dev/api/slidge/command/index.html#$ -\n slidge.command.adhoc py:module 0 dev/api/slidge/command/adhoc/index.html#module-$ -\n slidge.command.adhoc.AdhocProvider py:class 1 dev/api/slidge/command/adhoc/index.html#$ -\n slidge.command.adhoc.AdhocProvider.get_items py:method 1 dev/api/slidge/command/adhoc/index.html#$ -\n slidge.command.adhoc.AdhocProvider.register py:method 1 dev/api/slidge/command/adhoc/index.html#$ -\n slidge.command.admin py:module 0 dev/api/slidge/command/admin/index.html#module-$ -\n+slidge.command.admin.AdminCommand py:class 1 dev/api/slidge/command/admin/index.html#$ -\n+slidge.command.admin.AdminCommand.CHAT_COMMAND py:attribute 1 dev/api/slidge/command/admin/index.html#$ -\n+slidge.command.admin.AdminCommand.HELP py:attribute 1 dev/api/slidge/command/admin/index.html#$ -\n+slidge.command.admin.AdminCommand.NAME py:attribute 1 dev/api/slidge/command/admin/index.html#$ -\n+slidge.command.admin.AdminCommand.NODE py:attribute 1 dev/api/slidge/command/admin/index.html#$ -\n+slidge.command.admin.AdminCommand.raise_if_not_authorized py:method 1 dev/api/slidge/command/admin/index.html#$ -\n+slidge.command.admin.AdminCommand.run py:method 1 dev/api/slidge/command/admin/index.html#$ -\n+slidge.command.admin.ChangeLoglevel py:class 1 dev/api/slidge/command/admin/index.html#$ -\n+slidge.command.admin.ChangeLoglevel.CHAT_COMMAND py:attribute 1 dev/api/slidge/command/admin/index.html#$ -\n+slidge.command.admin.ChangeLoglevel.NODE py:attribute 1 dev/api/slidge/command/admin/index.html#$ -\n+slidge.command.admin.ChangeLoglevel.raise_if_not_authorized py:method 1 dev/api/slidge/command/admin/index.html#$ -\n+slidge.command.admin.ChangeLoglevel.run py:method 1 dev/api/slidge/command/admin/index.html#$ -\n+slidge.command.admin.DeleteUser py:class 1 dev/api/slidge/command/admin/index.html#$ -\n+slidge.command.admin.DeleteUser.CHAT_COMMAND py:attribute 1 dev/api/slidge/command/admin/index.html#$ -\n+slidge.command.admin.DeleteUser.NODE py:attribute 1 dev/api/slidge/command/admin/index.html#$ -\n+slidge.command.admin.DeleteUser.raise_if_not_authorized py:method 1 dev/api/slidge/command/admin/index.html#$ -\n+slidge.command.admin.DeleteUser.run py:method 1 dev/api/slidge/command/admin/index.html#$ -\n+slidge.command.admin.Exec py:class 1 dev/api/slidge/command/admin/index.html#$ -\n+slidge.command.admin.Exec.HELP py:attribute 1 dev/api/slidge/command/admin/index.html#$ -\n+slidge.command.admin.Exec.NAME py:attribute 1 dev/api/slidge/command/admin/index.html#$ -\n+slidge.command.admin.Exec.raise_if_not_authorized py:method 1 dev/api/slidge/command/admin/index.html#$ -\n+slidge.command.admin.Exec.run py:method 1 dev/api/slidge/command/admin/index.html#$ -\n+slidge.command.admin.ListUsers py:class 1 dev/api/slidge/command/admin/index.html#$ -\n+slidge.command.admin.ListUsers.CHAT_COMMAND py:attribute 1 dev/api/slidge/command/admin/index.html#$ -\n+slidge.command.admin.ListUsers.NODE py:attribute 1 dev/api/slidge/command/admin/index.html#$ -\n+slidge.command.admin.ListUsers.raise_if_not_authorized py:method 1 dev/api/slidge/command/admin/index.html#$ -\n+slidge.command.admin.ListUsers.run py:method 1 dev/api/slidge/command/admin/index.html#$ -\n+slidge.command.admin.SlidgeInfo py:class 1 dev/api/slidge/command/admin/index.html#$ -\n+slidge.command.admin.SlidgeInfo.CHAT_COMMAND py:attribute 1 dev/api/slidge/command/admin/index.html#$ -\n+slidge.command.admin.SlidgeInfo.NODE py:attribute 1 dev/api/slidge/command/admin/index.html#$ -\n+slidge.command.admin.SlidgeInfo.raise_if_not_authorized py:method 1 dev/api/slidge/command/admin/index.html#$ -\n+slidge.command.admin.SlidgeInfo.run py:method 1 dev/api/slidge/command/admin/index.html#$ -\n slidge.command.base py:module 0 dev/api/slidge/command/base/index.html#module-$ -\n slidge.command.base.Command py:class 1 dev/api/slidge/command/base/index.html#$ -\n slidge.command.base.Command.ACCESS py:attribute 1 dev/api/slidge/command/base/index.html#$ -\n slidge.command.base.Command.CATEGORY py:attribute 1 dev/api/slidge/command/base/index.html#$ -\n slidge.command.base.Command.CHAT_COMMAND py:attribute 1 dev/api/slidge/command/base/index.html#$ -\n slidge.command.base.Command.HELP py:attribute 1 dev/api/slidge/command/base/index.html#$ -\n slidge.command.base.Command.NAME py:attribute 1 dev/api/slidge/command/base/index.html#$ -\n@@ -454,114 +486,68 @@\n slidge.group.LegacyBookmarks.fill py:method 1 dev/api/slidge/group/index.html#$ -\n slidge.group.LegacyBookmarks.jid_username_to_legacy_id py:method 1 dev/api/slidge/group/index.html#$ -\n slidge.group.LegacyBookmarks.legacy_id_to_jid_username py:method 1 dev/api/slidge/group/index.html#$ -\n slidge.group.LegacyMUC py:class 1 dev/api/slidge/group/index.html#$ -\n slidge.group.LegacyMUC.KEEP_BACKFILLED_PARTICIPANTS py:attribute 1 dev/api/slidge/group/index.html#$ -\n slidge.group.LegacyMUC.STABLE_ARCHIVE py:attribute 1 dev/api/slidge/group/index.html#$ -\n slidge.group.LegacyMUC.add_to_bookmarks py:method 1 dev/api/slidge/group/index.html#$ -\n-slidge.group.LegacyMUC.available_emojis py:method 1 dev/api/slidge/group/index.html#$ -\n-slidge.group.LegacyMUC.avatar py:property 1 dev/api/slidge/group/index.html#$ -\n-slidge.group.LegacyMUC.avatar_id py:property 1 dev/api/slidge/group/index.html#$ -\n slidge.group.LegacyMUC.backfill py:method 1 dev/api/slidge/group/index.html#$ -\n slidge.group.LegacyMUC.fill_participants py:method 1 dev/api/slidge/group/index.html#$ -\n slidge.group.LegacyMUC.get_participant py:method 1 dev/api/slidge/group/index.html#$ -\n slidge.group.LegacyMUC.get_participant_by_contact py:method 1 dev/api/slidge/group/index.html#$ -\n slidge.group.LegacyMUC.get_participants py:method 1 dev/api/slidge/group/index.html#$ -\n slidge.group.LegacyMUC.get_system_participant py:method 1 dev/api/slidge/group/index.html#$ -\n slidge.group.LegacyMUC.get_user_participant py:method 1 dev/api/slidge/group/index.html#$ -\n slidge.group.LegacyMUC.kick_resource py:method 1 dev/api/slidge/group/index.html#$ -\n slidge.group.LegacyMUC.on_avatar py:method 1 dev/api/slidge/group/index.html#$ -\n slidge.group.LegacyMUC.on_destroy_request py:method 1 dev/api/slidge/group/index.html#$ -\n slidge.group.LegacyMUC.on_set_affiliation py:method 1 dev/api/slidge/group/index.html#$ -\n slidge.group.LegacyMUC.on_set_config py:method 1 dev/api/slidge/group/index.html#$ -\n slidge.group.LegacyMUC.remove_participant py:method 1 dev/api/slidge/group/index.html#$ -\n-slidge.group.LegacyMUC.set_avatar py:method 1 dev/api/slidge/group/index.html#$ -\n slidge.group.LegacyMUC.update_info py:method 1 dev/api/slidge/group/index.html#$ -\n slidge.group.LegacyParticipant py:class 1 dev/api/slidge/group/index.html#$ -\n-slidge.group.LegacyParticipant.ack py:method 1 dev/api/slidge/group/index.html#$ -\n-slidge.group.LegacyParticipant.active py:method 1 dev/api/slidge/group/index.html#$ -\n-slidge.group.LegacyParticipant.away py:method 1 dev/api/slidge/group/index.html#$ -\n slidge.group.LegacyParticipant.ban py:method 1 dev/api/slidge/group/index.html#$ -\n-slidge.group.LegacyParticipant.busy py:method 1 dev/api/slidge/group/index.html#$ -\n-slidge.group.LegacyParticipant.composing py:method 1 dev/api/slidge/group/index.html#$ -\n-slidge.group.LegacyParticipant.correct py:method 1 dev/api/slidge/group/index.html#$ -\n-slidge.group.LegacyParticipant.displayed py:method 1 dev/api/slidge/group/index.html#$ -\n-slidge.group.LegacyParticipant.extended_away py:method 1 dev/api/slidge/group/index.html#$ -\n-slidge.group.LegacyParticipant.gone py:method 1 dev/api/slidge/group/index.html#$ -\n-slidge.group.LegacyParticipant.inactive py:method 1 dev/api/slidge/group/index.html#$ -\n-slidge.group.LegacyParticipant.invite_to py:method 1 dev/api/slidge/group/index.html#$ -\n slidge.group.LegacyParticipant.kick py:method 1 dev/api/slidge/group/index.html#$ -\n slidge.group.LegacyParticipant.leave py:method 1 dev/api/slidge/group/index.html#$ -\n-slidge.group.LegacyParticipant.offline py:method 1 dev/api/slidge/group/index.html#$ -\n-slidge.group.LegacyParticipant.online py:method 1 dev/api/slidge/group/index.html#$ -\n-slidge.group.LegacyParticipant.paused py:method 1 dev/api/slidge/group/index.html#$ -\n-slidge.group.LegacyParticipant.react py:method 1 dev/api/slidge/group/index.html#$ -\n-slidge.group.LegacyParticipant.received py:method 1 dev/api/slidge/group/index.html#$ -\n-slidge.group.LegacyParticipant.retract py:method 1 dev/api/slidge/group/index.html#$ -\n-slidge.group.LegacyParticipant.send_file py:method 1 dev/api/slidge/group/index.html#$ -\n slidge.group.LegacyParticipant.send_initial_presence py:method 1 dev/api/slidge/group/index.html#$ -\n-slidge.group.LegacyParticipant.send_text py:method 1 dev/api/slidge/group/index.html#$ -\n slidge.group.MucType py:class 1 dev/api/slidge/group/index.html#$ -\n slidge.group.MucType.CHANNEL py:attribute 1 dev/api/slidge/group/index.html#$ -\n slidge.group.MucType.CHANNEL_NON_ANONYMOUS py:attribute 1 dev/api/slidge/group/index.html#$ -\n slidge.group.MucType.GROUP py:attribute 1 dev/api/slidge/group/index.html#$ -\n slidge.group.archive py:module 0 dev/api/slidge/group/archive/index.html#module-$ -\n slidge.group.archive.archivable py:function 1 dev/api/slidge/group/archive/index.html#$ -\n slidge.group.bookmarks py:module 0 dev/api/slidge/group/bookmarks/index.html#module-$ -\n slidge.group.bookmarks.LegacyBookmarks py:class 1 dev/api/slidge/group/bookmarks/index.html#$ -\n slidge.group.bookmarks.LegacyBookmarks.fill py:method 1 dev/api/slidge/group/bookmarks/index.html#$ -\n slidge.group.bookmarks.LegacyBookmarks.jid_username_to_legacy_id py:method 1 dev/api/slidge/group/bookmarks/index.html#$ -\n slidge.group.bookmarks.LegacyBookmarks.legacy_id_to_jid_username py:method 1 dev/api/slidge/group/bookmarks/index.html#$ -\n slidge.group.participant py:module 0 dev/api/slidge/group/participant/index.html#module-$ -\n slidge.group.participant.LegacyParticipant py:class 1 dev/api/slidge/group/participant/index.html#$ -\n-slidge.group.participant.LegacyParticipant.ack py:method 1 dev/api/slidge/group/participant/index.html#$ -\n-slidge.group.participant.LegacyParticipant.active py:method 1 dev/api/slidge/group/participant/index.html#$ -\n-slidge.group.participant.LegacyParticipant.away py:method 1 dev/api/slidge/group/participant/index.html#$ -\n slidge.group.participant.LegacyParticipant.ban py:method 1 dev/api/slidge/group/participant/index.html#$ -\n-slidge.group.participant.LegacyParticipant.busy py:method 1 dev/api/slidge/group/participant/index.html#$ -\n-slidge.group.participant.LegacyParticipant.composing py:method 1 dev/api/slidge/group/participant/index.html#$ -\n-slidge.group.participant.LegacyParticipant.correct py:method 1 dev/api/slidge/group/participant/index.html#$ -\n-slidge.group.participant.LegacyParticipant.displayed py:method 1 dev/api/slidge/group/participant/index.html#$ -\n-slidge.group.participant.LegacyParticipant.extended_away py:method 1 dev/api/slidge/group/participant/index.html#$ -\n-slidge.group.participant.LegacyParticipant.gone py:method 1 dev/api/slidge/group/participant/index.html#$ -\n-slidge.group.participant.LegacyParticipant.inactive py:method 1 dev/api/slidge/group/participant/index.html#$ -\n-slidge.group.participant.LegacyParticipant.invite_to py:method 1 dev/api/slidge/group/participant/index.html#$ -\n slidge.group.participant.LegacyParticipant.kick py:method 1 dev/api/slidge/group/participant/index.html#$ -\n slidge.group.participant.LegacyParticipant.leave py:method 1 dev/api/slidge/group/participant/index.html#$ -\n-slidge.group.participant.LegacyParticipant.offline py:method 1 dev/api/slidge/group/participant/index.html#$ -\n-slidge.group.participant.LegacyParticipant.online py:method 1 dev/api/slidge/group/participant/index.html#$ -\n-slidge.group.participant.LegacyParticipant.paused py:method 1 dev/api/slidge/group/participant/index.html#$ -\n-slidge.group.participant.LegacyParticipant.react py:method 1 dev/api/slidge/group/participant/index.html#$ -\n-slidge.group.participant.LegacyParticipant.received py:method 1 dev/api/slidge/group/participant/index.html#$ -\n-slidge.group.participant.LegacyParticipant.retract py:method 1 dev/api/slidge/group/participant/index.html#$ -\n-slidge.group.participant.LegacyParticipant.send_file py:method 1 dev/api/slidge/group/participant/index.html#$ -\n slidge.group.participant.LegacyParticipant.send_initial_presence py:method 1 dev/api/slidge/group/participant/index.html#$ -\n-slidge.group.participant.LegacyParticipant.send_text py:method 1 dev/api/slidge/group/participant/index.html#$ -\n slidge.group.room py:module 0 dev/api/slidge/group/room/index.html#module-$ -\n slidge.group.room.LegacyMUC py:class 1 dev/api/slidge/group/room/index.html#$ -\n slidge.group.room.LegacyMUC.KEEP_BACKFILLED_PARTICIPANTS py:attribute 1 dev/api/slidge/group/room/index.html#$ -\n slidge.group.room.LegacyMUC.STABLE_ARCHIVE py:attribute 1 dev/api/slidge/group/room/index.html#$ -\n slidge.group.room.LegacyMUC.add_to_bookmarks py:method 1 dev/api/slidge/group/room/index.html#$ -\n-slidge.group.room.LegacyMUC.available_emojis py:method 1 dev/api/slidge/group/room/index.html#$ -\n-slidge.group.room.LegacyMUC.avatar py:property 1 dev/api/slidge/group/room/index.html#$ -\n-slidge.group.room.LegacyMUC.avatar_id py:property 1 dev/api/slidge/group/room/index.html#$ -\n slidge.group.room.LegacyMUC.backfill py:method 1 dev/api/slidge/group/room/index.html#$ -\n slidge.group.room.LegacyMUC.fill_participants py:method 1 dev/api/slidge/group/room/index.html#$ -\n slidge.group.room.LegacyMUC.get_participant py:method 1 dev/api/slidge/group/room/index.html#$ -\n slidge.group.room.LegacyMUC.get_participant_by_contact py:method 1 dev/api/slidge/group/room/index.html#$ -\n slidge.group.room.LegacyMUC.get_participants py:method 1 dev/api/slidge/group/room/index.html#$ -\n slidge.group.room.LegacyMUC.get_system_participant py:method 1 dev/api/slidge/group/room/index.html#$ -\n slidge.group.room.LegacyMUC.get_user_participant py:method 1 dev/api/slidge/group/room/index.html#$ -\n slidge.group.room.LegacyMUC.kick_resource py:method 1 dev/api/slidge/group/room/index.html#$ -\n slidge.group.room.LegacyMUC.on_avatar py:method 1 dev/api/slidge/group/room/index.html#$ -\n slidge.group.room.LegacyMUC.on_destroy_request py:method 1 dev/api/slidge/group/room/index.html#$ -\n slidge.group.room.LegacyMUC.on_set_affiliation py:method 1 dev/api/slidge/group/room/index.html#$ -\n slidge.group.room.LegacyMUC.on_set_config py:method 1 dev/api/slidge/group/room/index.html#$ -\n slidge.group.room.LegacyMUC.remove_participant py:method 1 dev/api/slidge/group/room/index.html#$ -\n-slidge.group.room.LegacyMUC.set_avatar py:method 1 dev/api/slidge/group/room/index.html#$ -\n slidge.group.room.LegacyMUC.update_info py:method 1 dev/api/slidge/group/room/index.html#$ -\n slidge.migration py:module 0 dev/api/slidge/migration/index.html#module-$ -\n slidge.slixfix py:module 0 dev/api/slidge/slixfix/index.html#module-$ -\n slidge.slixfix.link_preview py:module 0 dev/api/slidge/slixfix/link_preview/index.html#module-$ -\n slidge.slixfix.link_preview.link_preview py:module 0 dev/api/slidge/slixfix/link_preview/link_preview/index.html#module-$ -\n slidge.slixfix.link_preview.stanza py:module 0 dev/api/slidge/slixfix/link_preview/stanza/index.html#module-$ -\n slidge.slixfix.link_preview.stanza.Description py:class 1 dev/api/slidge/slixfix/link_preview/stanza/index.html#$ -\n"}]}, {"source1": "./usr/share/doc/python-slidge-doc/html/searchindex.js", "source2": "./usr/share/doc/python-slidge-doc/html/searchindex.js", "unified_diff": null, "details": [{"source1": "js-beautify {}", "source2": "js-beautify {}", "unified_diff": "@@ -1,157 +1,157 @@\n Search.setIndex({\n \"docnames\": [\"admin/attachments\", \"admin/component\", \"admin/config/index\", \"admin/daemon\", \"admin/examples/index\", \"admin/index\", \"admin/install\", \"admin/note\", \"admin/privilege\", \"dev/api/slidge/__main__/index\", \"dev/api/slidge/command/adhoc/index\", \"dev/api/slidge/command/admin/index\", \"dev/api/slidge/command/base/index\", \"dev/api/slidge/command/categories/index\", \"dev/api/slidge/command/chat_command/index\", \"dev/api/slidge/command/index\", \"dev/api/slidge/command/register/index\", \"dev/api/slidge/command/user/index\", \"dev/api/slidge/contact/contact/index\", \"dev/api/slidge/contact/index\", \"dev/api/slidge/contact/roster/index\", \"dev/api/slidge/core/cache/index\", \"dev/api/slidge/core/config/index\", \"dev/api/slidge/core/gateway/base/index\", \"dev/api/slidge/core/gateway/caps/index\", \"dev/api/slidge/core/gateway/delivery_receipt/index\", \"dev/api/slidge/core/gateway/disco/index\", \"dev/api/slidge/core/gateway/index\", \"dev/api/slidge/core/gateway/mam/index\", \"dev/api/slidge/core/gateway/muc_admin/index\", \"dev/api/slidge/core/gateway/ping/index\", \"dev/api/slidge/core/gateway/presence/index\", \"dev/api/slidge/core/gateway/registration/index\", \"dev/api/slidge/core/gateway/search/index\", \"dev/api/slidge/core/gateway/session_dispatcher/index\", \"dev/api/slidge/core/gateway/vcard_temp/index\", \"dev/api/slidge/core/index\", \"dev/api/slidge/core/mixins/attachment/index\", \"dev/api/slidge/core/mixins/avatar/index\", \"dev/api/slidge/core/mixins/base/index\", \"dev/api/slidge/core/mixins/disco/index\", \"dev/api/slidge/core/mixins/index\", \"dev/api/slidge/core/mixins/lock/index\", \"dev/api/slidge/core/mixins/message/index\", \"dev/api/slidge/core/mixins/message_maker/index\", \"dev/api/slidge/core/mixins/presence/index\", \"dev/api/slidge/core/mixins/recipient/index\", \"dev/api/slidge/core/pubsub/index\", \"dev/api/slidge/core/session/index\", \"dev/api/slidge/group/archive/index\", \"dev/api/slidge/group/bookmarks/index\", \"dev/api/slidge/group/index\", \"dev/api/slidge/group/participant/index\", \"dev/api/slidge/group/room/index\", \"dev/api/slidge/index\", \"dev/api/slidge/migration/index\", \"dev/api/slidge/slixfix/index\", \"dev/api/slidge/slixfix/link_preview/index\", \"dev/api/slidge/slixfix/link_preview/link_preview/index\", \"dev/api/slidge/slixfix/link_preview/stanza/index\", \"dev/api/slidge/slixfix/roster/index\", \"dev/api/slidge/util/archive_msg/index\", \"dev/api/slidge/util/conf/index\", \"dev/api/slidge/util/db/index\", \"dev/api/slidge/util/index\", \"dev/api/slidge/util/sql/index\", \"dev/api/slidge/util/test/index\", \"dev/api/slidge/util/types/index\", \"dev/api/slidge/util/util/index\", \"dev/api/superduper/contact/index\", \"dev/api/superduper/gateway/index\", \"dev/api/superduper/group/index\", \"dev/api/superduper/index\", \"dev/api/superduper/legacy_client/index\", \"dev/api/superduper/session/index\", \"dev/api/superduper/util/index\", \"dev/contributing\", \"dev/design\", \"dev/howto\", \"dev/index\", \"dev/tutorial\", \"glossary\", \"index\", \"user/commands\", \"user/contacts\", \"user/index\", \"user/low_profile\", \"user/note\", \"user/register\"],\n \"filenames\": [\"admin/attachments.rst\", \"admin/component.rst\", \"admin/config/index.rst\", \"admin/daemon.rst\", \"admin/examples/index.rst\", \"admin/index.rst\", \"admin/install.rst\", \"admin/note.rst\", \"admin/privilege.rst\", \"dev/api/slidge/__main__/index.rst\", \"dev/api/slidge/command/adhoc/index.rst\", \"dev/api/slidge/command/admin/index.rst\", \"dev/api/slidge/command/base/index.rst\", \"dev/api/slidge/command/categories/index.rst\", \"dev/api/slidge/command/chat_command/index.rst\", \"dev/api/slidge/command/index.rst\", \"dev/api/slidge/command/register/index.rst\", \"dev/api/slidge/command/user/index.rst\", \"dev/api/slidge/contact/contact/index.rst\", \"dev/api/slidge/contact/index.rst\", \"dev/api/slidge/contact/roster/index.rst\", \"dev/api/slidge/core/cache/index.rst\", \"dev/api/slidge/core/config/index.rst\", \"dev/api/slidge/core/gateway/base/index.rst\", \"dev/api/slidge/core/gateway/caps/index.rst\", \"dev/api/slidge/core/gateway/delivery_receipt/index.rst\", \"dev/api/slidge/core/gateway/disco/index.rst\", \"dev/api/slidge/core/gateway/index.rst\", \"dev/api/slidge/core/gateway/mam/index.rst\", \"dev/api/slidge/core/gateway/muc_admin/index.rst\", \"dev/api/slidge/core/gateway/ping/index.rst\", \"dev/api/slidge/core/gateway/presence/index.rst\", \"dev/api/slidge/core/gateway/registration/index.rst\", \"dev/api/slidge/core/gateway/search/index.rst\", \"dev/api/slidge/core/gateway/session_dispatcher/index.rst\", \"dev/api/slidge/core/gateway/vcard_temp/index.rst\", \"dev/api/slidge/core/index.rst\", \"dev/api/slidge/core/mixins/attachment/index.rst\", \"dev/api/slidge/core/mixins/avatar/index.rst\", \"dev/api/slidge/core/mixins/base/index.rst\", \"dev/api/slidge/core/mixins/disco/index.rst\", \"dev/api/slidge/core/mixins/index.rst\", \"dev/api/slidge/core/mixins/lock/index.rst\", \"dev/api/slidge/core/mixins/message/index.rst\", \"dev/api/slidge/core/mixins/message_maker/index.rst\", \"dev/api/slidge/core/mixins/presence/index.rst\", \"dev/api/slidge/core/mixins/recipient/index.rst\", \"dev/api/slidge/core/pubsub/index.rst\", \"dev/api/slidge/core/session/index.rst\", \"dev/api/slidge/group/archive/index.rst\", \"dev/api/slidge/group/bookmarks/index.rst\", \"dev/api/slidge/group/index.rst\", \"dev/api/slidge/group/participant/index.rst\", \"dev/api/slidge/group/room/index.rst\", \"dev/api/slidge/index.rst\", \"dev/api/slidge/migration/index.rst\", \"dev/api/slidge/slixfix/index.rst\", \"dev/api/slidge/slixfix/link_preview/index.rst\", \"dev/api/slidge/slixfix/link_preview/link_preview/index.rst\", \"dev/api/slidge/slixfix/link_preview/stanza/index.rst\", \"dev/api/slidge/slixfix/roster/index.rst\", \"dev/api/slidge/util/archive_msg/index.rst\", \"dev/api/slidge/util/conf/index.rst\", \"dev/api/slidge/util/db/index.rst\", \"dev/api/slidge/util/index.rst\", \"dev/api/slidge/util/sql/index.rst\", \"dev/api/slidge/util/test/index.rst\", \"dev/api/slidge/util/types/index.rst\", \"dev/api/slidge/util/util/index.rst\", \"dev/api/superduper/contact/index.rst\", \"dev/api/superduper/gateway/index.rst\", \"dev/api/superduper/group/index.rst\", \"dev/api/superduper/index.rst\", \"dev/api/superduper/legacy_client/index.rst\", \"dev/api/superduper/session/index.rst\", \"dev/api/superduper/util/index.rst\", \"dev/contributing.rst\", \"dev/design.rst\", \"dev/howto.rst\", \"dev/index.rst\", \"dev/tutorial.rst\", \"glossary.rst\", \"index.rst\", \"user/commands.rst\", \"user/contacts.rst\", \"user/index.rst\", \"user/low_profile.rst\", \"user/note.rst\", \"user/register.rst\"],\n \"titles\": [\"Attachments\", \"XMPP server config\", \"Configuration\", \"Running as a daemon\", \"Example XMPP server configurations\", \"For admins\", \"Installation\", \"<no title>\", \"Privileges\", \"<code class=\\\"xref py py-mod docutils literal notranslate\\\"><span class=\\\"pre\\\">slidge.__main__</span></code>\", \"<code class=\\\"xref py py-mod docutils literal notranslate\\\"><span class=\\\"pre\\\">slidge.command.adhoc</span></code>\", \"<code class=\\\"xref py py-mod docutils literal notranslate\\\"><span class=\\\"pre\\\">slidge.command.admin</span></code>\", \"<code class=\\\"xref py py-mod docutils literal notranslate\\\"><span class=\\\"pre\\\">slidge.command.base</span></code>\", \"<code class=\\\"xref py py-mod docutils literal notranslate\\\"><span class=\\\"pre\\\">slidge.command.categories</span></code>\", \"<code class=\\\"xref py py-mod docutils literal notranslate\\\"><span class=\\\"pre\\\">slidge.command.chat_command</span></code>\", \"<code class=\\\"xref py py-mod docutils literal notranslate\\\"><span class=\\\"pre\\\">slidge.command</span></code>\", \"<code class=\\\"xref py py-mod docutils literal notranslate\\\"><span class=\\\"pre\\\">slidge.command.register</span></code>\", \"<code class=\\\"xref py py-mod docutils literal notranslate\\\"><span class=\\\"pre\\\">slidge.command.user</span></code>\", \"<code class=\\\"xref py py-mod docutils literal notranslate\\\"><span class=\\\"pre\\\">slidge.contact.contact</span></code>\", \"<code class=\\\"xref py py-mod docutils literal notranslate\\\"><span class=\\\"pre\\\">slidge.contact</span></code>\", \"<code class=\\\"xref py py-mod docutils literal notranslate\\\"><span class=\\\"pre\\\">slidge.contact.roster</span></code>\", \"<code class=\\\"xref py py-mod docutils literal notranslate\\\"><span class=\\\"pre\\\">slidge.core.cache</span></code>\", \"<code class=\\\"xref py py-mod docutils literal notranslate\\\"><span class=\\\"pre\\\">slidge.core.config</span></code>\", \"<code class=\\\"xref py py-mod docutils literal notranslate\\\"><span class=\\\"pre\\\">slidge.core.gateway.base</span></code>\", \"<code class=\\\"xref py py-mod docutils literal notranslate\\\"><span class=\\\"pre\\\">slidge.core.gateway.caps</span></code>\", \"<code class=\\\"xref py py-mod docutils literal notranslate\\\"><span class=\\\"pre\\\">slidge.core.gateway.delivery_receipt</span></code>\", \"<code class=\\\"xref py py-mod docutils literal notranslate\\\"><span class=\\\"pre\\\">slidge.core.gateway.disco</span></code>\", \"<code class=\\\"xref py py-mod docutils literal notranslate\\\"><span class=\\\"pre\\\">slidge.core.gateway</span></code>\", \"<code class=\\\"xref py py-mod docutils literal notranslate\\\"><span class=\\\"pre\\\">slidge.core.gateway.mam</span></code>\", \"<code class=\\\"xref py py-mod docutils literal notranslate\\\"><span class=\\\"pre\\\">slidge.core.gateway.muc_admin</span></code>\", \"<code class=\\\"xref py py-mod docutils literal notranslate\\\"><span class=\\\"pre\\\">slidge.core.gateway.ping</span></code>\", \"<code class=\\\"xref py py-mod docutils literal notranslate\\\"><span class=\\\"pre\\\">slidge.core.gateway.presence</span></code>\", \"<code class=\\\"xref py py-mod docutils literal notranslate\\\"><span class=\\\"pre\\\">slidge.core.gateway.registration</span></code>\", \"<code class=\\\"xref py py-mod docutils literal notranslate\\\"><span class=\\\"pre\\\">slidge.core.gateway.search</span></code>\", \"<code class=\\\"xref py py-mod docutils literal notranslate\\\"><span class=\\\"pre\\\">slidge.core.gateway.session_dispatcher</span></code>\", \"<code class=\\\"xref py py-mod docutils literal notranslate\\\"><span class=\\\"pre\\\">slidge.core.gateway.vcard_temp</span></code>\", \"<code class=\\\"xref py py-mod docutils literal notranslate\\\"><span class=\\\"pre\\\">slidge.core</span></code>\", \"<code class=\\\"xref py py-mod docutils literal notranslate\\\"><span class=\\\"pre\\\">slidge.core.mixins.attachment</span></code>\", \"<code class=\\\"xref py py-mod docutils literal notranslate\\\"><span class=\\\"pre\\\">slidge.core.mixins.avatar</span></code>\", \"<code class=\\\"xref py py-mod docutils literal notranslate\\\"><span class=\\\"pre\\\">slidge.core.mixins.base</span></code>\", \"<code class=\\\"xref py py-mod docutils literal notranslate\\\"><span class=\\\"pre\\\">slidge.core.mixins.disco</span></code>\", \"<code class=\\\"xref py py-mod docutils literal notranslate\\\"><span class=\\\"pre\\\">slidge.core.mixins</span></code>\", \"<code class=\\\"xref py py-mod docutils literal notranslate\\\"><span class=\\\"pre\\\">slidge.core.mixins.lock</span></code>\", \"<code class=\\\"xref py py-mod docutils literal notranslate\\\"><span class=\\\"pre\\\">slidge.core.mixins.message</span></code>\", \"<code class=\\\"xref py py-mod docutils literal notranslate\\\"><span class=\\\"pre\\\">slidge.core.mixins.message_maker</span></code>\", \"<code class=\\\"xref py py-mod docutils literal notranslate\\\"><span class=\\\"pre\\\">slidge.core.mixins.presence</span></code>\", \"<code class=\\\"xref py py-mod docutils literal notranslate\\\"><span class=\\\"pre\\\">slidge.core.mixins.recipient</span></code>\", \"<code class=\\\"xref py py-mod docutils literal notranslate\\\"><span class=\\\"pre\\\">slidge.core.pubsub</span></code>\", \"<code class=\\\"xref py py-mod docutils literal notranslate\\\"><span class=\\\"pre\\\">slidge.core.session</span></code>\", \"<code class=\\\"xref py py-mod docutils literal notranslate\\\"><span class=\\\"pre\\\">slidge.group.archive</span></code>\", \"<code class=\\\"xref py py-mod docutils literal notranslate\\\"><span class=\\\"pre\\\">slidge.group.bookmarks</span></code>\", \"<code class=\\\"xref py py-mod docutils literal notranslate\\\"><span class=\\\"pre\\\">slidge.group</span></code>\", \"<code class=\\\"xref py py-mod docutils literal notranslate\\\"><span class=\\\"pre\\\">slidge.group.participant</span></code>\", \"<code class=\\\"xref py py-mod docutils literal notranslate\\\"><span class=\\\"pre\\\">slidge.group.room</span></code>\", \"<code class=\\\"xref py py-mod docutils literal notranslate\\\"><span class=\\\"pre\\\">slidge</span></code>\", \"<code class=\\\"xref py py-mod docutils literal notranslate\\\"><span class=\\\"pre\\\">slidge.migration</span></code>\", \"<code class=\\\"xref py py-mod docutils literal notranslate\\\"><span class=\\\"pre\\\">slidge.slixfix</span></code>\", \"<code class=\\\"xref py py-mod docutils literal notranslate\\\"><span class=\\\"pre\\\">slidge.slixfix.link_preview</span></code>\", \"<code class=\\\"xref py py-mod docutils literal notranslate\\\"><span class=\\\"pre\\\">slidge.slixfix.link_preview.link_preview</span></code>\", \"<code class=\\\"xref py py-mod docutils literal notranslate\\\"><span class=\\\"pre\\\">slidge.slixfix.link_preview.stanza</span></code>\", \"<code class=\\\"xref py py-mod docutils literal notranslate\\\"><span class=\\\"pre\\\">slidge.slixfix.roster</span></code>\", \"<code class=\\\"xref py py-mod docutils literal notranslate\\\"><span class=\\\"pre\\\">slidge.util.archive_msg</span></code>\", \"<code class=\\\"xref py py-mod docutils literal notranslate\\\"><span class=\\\"pre\\\">slidge.util.conf</span></code>\", \"<code class=\\\"xref py py-mod docutils literal notranslate\\\"><span class=\\\"pre\\\">slidge.util.db</span></code>\", \"<code class=\\\"xref py py-mod docutils literal notranslate\\\"><span class=\\\"pre\\\">slidge.util</span></code>\", \"<code class=\\\"xref py py-mod docutils literal notranslate\\\"><span class=\\\"pre\\\">slidge.util.sql</span></code>\", \"<code class=\\\"xref py py-mod docutils literal notranslate\\\"><span class=\\\"pre\\\">slidge.util.test</span></code>\", \"<code class=\\\"xref py py-mod docutils literal notranslate\\\"><span class=\\\"pre\\\">slidge.util.types</span></code>\", \"<code class=\\\"xref py py-mod docutils literal notranslate\\\"><span class=\\\"pre\\\">slidge.util.util</span></code>\", \"<code class=\\\"xref py py-mod docutils literal notranslate\\\"><span class=\\\"pre\\\">superduper.contact</span></code>\", \"<code class=\\\"xref py py-mod docutils literal notranslate\\\"><span class=\\\"pre\\\">superduper.gateway</span></code>\", \"<code class=\\\"xref py py-mod docutils literal notranslate\\\"><span class=\\\"pre\\\">superduper.group</span></code>\", \"<code class=\\\"xref py py-mod docutils literal notranslate\\\"><span class=\\\"pre\\\">superduper</span></code>\", \"<code class=\\\"xref py py-mod docutils literal notranslate\\\"><span class=\\\"pre\\\">superduper.legacy_client</span></code>\", \"<code class=\\\"xref py py-mod docutils literal notranslate\\\"><span class=\\\"pre\\\">superduper.session</span></code>\", \"<code class=\\\"xref py py-mod docutils literal notranslate\\\"><span class=\\\"pre\\\">superduper.util</span></code>\", \"Contributing\", \"Slidge Design\", \"How to\\u2026?\", \"For devs\", \"Tutorial: minimal legacy module from scratch\", \"Glossary\", \"Slidge\", \"Commands\", \"Finding legacy contacts\", \"For users\", \"Keeping a low profile\", \"<no title>\", \"Registration\"],\n \"terms\": {\n \"In\": [0, 3, 8, 12, 18, 19, 51, 53, 63, 67, 69, 71, 81, 88],\n \"order\": [0, 12, 18, 19, 39, 64, 66, 67, 68, 69],\n- \"receiv\": [0, 12, 15, 16, 18, 19, 23, 27, 48, 51, 52, 53, 54, 66, 68, 69, 70, 71, 74, 80, 82, 85],\n- \"via\": [0, 1, 3, 6, 8, 9, 12, 15, 17, 19, 20, 23, 27, 39, 48, 54, 64, 67, 68, 69, 70, 74, 80, 81, 83, 88],\n+ \"receiv\": [0, 12, 15, 16, 18, 19, 23, 27, 48, 51, 53, 54, 66, 68, 69, 70, 71, 74, 80, 82, 85],\n+ \"via\": [0, 1, 3, 6, 8, 9, 11, 12, 15, 17, 19, 20, 23, 27, 39, 48, 54, 64, 67, 68, 69, 70, 74, 80, 81, 83, 88],\n \"slidg\": [0, 1, 2, 3, 4, 5, 6, 7, 8, 69, 70, 71, 72, 74, 76, 79, 80, 81, 83, 84, 85, 86, 87, 88],\n- \"you\": [0, 1, 2, 3, 4, 6, 8, 18, 19, 20, 23, 27, 38, 39, 41, 48, 50, 51, 52, 53, 54, 64, 66, 68, 69, 70, 71, 74, 76, 77, 80, 83, 84, 85, 86, 88],\n+ \"you\": [0, 1, 2, 3, 4, 6, 8, 18, 19, 20, 23, 27, 38, 39, 41, 48, 50, 51, 53, 54, 64, 66, 68, 69, 70, 71, 74, 76, 77, 80, 83, 84, 85, 86, 88],\n \"have\": [0, 3, 18, 19, 20, 23, 27, 38, 41, 51, 53, 54, 60, 66, 67, 68, 69, 71, 76, 77, 80, 84, 86, 88],\n \"two\": [0, 8, 60, 66, 67],\n- \"option\": [0, 1, 2, 3, 4, 5, 7, 10, 12, 15, 16, 17, 18, 19, 23, 27, 38, 41, 48, 51, 52, 53, 54, 59, 63, 65, 66, 67, 69, 70, 71, 74],\n+ \"option\": [0, 1, 2, 3, 4, 5, 7, 10, 11, 12, 15, 16, 17, 18, 19, 23, 27, 38, 41, 48, 51, 52, 53, 54, 59, 63, 65, 66, 67, 69, 70, 71, 74],\n \"serv\": [0, 80],\n \"static\": [0, 48, 54, 74],\n \"from\": [0, 3, 4, 8, 12, 18, 19, 23, 27, 48, 51, 52, 53, 54, 59, 60, 63, 65, 66, 67, 68, 69, 70, 71, 74, 79, 81, 82, 83, 86],\n \"folder\": 0,\n- \"an\": [0, 1, 2, 4, 5, 6, 9, 12, 15, 16, 17, 18, 19, 20, 23, 27, 38, 39, 41, 48, 50, 51, 52, 53, 54, 56, 59, 60, 63, 64, 66, 67, 68, 69, 70, 71, 72, 74, 76, 77, 80, 81, 85, 88],\n- \"server\": [0, 3, 5, 8, 18, 19, 23, 27, 51, 52, 53, 54, 66, 69, 70, 71, 76, 80, 81, 82, 85, 86, 88],\n- \"eg\": [0, 1, 2, 4, 9, 12, 15, 16, 17, 18, 19, 23, 27, 48, 51, 52, 53, 54, 67, 69, 70, 71, 74, 81],\n+ \"an\": [0, 1, 2, 4, 5, 6, 9, 11, 12, 15, 16, 17, 18, 19, 20, 23, 27, 38, 39, 41, 48, 50, 51, 53, 54, 56, 59, 60, 63, 64, 66, 67, 68, 69, 70, 71, 72, 74, 76, 77, 80, 81, 85, 88],\n+ \"server\": [0, 3, 5, 8, 18, 19, 23, 27, 51, 53, 54, 66, 69, 70, 71, 76, 80, 81, 82, 85, 86, 88],\n+ \"eg\": [0, 1, 2, 4, 9, 11, 12, 15, 16, 17, 18, 19, 23, 27, 48, 51, 53, 54, 67, 69, 70, 71, 74, 81],\n \"etc\": [0, 1, 2, 3, 8, 9, 51, 53, 65, 71, 76, 85],\n- \"xep\": [0, 4, 5, 8, 12, 15, 16, 18, 19, 20, 23, 25, 27, 48, 50, 51, 52, 53, 54, 63, 67, 69, 70, 71, 74, 76, 81, 83, 84, 88],\n+ \"xep\": [0, 4, 5, 8, 12, 15, 16, 18, 19, 20, 23, 25, 27, 48, 50, 51, 53, 54, 63, 67, 69, 70, 71, 74, 76, 81, 83, 84, 88],\n \"0363\": [0, 4, 18, 19, 48, 54, 69, 74],\n \"At\": [0, 48, 54, 66, 67, 74, 77],\n \"minimum\": [0, 50, 51, 67, 71, 77],\n \"need\": [0, 3, 4, 8, 10, 18, 19, 20, 23, 27, 48, 51, 53, 54, 66, 69, 70, 71, 74, 77, 83],\n \"set\": [0, 1, 3, 4, 8, 9, 12, 16, 18, 19, 20, 23, 27, 34, 38, 41, 48, 51, 52, 53, 54, 59, 60, 63, 66, 67, 68, 69, 70, 71, 74, 76, 86, 88],\n \"up\": [0, 1, 3, 4, 8, 18, 19, 23, 27, 39, 54, 60, 64, 66, 68, 69, 76, 86],\n- \"path\": [0, 2, 4, 9, 18, 19, 23, 27, 38, 41, 51, 52, 53, 54, 63, 67, 69, 70, 71],\n- \"local\": [0, 1, 4, 18, 19, 38, 41, 51, 53, 68, 69, 71, 76, 79, 81, 82, 84],\n+ \"path\": [0, 2, 4, 9, 18, 19, 23, 27, 38, 41, 54, 63, 67, 69, 70, 71],\n+ \"local\": [0, 1, 4, 18, 19, 38, 41, 68, 69, 71, 76, 79, 81, 82, 84],\n \"directori\": [0, 3],\n- \"url\": [0, 18, 19, 23, 27, 38, 41, 48, 51, 52, 53, 54, 59, 67, 69, 70, 71, 74],\n+ \"url\": [0, 18, 19, 23, 27, 38, 41, 48, 54, 59, 67, 69, 70, 71, 74],\n \"prefix\": [0, 9, 67],\n- \"point\": [0, 1, 3, 12, 15, 17, 67],\n+ \"point\": [0, 1, 3, 11, 12, 15, 17, 67],\n \"see\": [0, 1, 4, 6, 12, 15, 16, 23, 27, 48, 54, 63, 68, 74, 80, 81, 85, 88],\n \"configur\": [0, 1, 5, 9, 23, 27, 51, 53, 54, 68, 71, 82, 86],\n- \"detail\": [0, 6, 18, 19, 23, 27, 51, 52, 54, 69, 71, 81],\n- \"how\": [0, 1, 3, 6, 18, 19, 23, 27, 51, 52, 54, 68, 69, 70, 71, 77, 79, 81, 82],\n- \"make\": [0, 1, 3, 6, 8, 15, 18, 19, 23, 27, 51, 52, 53, 54, 67, 69, 70, 71, 83, 88],\n- \"sure\": [0, 3, 6, 8, 15, 18, 19, 23, 27, 51, 52, 54, 69, 70, 71, 83],\n- \"i\": [0, 1, 2, 3, 4, 6, 8, 9, 10, 12, 15, 16, 17, 18, 19, 20, 23, 25, 27, 38, 41, 48, 49, 50, 51, 52, 53, 54, 56, 59, 60, 63, 65, 66, 67, 68, 69, 70, 71, 74, 76, 77, 80, 81, 82, 83, 84, 85, 86, 88],\n+ \"detail\": [0, 6, 18, 19, 23, 27, 54, 69, 71, 81],\n+ \"how\": [0, 1, 3, 6, 18, 19, 23, 27, 54, 68, 69, 70, 71, 77, 79, 81, 82],\n+ \"make\": [0, 1, 3, 6, 8, 15, 18, 19, 23, 27, 51, 53, 54, 67, 69, 70, 71, 83, 88],\n+ \"sure\": [0, 3, 6, 8, 15, 18, 19, 23, 27, 54, 69, 70, 71, 83],\n+ \"i\": [0, 1, 2, 3, 4, 6, 8, 9, 10, 11, 12, 15, 16, 17, 18, 19, 20, 23, 25, 27, 38, 41, 48, 49, 50, 51, 52, 53, 54, 56, 59, 60, 63, 65, 66, 67, 68, 69, 70, 71, 74, 76, 77, 80, 81, 82, 83, 84, 85, 86, 88],\n \"writeabl\": 0,\n \"readabl\": [0, 48, 54, 74, 84],\n \"your\": [0, 3, 6, 8, 15, 18, 19, 23, 27, 48, 54, 69, 74, 76, 77, 83, 84, 85, 86, 88],\n \"mai\": [0, 59, 66, 67, 81, 83],\n- \"us\": [0, 1, 2, 3, 4, 5, 8, 9, 12, 15, 16, 17, 18, 19, 20, 23, 27, 38, 39, 41, 48, 51, 52, 53, 54, 59, 63, 64, 65, 66, 67, 68, 69, 70, 71, 74, 77, 79, 80, 81, 82, 83, 84, 85, 86, 88],\n- \"read\": [0, 4, 8, 18, 19, 23, 27, 48, 51, 52, 54, 68, 69, 70, 71, 74],\n+ \"us\": [0, 1, 2, 3, 4, 5, 8, 9, 11, 12, 15, 16, 17, 18, 19, 20, 23, 27, 38, 39, 41, 48, 51, 52, 53, 54, 59, 63, 64, 65, 66, 67, 68, 69, 70, 71, 74, 77, 79, 80, 81, 82, 83, 84, 85, 86, 88],\n+ \"read\": [0, 4, 8, 18, 19, 23, 27, 48, 54, 68, 69, 70, 71, 74],\n \"other\": [0, 1, 3, 4, 8, 18, 19, 23, 27, 54, 60, 63, 66, 67, 69, 80, 82, 85],\n- \"true\": [0, 2, 4, 8, 9, 18, 19, 23, 27, 38, 41, 48, 51, 52, 53, 54, 56, 59, 60, 66, 67, 68, 69, 70, 71, 74],\n- \"do\": [0, 1, 12, 15, 17, 18, 19, 23, 27, 48, 51, 52, 53, 54, 56, 67, 69, 70, 71, 74, 80],\n+ \"true\": [0, 2, 4, 8, 9, 18, 19, 23, 27, 38, 41, 48, 51, 53, 54, 56, 59, 60, 66, 67, 68, 69, 70, 71, 74],\n+ \"do\": [0, 1, 11, 12, 15, 17, 18, 19, 23, 27, 48, 51, 53, 54, 56, 67, 69, 70, 71, 74, 80],\n \"easili\": [0, 66],\n \"might\": [0, 3, 8, 19, 20, 23, 27, 54, 65, 66, 68, 69, 88],\n- \"want\": [0, 3, 8, 18, 19, 23, 27, 48, 51, 52, 53, 54, 56, 69, 70, 71, 74, 76, 77, 80, 84, 85, 88],\n- \"restrict\": [0, 18, 19, 23, 27, 48, 51, 53, 54, 69, 70, 71, 74],\n- \"which\": [0, 3, 6, 10, 16, 18, 19, 20, 23, 27, 48, 51, 52, 53, 54, 60, 66, 67, 68, 69, 70, 71, 74, 76, 77, 88],\n- \"user\": [0, 3, 8, 12, 15, 16, 18, 19, 20, 23, 27, 48, 50, 51, 52, 53, 54, 59, 60, 63, 65, 66, 69, 70, 71, 74, 76, 77, 80, 81, 82, 83, 87, 88],\n+ \"want\": [0, 3, 8, 18, 19, 23, 27, 48, 51, 53, 54, 56, 69, 70, 71, 74, 76, 77, 80, 84, 85, 88],\n+ \"restrict\": [0, 18, 19, 23, 27, 48, 54, 69, 70, 71, 74],\n+ \"which\": [0, 3, 6, 10, 16, 18, 19, 20, 23, 27, 48, 51, 53, 54, 60, 66, 67, 68, 69, 70, 71, 74, 76, 77, 88],\n+ \"user\": [0, 3, 8, 11, 12, 15, 16, 18, 19, 20, 23, 27, 48, 50, 51, 52, 53, 54, 59, 60, 63, 65, 66, 69, 70, 71, 74, 76, 77, 80, 81, 82, 83, 87, 88],\n \"can\": [0, 1, 2, 3, 6, 8, 9, 12, 15, 16, 18, 19, 23, 27, 38, 39, 41, 48, 50, 51, 52, 53, 54, 64, 65, 66, 67, 68, 69, 70, 71, 74, 76, 80, 81, 83, 84, 85, 88],\n \"thi\": [0, 1, 2, 3, 4, 5, 6, 9, 10, 12, 15, 16, 17, 18, 19, 20, 23, 25, 27, 38, 39, 41, 48, 50, 51, 52, 53, 54, 56, 59, 60, 63, 64, 65, 66, 67, 68, 69, 70, 71, 74, 77, 80, 81, 83, 84, 85, 86, 88],\n \"take\": [0, 10, 18, 19, 51, 53, 66, 69, 71],\n \"care\": [0, 10],\n \"remov\": [0, 3, 8, 12, 18, 19, 23, 27, 48, 51, 53, 54, 59, 60, 63, 66, 67, 68, 69, 70, 71, 74, 83],\n \"old\": [0, 61, 67, 81],\n \"so\": [0, 3, 23, 27, 48, 54, 59, 60, 68, 74, 81],\n- \"should\": [0, 1, 3, 6, 12, 15, 16, 18, 19, 20, 23, 27, 38, 41, 48, 50, 51, 52, 53, 54, 63, 66, 67, 69, 70, 71, 74, 76, 77, 83, 84, 86, 88],\n+ \"should\": [0, 1, 3, 6, 12, 15, 16, 18, 19, 20, 23, 27, 38, 41, 48, 50, 51, 53, 54, 63, 66, 67, 69, 70, 71, 74, 76, 77, 83, 84, 86, 88],\n \"cronjob\": 0,\n \"systemd\": [0, 2, 5, 6, 82],\n \"timer\": 0,\n- \"someth\": [0, 12, 15, 16, 17, 23, 27, 54, 70, 80, 81, 84],\n+ \"someth\": [0, 11, 12, 15, 16, 17, 23, 27, 54, 70, 80, 81, 84],\n \"similar\": [0, 59, 66, 80],\n \"regularli\": 0,\n- \"delet\": [0, 18, 19, 23, 27, 51, 52, 54, 67, 69, 70, 71],\n+ \"delet\": [0, 18, 19, 23, 27, 54, 67, 69, 70, 71],\n \"find\": [0, 67, 68, 82, 85],\n \"mtime\": 0,\n \"7\": [0, 66],\n \"depth\": [0, 68],\n- \"type\": [0, 10, 12, 15, 17, 18, 19, 20, 23, 27, 38, 41, 48, 50, 51, 52, 53, 54, 59, 63, 64, 65, 66, 69, 70, 71, 74, 82, 85],\n+ \"type\": [0, 10, 11, 12, 15, 17, 18, 19, 20, 23, 27, 38, 41, 48, 50, 51, 53, 54, 59, 63, 64, 65, 66, 69, 70, 71, 74, 82, 85],\n \"d\": [0, 2, 3, 4, 9, 12, 19, 20, 63, 67, 69],\n \"empti\": [0, 12, 23, 27, 48, 54, 59, 60, 63, 67, 74],\n \"clean\": [0, 23, 27, 54, 70, 76],\n \"older\": [0, 51, 53, 71],\n \"than\": [0, 10, 23, 27, 51, 53, 54, 66, 68, 70, 71],\n \"week\": 0,\n- \"For\": [0, 1, 2, 3, 4, 7, 12, 15, 18, 19, 23, 27, 51, 52, 54, 59, 65, 66, 67, 69, 71, 76, 82, 83, 86, 87, 88],\n+ \"For\": [0, 1, 2, 3, 4, 7, 12, 15, 18, 19, 23, 27, 54, 59, 65, 66, 67, 69, 71, 76, 82, 83, 86, 87, 88],\n \"follow\": [0, 3, 12, 23, 27, 48, 54, 63, 65, 67, 74, 81, 83, 85, 87, 88],\n \"config\": [0, 3, 4, 5, 8, 76, 82],\n \"would\": [0, 18, 19, 59, 69, 85],\n \"var\": [0, 2, 3, 4, 9, 12, 15, 23, 27, 54, 70, 82],\n \"lib\": [0, 3, 4, 80],\n- \"here\": [0, 3, 6, 8, 18, 19, 20, 23, 27, 38, 41, 51, 52, 53, 54, 69, 70, 71, 80],\n+ \"here\": [0, 3, 6, 8, 18, 19, 20, 23, 27, 38, 41, 51, 53, 54, 69, 70, 71, 80],\n \"org\": [0, 1, 3, 4, 8, 23, 27, 54, 66, 80, 81, 85],\n \"5281\": 0,\n \"per\": [0, 3, 23, 27, 50, 51, 54, 71],\n \"mod_http_fil\": 0,\n \"document\": [0, 1, 3],\n \"modules_en\": [0, 1, 4, 8],\n \"modul\": [0, 1, 2, 4, 5, 6, 7, 8, 15, 25, 27, 51, 54, 72, 77, 79, 81, 82, 83],\n \"must\": [0, 1, 23, 27, 48, 54, 59, 60, 63, 66, 67, 68, 74, 88],\n \"same\": [0, 8, 12, 15, 17, 18, 19, 23, 27, 54, 59, 66, 68, 69, 81],\n \"valu\": [0, 10, 12, 15, 18, 19, 48, 54, 59, 63, 66, 67, 68, 69, 70, 74, 82],\n \"http_files_dir\": [0, 4],\n- \"listen\": [0, 1, 4, 18, 19, 48, 51, 52, 54, 69, 71, 74],\n+ \"listen\": [0, 1, 4, 18, 19, 48, 54, 69, 71, 74],\n \"80\": 0,\n \"server_nam\": 0,\n \"root\": [0, 3, 59, 66],\n \"www\": 0,\n \"html\": [0, 23, 27, 54],\n \"alreadi\": [0, 18, 19, 51, 53, 60, 68, 69, 71],\n \"section\": [0, 4, 80],\n \"below\": [0, 1, 59],\n \"locat\": [0, 3],\n \"alia\": [0, 59],\n \"doc\": [0, 1, 2, 5, 7, 83, 85, 87, 88],\n \"more\": [0, 1, 6, 19, 20, 23, 27, 50, 51, 54, 60, 65, 66, 67, 69, 71, 81],\n \"info\": [0, 1, 12, 15, 49, 66, 68, 79, 82],\n- \"wa\": [0, 4, 12, 15, 17, 18, 19, 20, 23, 27, 48, 51, 52, 54, 59, 66, 68, 69, 70, 71, 74, 84],\n+ \"wa\": [0, 4, 11, 12, 15, 17, 18, 19, 20, 23, 27, 48, 54, 59, 66, 68, 69, 70, 71, 74, 84],\n \"onli\": [0, 8, 12, 15, 16, 17, 18, 19, 23, 27, 48, 51, 52, 53, 54, 60, 66, 67, 69, 70, 71, 74],\n \"v0\": 0,\n \"0rc1\": [0, 82],\n \"now\": [0, 3, 80, 81],\n \"recommend\": [0, 2, 3, 8, 48, 54, 74],\n \"manual\": [0, 10, 18, 19, 63, 69],\n- \"jid\": [0, 1, 3, 10, 12, 15, 16, 17, 18, 19, 20, 23, 27, 51, 52, 53, 54, 63, 66, 69, 70, 71, 76, 79, 80, 81, 82, 83, 84, 85],\n+ \"jid\": [0, 1, 3, 10, 11, 12, 15, 16, 17, 18, 19, 20, 23, 27, 51, 52, 53, 54, 63, 66, 69, 70, 71, 76, 79, 80, 81, 82, 83, 84, 85],\n \"servic\": [0, 3, 5, 8, 18, 19, 23, 27, 48, 51, 53, 54, 69, 70, 71, 74, 79, 82, 88],\n \"compon\": [0, 1, 2, 3, 4, 5, 8, 23, 27, 48, 54, 60, 61, 63, 66, 70, 74, 76, 81, 82, 83, 85, 88],\n \"just\": [0, 2, 15, 23, 27, 48, 51, 53, 54, 66, 68, 70, 71, 74, 77, 80, 85],\n \"like\": [0, 10, 12, 18, 19, 20, 48, 51, 53, 54, 59, 63, 66, 67, 68, 69, 71, 74, 76, 81, 84],\n \"normal\": [0, 66, 85, 86],\n \"account\": [0, 8, 23, 27, 48, 54, 66, 74, 81, 85, 86, 88],\n \"whenev\": [0, 68, 86],\n \"share\": [0, 76],\n \"pro\": 0,\n- \"doe\": [0, 1, 3, 4, 10, 12, 15, 17, 23, 27, 54, 60, 63, 67, 70, 82],\n+ \"doe\": [0, 1, 3, 4, 10, 11, 12, 15, 17, 23, 27, 54, 60, 63, 67, 70, 82],\n \"requir\": [0, 1, 3, 4, 5, 12, 15, 16, 18, 19, 20, 23, 27, 48, 51, 53, 54, 59, 69, 71, 74, 82],\n \"host\": [0, 1, 3, 4, 8, 83],\n- \"xmpp\": [0, 3, 5, 8, 10, 12, 15, 17, 18, 19, 20, 23, 27, 38, 41, 48, 51, 52, 53, 54, 59, 66, 67, 69, 70, 71, 74, 77, 79, 81, 82, 83, 85, 86, 88],\n+ \"xmpp\": [0, 3, 5, 8, 10, 11, 12, 15, 17, 18, 19, 20, 23, 27, 38, 41, 48, 51, 52, 53, 54, 59, 66, 67, 69, 70, 71, 74, 77, 79, 81, 82, 83, 85, 86, 88],\n \"easier\": [0, 23],\n \"work\": [0, 1, 4, 8, 18, 19, 23, 27, 54, 59, 67, 68, 69, 70, 80, 88],\n \"out\": [0, 12, 48, 54, 66, 67, 74],\n \"box\": 0,\n \"ish\": 0,\n- \"gener\": [0, 3, 5, 18, 19, 20, 23, 27, 48, 51, 52, 54, 59, 63, 65, 66, 69, 70, 71, 74, 82, 83, 84, 85, 87, 88],\n- \"handl\": [0, 2, 10, 16, 18, 19, 23, 27, 51, 53, 54, 56, 59, 66, 67, 68, 69, 71],\n+ \"gener\": [0, 3, 5, 18, 19, 20, 23, 27, 48, 54, 59, 63, 65, 66, 69, 70, 71, 74, 82, 83, 84, 85, 87, 88],\n+ \"handl\": [0, 2, 10, 16, 18, 19, 23, 27, 54, 56, 59, 66, 67, 68, 69, 71],\n \"quota\": 0,\n \"con\": 0,\n \"resourc\": [0, 18, 19, 48, 51, 52, 53, 54, 56, 66, 69, 71, 74, 82],\n \"usag\": [0, 39, 64, 68],\n \"copi\": [0, 12, 60, 67],\n \"move\": 0,\n- \"singl\": [0, 12, 15, 18, 19, 20, 23, 27, 51, 52, 54, 68, 69, 70, 71],\n+ \"singl\": [0, 12, 15, 18, 19, 20, 23, 27, 54, 68, 69, 70, 71],\n \"http_file_shar\": [0, 4],\n \"max\": 0,\n \"size\": [0, 67],\n \"16\": 0,\n \"mib\": 0,\n \"http_file_share_size_limit\": 0,\n \"1024\": 0,\n@@ -164,56 +164,56 @@\n \"start\": [0, 3, 8, 23, 27, 48, 54, 67, 70, 74, 80],\n \"0\": [0, 1, 4, 6, 8, 16, 51, 59, 66, 67, 82],\n \"12\": [0, 8],\n \"add\": [0, 1, 3, 8, 9, 16, 18, 19, 20, 34, 48, 51, 53, 54, 59, 60, 63, 66, 68, 69, 71, 74, 80, 84],\n \"one\": [0, 23, 27, 48, 54, 60, 65, 66, 67, 68, 70, 74],\n \"line\": [0, 1, 3, 4, 66, 67, 68],\n \"server_user_rol\": 0,\n- \"regist\": [0, 10, 12, 15, 17, 23, 27, 39, 48, 54, 64, 66, 67, 68, 70, 74, 76, 81, 82, 88],\n+ \"regist\": [0, 10, 11, 12, 15, 17, 23, 27, 39, 48, 54, 64, 66, 67, 68, 70, 74, 76, 81, 82, 88],\n \"http_file_share_access\": 0,\n \"superdup\": [0, 1, 2, 3, 4, 5, 8, 79, 80, 82],\n \"let\": [0, 3, 80],\n \"directli\": [0, 23, 27, 39, 54, 59, 64, 68, 70, 76, 80],\n \"request\": [0, 10, 12, 15, 18, 19, 20, 23, 27, 48, 51, 53, 54, 69, 70, 71, 74, 81, 84],\n \"slot\": 0,\n \"pseudo\": [0, 51, 53, 60, 63, 71],\n \"domain\": [0, 1, 66],\n- \"The\": [0, 1, 3, 4, 12, 15, 16, 18, 19, 23, 25, 27, 38, 41, 48, 50, 51, 52, 53, 54, 59, 63, 66, 67, 68, 69, 70, 71, 74, 76, 77, 81, 82, 85],\n+ \"The\": [0, 1, 3, 4, 12, 15, 16, 18, 19, 23, 25, 27, 38, 41, 48, 50, 51, 53, 54, 59, 63, 66, 67, 68, 69, 70, 71, 74, 76, 77, 81, 82, 85],\n \"subdomain\": [0, 1],\n \"fqdn\": 0,\n \"list\": [0, 8, 10, 12, 15, 18, 19, 20, 23, 27, 48, 51, 52, 53, 54, 59, 66, 67, 69, 70, 71, 74, 81, 83],\n \"under\": [0, 12, 15, 17],\n \"top\": [0, 12, 15, 17, 66],\n \"level\": [0, 12, 15, 17, 23, 27, 48, 54, 66, 68, 74],\n \"acl\": [0, 4, 8],\n \"slidge_acl\": [0, 4, 8],\n \"port\": [0, 1, 4, 66, 76],\n \"5443\": [0, 4],\n \"ejabberd_http\": [0, 4],\n \"tl\": [0, 4],\n \"request_handl\": [0, 4],\n- \"ani\": [0, 1, 3, 6, 12, 15, 17, 18, 19, 20, 48, 51, 53, 54, 59, 66, 67, 68, 69, 70, 71, 74, 81, 85],\n+ \"ani\": [0, 1, 3, 6, 11, 12, 15, 17, 18, 19, 20, 48, 54, 59, 66, 67, 68, 69, 70, 71, 74, 81, 85],\n \"ha\": [0, 4, 12, 18, 19, 23, 27, 48, 50, 51, 52, 53, 54, 59, 60, 63, 66, 67, 68, 69, 70, 71, 74, 81],\n \"write\": [0, 4, 23, 48, 54, 74, 80],\n- \"access\": [0, 4, 10, 12, 15, 17, 18, 19, 20, 59, 69, 80, 82, 86],\n+ \"access\": [0, 4, 10, 11, 12, 15, 17, 18, 19, 20, 59, 69, 80, 82, 86],\n \"docroot\": [0, 4],\n \"put_url\": [0, 4],\n \"allow\": [0, 4, 8, 18, 19, 20, 23, 27, 39, 51, 53, 54, 59, 64, 66, 68, 69, 70, 71, 80],\n \"To\": [0, 3, 5, 9, 18, 19, 51, 53, 67, 68, 69, 71, 76, 80, 86, 88],\n \"get\": [0, 4, 10, 12, 15, 18, 19, 23, 27, 38, 41, 48, 51, 53, 54, 59, 63, 67, 68, 69, 70, 71, 74],\n \"inform\": [0, 6, 18, 19, 20, 51, 53, 59, 66, 68, 69, 71, 77, 81],\n \"about\": [0, 1, 5, 6, 18, 19, 20, 51, 53, 66, 69, 71, 77, 82],\n \"choos\": [1, 25],\n \"without\": [1, 9, 48, 54, 66, 74, 79, 80, 82],\n \"part\": [1, 4, 18, 19, 20, 50, 51, 53, 60, 66, 67, 69, 71, 79, 80, 81, 82, 84],\n \"exampl\": [1, 3, 5, 8, 9, 19, 20, 23, 27, 48, 51, 53, 54, 59, 65, 66, 67, 69, 71, 72, 74, 79, 81, 82, 85, 88],\n- \"gatewai\": [1, 3, 8, 10, 12, 15, 17, 18, 19, 20, 48, 51, 52, 53, 54, 60, 63, 69, 71, 72, 74, 76, 81, 82, 83, 88],\n+ \"gatewai\": [1, 3, 8, 10, 11, 12, 15, 17, 18, 19, 20, 48, 51, 53, 54, 60, 63, 69, 71, 72, 74, 76, 81, 82, 83, 88],\n \"secret\": [1, 3, 4, 63],\n- \"ie\": [1, 18, 19, 20, 23, 27, 48, 49, 51, 52, 54, 67, 69, 70, 71, 74, 81, 83],\n- \"password\": [1, 4, 18, 19, 23, 27, 48, 51, 52, 54, 66, 69, 70, 71, 74, 76, 80],\n+ \"ie\": [1, 18, 19, 20, 23, 27, 48, 49, 54, 67, 69, 70, 71, 74, 81, 83],\n+ \"password\": [1, 4, 18, 19, 23, 27, 48, 54, 66, 69, 70, 71, 74, 76, 80],\n \"authent\": [1, 16],\n \"usual\": [1, 3, 48, 51, 53, 54, 66, 67, 68, 71, 74, 76, 83, 84],\n \"connect\": [1, 3, 5, 48, 54, 66, 74, 81],\n \"localhost\": [1, 3, 66, 76],\n \"differ\": [1, 60, 66, 81, 88],\n \"contain\": [1, 5, 6, 19, 20, 54, 59, 60, 66, 67, 69, 79, 82],\n \"process\": [1, 5, 23, 27, 54, 68, 70],\n@@ -223,75 +223,75 @@\n \"setup\": [1, 6, 59, 66, 79, 82],\n \"step\": [1, 16, 23, 27, 54],\n \"individu\": 1,\n \"becaus\": [1, 2, 8, 18, 19, 23, 27, 38, 41, 48, 51, 53, 54, 56, 66, 69, 71, 74, 80],\n \"telegram\": [1, 3, 81, 83, 85, 86, 87, 88],\n \"whatsapp\": [1, 2, 5, 7, 83, 85, 87, 88],\n \"com\": [1, 3, 8, 19, 20, 23, 27, 48, 54, 59, 69, 74],\n- \"explain\": [1, 18, 19, 23, 27, 51, 52, 54, 69, 70, 71],\n- \"If\": [1, 6, 8, 12, 15, 17, 18, 19, 20, 23, 27, 48, 51, 52, 53, 54, 59, 60, 63, 66, 67, 68, 69, 70, 71, 74, 76, 84],\n+ \"explain\": [1, 18, 19, 23, 27, 54, 69, 70, 71],\n+ \"If\": [1, 6, 8, 11, 12, 15, 17, 18, 19, 20, 23, 27, 48, 51, 53, 54, 59, 60, 63, 66, 67, 68, 69, 70, 71, 74, 76, 84],\n \"know\": [1, 51, 53, 71],\n \"pleas\": 1,\n \"contribut\": [1, 3, 79, 82],\n- \"block\": [1, 8, 18, 19, 38, 41, 51, 53, 66, 69, 71],\n- \"appropri\": [1, 8, 12, 15, 17, 18, 19, 23, 27, 48, 54, 69, 74, 77],\n+ \"block\": [1, 8, 18, 19, 38, 41, 66, 69, 71],\n+ \"appropri\": [1, 8, 11, 12, 15, 17, 18, 19, 23, 27, 48, 54, 69, 74, 77],\n \"virtualhost\": [1, 4, 8],\n \"cfg\": [1, 8],\n \"lua\": [1, 8],\n \"component_secret\": [1, 4],\n \"replac\": [1, 67],\n \"real\": [1, 23, 27, 54, 70],\n \"privileg\": [1, 4, 5, 51, 53, 71, 82],\n- \"addit\": [1, 4, 12, 15, 17, 18, 19, 20, 23, 27, 48, 51, 52, 53, 54, 66, 69, 70, 71, 74, 83, 86],\n- \"last\": [1, 12, 18, 19, 23, 27, 51, 52, 53, 54, 59, 67, 68, 69, 70, 71],\n- \"what\": [1, 12, 15, 17, 18, 19, 23, 27, 51, 53, 54, 66, 69, 70, 71, 80, 82],\n+ \"addit\": [1, 4, 11, 12, 15, 17, 18, 19, 20, 23, 27, 48, 51, 53, 54, 66, 69, 70, 71, 74, 83, 86],\n+ \"last\": [1, 12, 18, 19, 23, 27, 51, 53, 54, 59, 67, 68, 69, 70, 71],\n+ \"what\": [1, 11, 12, 15, 17, 18, 19, 23, 27, 51, 53, 54, 66, 69, 70, 71, 80, 82],\n \"entir\": 1,\n \"ip\": [1, 4, 86],\n \"127\": [1, 4],\n- \"1\": [1, 5, 16, 18, 19, 23, 27, 48, 51, 52, 54, 66, 67, 68, 69, 70, 71, 74, 82],\n+ \"1\": [1, 5, 16, 18, 19, 23, 27, 48, 51, 54, 66, 67, 68, 69, 70, 71, 74, 82],\n \"5347\": [1, 4],\n \"ejabberd_servic\": [1, 4],\n- \"given\": [1, 10, 12, 15, 18, 19, 23, 27, 48, 51, 52, 54, 63, 66, 67, 68, 69, 70, 71, 74, 85],\n- \"long\": [1, 9, 12, 15, 17, 18, 19, 23, 27, 51, 52, 54, 69, 70, 71],\n+ \"given\": [1, 10, 12, 15, 18, 19, 23, 27, 48, 54, 63, 66, 67, 68, 69, 70, 71, 74, 85],\n+ \"long\": [1, 9, 11, 12, 15, 17, 18, 19, 23, 27, 54, 69, 70, 71],\n \"\": [1, 3, 4, 5, 6, 8, 12, 15, 18, 19, 20, 23, 27, 38, 41, 48, 50, 51, 53, 54, 56, 59, 63, 66, 67, 68, 69, 70, 71, 74, 76, 80, 81, 82, 83, 84, 85, 86],\n- \"run\": [1, 5, 6, 12, 15, 17, 66, 76, 82, 83, 85],\n+ \"run\": [1, 5, 6, 11, 12, 15, 17, 66, 76, 82, 83, 85],\n \"legaci\": [2, 4, 5, 6, 7, 8, 15, 16, 18, 19, 20, 23, 27, 38, 41, 48, 51, 52, 53, 54, 67, 69, 70, 71, 72, 74, 79, 81, 82, 83, 85, 86, 87, 88],\n \"specif\": [2, 3, 5, 7, 9, 18, 19, 48, 51, 52, 54, 66, 67, 69, 71, 74, 83, 85, 87, 88],\n- \"refer\": [2, 5, 6, 7, 18, 19, 23, 27, 48, 51, 52, 54, 66, 69, 70, 71, 74, 76, 80, 81],\n+ \"refer\": [2, 5, 6, 7, 18, 19, 23, 27, 48, 54, 66, 69, 70, 71, 74, 76, 80, 81],\n \"own\": [2, 5, 7, 19, 20, 66, 69],\n \"matridg\": [2, 5, 7],\n \"matteridg\": [2, 5, 7],\n \"messlidg\": [2, 5, 7],\n \"skidg\": [2, 5, 7],\n \"sleamdg\": [2, 5, 7],\n \"slidcord\": [2, 5, 7],\n \"slidgnal\": [2, 5, 7],\n \"slidgram\": [2, 5, 7],\n \"debian\": [2, 5, 76, 82],\n \"packag\": [2, 5, 6, 68, 79, 82],\n \"edit\": [2, 3, 48, 51, 53, 54, 71, 74],\n \"conf\": [2, 3, 9],\n- \"file\": [2, 3, 4, 5, 9, 18, 19, 23, 27, 48, 51, 52, 53, 54, 63, 67, 68, 69, 70, 71, 74, 80, 82],\n+ \"file\": [2, 3, 4, 5, 9, 18, 19, 23, 27, 48, 51, 53, 54, 63, 67, 68, 69, 70, 71, 74, 80, 82],\n \"launch\": [2, 3, 6, 9, 23, 27, 54, 76, 77, 80],\n \"By\": [2, 3, 18, 19, 23, 27, 54, 66, 69, 70, 77, 80],\n \"default\": [2, 3, 12, 18, 19, 20, 23, 27, 48, 50, 51, 54, 59, 63, 65, 66, 67, 68, 69, 70, 71, 74],\n \"all\": [2, 3, 8, 9, 12, 16, 18, 19, 20, 23, 27, 34, 48, 50, 51, 53, 54, 59, 60, 63, 66, 67, 68, 69, 71, 74, 85, 88],\n \"found\": [2, 12, 18, 19, 51, 53, 59, 63, 66, 67, 68, 69, 71],\n \"chang\": [2, 8, 18, 19, 48, 51, 53, 54, 68, 69, 71, 74, 80],\n \"slidge_conf_dir\": 2,\n \"env\": [2, 9],\n \"dir1\": 2,\n \"dir2\": 2,\n \"dir3\": 2,\n \"It\": [2, 18, 19, 23, 27, 48, 51, 53, 54, 59, 68, 69, 70, 71, 74],\n- \"store\": [2, 18, 19, 23, 27, 51, 52, 53, 54, 60, 63, 69, 70, 71],\n- \"attach\": [2, 4, 5, 18, 19, 23, 27, 51, 52, 54, 67, 69, 70, 71, 82],\n+ \"store\": [2, 18, 19, 23, 27, 51, 53, 54, 60, 63, 69, 70, 71],\n+ \"attach\": [2, 4, 5, 18, 19, 23, 27, 54, 67, 69, 70, 71, 82],\n \"log\": [2, 3, 23, 27, 48, 54, 66, 68, 70, 74, 80, 85],\n- \"specifi\": [2, 12, 18, 19, 23, 27, 51, 52, 54, 59, 63, 66, 67, 68, 69, 70, 71],\n- \"plugin\": [2, 4, 5, 9, 10, 12, 15, 18, 19, 23, 27, 48, 50, 51, 52, 53, 54, 59, 63, 66, 69, 70, 71, 74, 80, 85],\n+ \"specifi\": [2, 12, 18, 19, 23, 27, 54, 59, 63, 66, 67, 68, 69, 70, 71],\n+ \"plugin\": [2, 4, 5, 9, 10, 12, 15, 18, 19, 23, 27, 48, 50, 51, 53, 54, 59, 63, 66, 69, 70, 71, 74, 80, 85],\n \"startup\": [2, 3, 18, 19, 48, 51, 53, 54, 69, 71, 74],\n \"c\": [2, 6, 9, 51, 53, 63, 71, 76],\n \"ugli\": 2,\n \"mess\": [2, 76],\n \"soon\": [2, 78],\n \"fix\": [2, 4, 61, 66],\n \"imposs\": 2,\n@@ -299,78 +299,78 @@\n \"off\": [2, 68],\n \"boolean\": 2,\n \"argument\": [2, 3, 12, 15, 19, 20, 23, 27, 54, 66, 67, 68, 69, 70, 77],\n \"ar\": [2, 3, 4, 6, 12, 15, 18, 19, 20, 23, 27, 48, 51, 53, 54, 59, 60, 66, 67, 68, 69, 71, 74, 80, 81, 83, 85, 86, 87, 88],\n \"As\": [2, 5, 82],\n \"workaround\": [2, 51, 53, 71, 76],\n \"cli\": [2, 3, 9],\n- \"arg\": [2, 9, 12, 15, 17, 18, 19, 20, 66, 67, 68, 69],\n+ \"arg\": [2, 9, 11, 12, 15, 17, 18, 19, 20, 66, 67, 68, 69],\n \"instead\": [2, 23, 27, 51, 53, 54, 59, 66, 67, 68, 70, 71],\n \"e\": [2, 3, 12, 19, 20, 23, 27, 48, 51, 53, 54, 60, 63, 67, 68, 69, 71, 74],\n \"g\": [2, 3, 19, 20, 23, 27, 48, 51, 53, 54, 68, 69, 71, 74],\n \"some\": [2, 4, 12, 15, 19, 20, 48, 54, 63, 66, 69, 74, 76, 85, 86],\n \"opt\": 2,\n \"fals\": [2, 4, 12, 15, 18, 19, 23, 27, 38, 41, 48, 51, 52, 53, 54, 59, 63, 65, 66, 67, 68, 69, 70, 71, 74],\n \"while\": [3, 12, 15, 51, 53, 71],\n- \"interact\": [3, 18, 19, 23, 27, 51, 52, 54, 69, 70, 71, 81, 85],\n+ \"interact\": [3, 18, 19, 23, 27, 54, 69, 70, 71, 81, 85],\n \"command\": [3, 23, 27, 48, 54, 70, 74, 81, 82, 84, 85, 88],\n \"wai\": [3, 8, 48, 54, 60, 74, 76, 80, 81, 86],\n \"automat\": [3, 8, 9, 12, 15, 18, 19, 48, 51, 53, 54, 66, 69, 71, 74, 77],\n \"page\": [3, 82],\n \"describ\": [3, 23, 27, 48, 54, 70, 74],\n \"achiev\": 3,\n \"podman\": 3,\n \"sysv\": 3,\n \"docker\": [3, 6, 76],\n- \"also\": [3, 18, 19, 23, 27, 39, 48, 51, 52, 54, 59, 63, 64, 66, 67, 68, 69, 70, 71, 74, 76, 77, 80],\n+ \"also\": [3, 18, 19, 23, 27, 39, 48, 54, 59, 63, 64, 66, 67, 68, 69, 70, 71, 74, 76, 77, 80],\n \"possibl\": [3, 18, 19, 23, 27, 48, 51, 53, 54, 66, 67, 69, 71, 74, 76],\n \"welcom\": [3, 23, 27, 54, 70],\n \"we\": [3, 5, 23, 25, 27, 51, 53, 54, 56, 68, 70, 71, 80],\n \"assum\": [3, 51, 53, 67, 71],\n \"fulfil\": 3,\n \"basic\": [3, 23, 27, 54, 63, 66, 81, 88],\n \"extens\": [3, 51, 53, 71],\n \"common\": [3, 5, 9, 20, 23, 27, 34, 54, 70, 82],\n \"enabl\": [3, 59, 68],\n \"sudo\": [3, 76],\n \"systemctl\": 3,\n- \"system\": [3, 6, 18, 19, 23, 27, 51, 52, 54, 69, 70, 71],\n+ \"system\": [3, 6, 18, 19, 23, 27, 54, 69, 70, 71],\n \"apt\": 3,\n \"ubuntu\": 3,\n \"imag\": [3, 12, 15, 23, 27, 48, 51, 53, 54, 59, 67, 70, 71, 74],\n \"avail\": [3, 6, 9, 23, 27, 48, 54, 70, 74],\n \"http\": [3, 4, 5, 6, 8, 9, 23, 27, 48, 54, 66, 74, 76, 82],\n \"hub\": [3, 6],\n \"u\": [3, 67, 80],\n \"nicocool84\": 3,\n- \"network\": [3, 5, 16, 18, 19, 20, 23, 27, 48, 51, 52, 53, 54, 69, 70, 71, 74, 80, 81, 83, 84, 85, 86, 87, 88],\n- \"name\": [3, 12, 15, 17, 18, 19, 23, 27, 48, 51, 52, 53, 54, 59, 64, 66, 67, 68, 69, 70, 71, 74, 77, 80, 82, 84, 85],\n+ \"network\": [3, 5, 16, 18, 19, 20, 23, 27, 48, 51, 53, 54, 69, 70, 71, 74, 80, 81, 83, 84, 85, 86, 87, 88],\n+ \"name\": [3, 11, 12, 15, 17, 18, 19, 23, 27, 48, 51, 53, 54, 59, 64, 66, 67, 68, 69, 70, 71, 74, 77, 80, 82, 84, 85],\n \"human\": [3, 48, 54, 74, 84],\n- \"friendli\": [3, 12, 15, 17, 18, 19, 69],\n+ \"friendli\": [3, 11, 12, 15, 17, 18, 19, 69],\n \"detach\": 3,\n \"tty\": 3,\n- \"io\": [3, 18, 19, 23, 27, 51, 52, 54, 69, 70, 71],\n+ \"io\": [3, 18, 19, 23, 27, 54, 69, 70, 71],\n \"latest\": [3, 18, 19, 23, 27, 54, 69],\n \"congrat\": 3,\n \"chat\": [3, 5, 12, 15, 17, 18, 19, 23, 27, 48, 51, 52, 53, 54, 69, 70, 71, 74, 80, 81, 82, 83, 85, 87, 88],\n \"buddi\": 3,\n \"super\": [3, 5, 39, 64, 68, 76, 80],\n \"duper\": [3, 5, 76, 80],\n \"yoohoo\": 3,\n \"check\": [3, 6, 18, 19, 48, 51, 53, 54, 59, 66, 68, 69, 71, 74],\n \"keep\": [3, 5, 66, 81, 82, 85],\n \"between\": [3, 61, 66, 67, 77, 81],\n \"stop\": [3, 67, 68, 83],\n \"inevit\": 3,\n \"happen\": [3, 16, 23, 27, 54, 83],\n- \"dure\": [3, 18, 19, 23, 27, 51, 52, 54, 69, 70, 71, 76],\n+ \"dure\": [3, 18, 19, 23, 27, 54, 69, 70, 71, 76],\n \"updat\": [3, 12, 18, 19, 51, 53, 60, 63, 67, 69, 71, 76, 77],\n \"volum\": 3,\n \"insid\": [3, 9],\n- \"where\": [3, 12, 15, 16, 18, 19, 20, 23, 27, 48, 51, 52, 53, 54, 59, 67, 68, 69, 70, 71, 74],\n+ \"where\": [3, 12, 15, 16, 18, 19, 20, 23, 27, 48, 51, 53, 54, 59, 67, 68, 69, 70, 71, 74],\n \"instruct\": [3, 6, 23, 27, 54, 70],\n \"been\": [3, 18, 19, 23, 27, 51, 53, 54, 66, 67, 69, 70, 71, 77],\n \"test\": [3, 12, 15, 60, 67, 76],\n \"bullsey\": 3,\n \"distro\": [3, 6],\n \"thei\": [3, 18, 19, 23, 27, 51, 53, 54, 63, 66, 69, 71, 81],\n \"adapt\": 3,\n@@ -383,19 +383,19 @@\n \"subgid\": 3,\n \"usermod\": 3,\n \"200000\": 3,\n \"201000\": 3,\n \"rang\": [3, 67],\n \"overlap\": [3, 67],\n \"linger\": 3,\n- \"its\": [3, 5, 12, 15, 17, 19, 20, 23, 27, 48, 54, 59, 66, 67, 68, 69, 74, 80],\n+ \"its\": [3, 5, 11, 12, 15, 17, 19, 20, 23, 27, 48, 54, 59, 66, 67, 68, 69, 74, 80],\n \"loginctl\": 3,\n \"id\": [3, 18, 19, 20, 23, 27, 38, 41, 48, 51, 52, 53, 54, 66, 67, 69, 70, 71, 74, 79, 80, 82],\n- \"avoid\": [3, 18, 19, 23, 27, 51, 52, 54, 68, 69, 70, 71],\n- \"pass\": [3, 12, 15, 17, 18, 19, 20, 23, 27, 48, 51, 52, 54, 66, 68, 69, 70, 71, 74, 76],\n+ \"avoid\": [3, 18, 19, 23, 27, 54, 68, 69, 70, 71],\n+ \"pass\": [3, 11, 12, 15, 17, 18, 19, 20, 23, 27, 48, 54, 66, 68, 69, 70, 71, 74, 76],\n \"everyth\": [3, 9, 19, 51, 76],\n \"mkdir\": 3,\n \"p\": [3, 51, 53, 71, 76],\n \"echo\": 3,\n \"admin\": [3, 82],\n \"a_real_secret\": 3,\n \"temporarili\": 3,\n@@ -415,83 +415,83 @@\n \"label\": [3, 12, 15, 82],\n \"autoupd\": 3,\n \"auto\": [3, 4, 51, 53, 71],\n \"dedic\": [3, 48, 54, 74],\n \"mechan\": [3, 51, 52, 71, 80],\n \"everi\": [3, 5, 19, 20, 69],\n \"separ\": [3, 67, 68],\n- \"new\": [3, 18, 19, 23, 27, 48, 51, 52, 53, 54, 59, 60, 61, 67, 68, 69, 70, 71, 74, 80],\n+ \"new\": [3, 18, 19, 23, 27, 48, 51, 53, 54, 59, 60, 61, 67, 68, 69, 70, 71, 74, 80],\n \"reload\": [3, 8, 76],\n \"examin\": 3,\n \"container_nam\": 3,\n \"These\": [4, 66, 83, 85, 87, 88],\n- \"meant\": [4, 18, 19, 23, 27, 51, 52, 53, 54, 66, 69, 70, 71],\n+ \"meant\": [4, 18, 19, 23, 27, 51, 53, 54, 66, 69, 70, 71],\n \"complet\": [4, 51, 53, 66, 71],\n \"rather\": [4, 18, 19, 68, 69],\n \"show\": [4, 39, 48, 54, 59, 64, 68, 74],\n \"relev\": [4, 68],\n \"uncom\": 4,\n \"comment\": 4,\n \"http_file\": [4, 5, 82],\n \"roster\": [4, 8, 18, 19, 23, 27, 54, 63, 69, 70, 80, 81, 82, 84, 85],\n \"sync\": [4, 81, 82, 85],\n- \"carbon\": [4, 18, 19, 23, 27, 51, 52, 54, 69, 70, 71, 81],\n+ \"carbon\": [4, 18, 19, 23, 27, 54, 69, 70, 71, 81],\n \"privileged_ent\": [4, 8],\n \"both\": [4, 8, 38, 41, 59, 60, 66, 68, 81],\n- \"messag\": [4, 8, 12, 15, 17, 18, 19, 23, 27, 48, 49, 51, 52, 53, 54, 56, 59, 63, 66, 67, 68, 69, 70, 71, 74, 80, 81, 84, 85],\n- \"outgo\": [4, 8, 18, 19, 23, 27, 51, 52, 54, 69, 70, 71, 81],\n+ \"messag\": [4, 8, 11, 12, 15, 17, 18, 19, 23, 27, 48, 49, 51, 53, 54, 56, 59, 63, 66, 67, 68, 69, 70, 71, 74, 80, 81, 84, 85],\n+ \"outgo\": [4, 8, 18, 19, 23, 27, 54, 69, 70, 71, 81],\n \"wall\": [4, 8],\n \"garden\": [4, 8],\n \"repeat\": 4,\n \"note\": [4, 9, 16, 20, 34, 66, 67, 68],\n \"mod_http_upload\": [4, 5, 82],\n \"cover\": [4, 19, 20, 63, 69],\n \"No\": [4, 5, 82],\n \"extern\": 4,\n \"nginx\": [4, 5, 82],\n \"next\": [4, 59, 66],\n \"re\": [4, 6, 51, 53, 66, 71],\n \"multipl\": 4,\n \"bridg\": [4, 8, 48, 54, 74],\n \"global_rout\": 4,\n- \"ad\": [4, 12, 15, 17, 18, 19, 23, 27, 54, 59, 66, 69, 70, 80, 81, 83, 84, 88],\n+ \"ad\": [4, 11, 12, 15, 17, 18, 19, 23, 27, 54, 59, 66, 69, 70, 80, 81, 83, 84, 88],\n \"abov\": [4, 68],\n \"access_rul\": [4, 8],\n \"slidge_rul\": [4, 8],\n \"A\": [4, 6, 10, 12, 15, 18, 19, 23, 27, 48, 51, 52, 53, 54, 59, 60, 63, 65, 66, 67, 68, 69, 70, 71, 74, 81],\n \"fill\": [4, 12, 15, 19, 20, 50, 51, 67, 69, 71, 79, 80, 82],\n- \"app\": [4, 8, 18, 19, 23, 27, 51, 52, 54, 69, 70, 71, 81],\n+ \"app\": [4, 8, 18, 19, 23, 27, 54, 69, 70, 71, 81],\n \"broken\": 4,\n- \"when\": [4, 12, 15, 17, 18, 19, 20, 23, 25, 27, 38, 41, 48, 51, 52, 53, 54, 56, 60, 66, 67, 68, 69, 70, 71, 74, 76, 77, 80, 84],\n+ \"when\": [4, 11, 12, 15, 17, 18, 19, 20, 23, 25, 27, 38, 41, 48, 51, 52, 53, 54, 56, 60, 66, 67, 68, 69, 70, 71, 74, 76, 77, 80, 84],\n \"written\": [4, 76],\n \"hopefulli\": 4,\n \"sinc\": [4, 23, 27, 51, 53, 54, 56, 66, 68, 70, 71, 76, 81, 84],\n \"mod_privileg\": [4, 5, 82],\n \"mod_rost\": [4, 8],\n \"version\": [4, 8, 9, 59, 66, 67, 68],\n \"0114\": 5,\n \"jabber\": [5, 8, 12, 15, 23, 27, 48, 54, 59, 61, 66, 70, 74, 84],\n \"protocol\": [5, 8, 23, 27, 54, 63, 70],\n \"commun\": [5, 8, 81],\n \"independ\": 5,\n- \"entri\": [5, 12, 15, 17],\n+ \"entri\": [5, 11, 12, 15, 17],\n \"guid\": 5,\n \"ll\": 5,\n \"talk\": 5,\n \"fiction\": 5,\n \"instal\": [5, 76, 82],\n \"dockerhub\": [5, 82],\n \"pipx\": [5, 82],\n \"prosodi\": [5, 76, 82],\n \"ejabberd\": [5, 82],\n \"upload\": [5, 6, 48, 54, 74, 82],\n \"2\": [5, 12, 51, 59, 63, 67, 68, 82],\n \"mod_http_file_shar\": [5, 82],\n \"daemon\": [5, 6, 82],\n- \"data\": [5, 12, 15, 18, 19, 23, 27, 48, 51, 52, 53, 54, 63, 66, 67, 69, 70, 71, 74, 76, 82],\n+ \"data\": [5, 12, 15, 18, 19, 23, 27, 48, 51, 53, 54, 63, 66, 67, 69, 70, 71, 74, 76, 82],\n \"persist\": [5, 23, 27, 51, 53, 54, 63, 71, 82],\n \"unit\": [5, 82],\n \"arm64\": 6,\n \"amd64\": 6,\n \"bunch\": 6,\n \"git\": [6, 9],\n \"sr\": [6, 9, 82],\n@@ -501,69 +501,69 @@\n \"built\": [6, 39, 59, 64, 68],\n \"push\": [6, 51, 53, 71],\n \"master\": [6, 9],\n \"artifact\": 6,\n \"build\": [6, 59],\n \"job\": 6,\n \"repo\": [6, 76],\n- \"maintain\": [6, 18, 19, 38, 41, 51, 53, 69, 71],\n+ \"maintain\": [6, 18, 19, 38, 41, 69, 71],\n \"igimonst\": 6,\n \"readm\": 6,\n- \"tag\": [6, 18, 19, 23, 27, 51, 52, 54, 59, 69, 70, 71],\n+ \"tag\": [6, 18, 19, 23, 27, 54, 59, 69, 70, 71],\n \"releas\": 6,\n \"pypi\": 6,\n \"python3\": 6,\n \"gdbm\": 6,\n- \"case\": [6, 12, 15, 18, 19, 20, 23, 27, 38, 41, 48, 51, 52, 53, 54, 63, 66, 67, 69, 70, 71, 74, 77, 86],\n+ \"case\": [6, 12, 15, 18, 19, 20, 23, 27, 38, 41, 48, 51, 53, 54, 63, 66, 67, 69, 70, 71, 74, 77, 86],\n \"import\": [6, 15, 54, 77, 80],\n \"dbm\": [6, 63],\n \"gnu\": [6, 68],\n \"exit\": [6, 9, 20],\n- \"return\": [6, 9, 10, 12, 15, 16, 17, 18, 19, 20, 23, 27, 34, 38, 39, 41, 48, 49, 50, 51, 52, 53, 54, 59, 60, 63, 64, 65, 66, 67, 68, 69, 70, 71, 74],\n+ \"return\": [6, 9, 10, 11, 12, 15, 16, 17, 18, 19, 20, 23, 27, 34, 38, 39, 41, 48, 49, 50, 51, 53, 54, 59, 60, 63, 64, 65, 66, 67, 68, 69, 70, 71, 74],\n \"code\": [6, 12, 15, 16, 23, 27, 48, 51, 52, 54, 66, 67, 70, 71, 74, 76, 80],\n \"your_importable_legacy_modul\": 6,\n \"look\": [6, 18, 19, 68, 69, 80],\n \"bleed\": 6,\n \"edg\": 6,\n \"download\": 6,\n- \"entiti\": [8, 12, 15, 17, 18, 19, 23, 27, 38, 41, 48, 51, 52, 53, 54, 69, 70, 71, 74, 77, 81],\n+ \"entiti\": [8, 11, 12, 15, 17, 18, 19, 23, 27, 38, 41, 48, 54, 69, 70, 71, 74, 77, 81],\n \"0356\": [8, 18, 19, 69],\n \"experi\": 8,\n \"With\": [8, 67, 79, 80, 82],\n \"puppet\": [8, 85],\n- \"contact\": [8, 12, 15, 23, 27, 48, 51, 52, 53, 54, 70, 71, 74, 79, 80, 81, 82, 85],\n- \"reflect\": [8, 18, 19, 23, 27, 51, 52, 54, 69, 70, 71],\n- \"side\": [8, 18, 19, 23, 27, 51, 52, 53, 54, 69, 70, 71, 83],\n- \"sent\": [8, 18, 19, 23, 27, 48, 51, 52, 53, 54, 63, 66, 69, 70, 71, 74, 81],\n+ \"contact\": [8, 12, 15, 23, 27, 48, 51, 53, 54, 70, 71, 74, 79, 80, 81, 82, 85],\n+ \"reflect\": [8, 18, 19, 23, 27, 54, 69, 70, 71],\n+ \"side\": [8, 18, 19, 23, 27, 51, 53, 54, 69, 70, 71, 83],\n+ \"sent\": [8, 18, 19, 23, 27, 48, 51, 53, 54, 63, 66, 69, 70, 71, 74, 81],\n \"non\": [8, 9, 18, 19, 20, 51, 53, 67, 68, 69, 71],\n \"client\": [8, 12, 15, 16, 18, 19, 23, 27, 48, 51, 52, 53, 54, 59, 61, 66, 67, 69, 70, 71, 74, 79, 80, 81, 82, 83, 84, 85, 86],\n- \"offici\": [8, 16, 18, 19, 23, 27, 51, 52, 54, 69, 70, 71, 81],\n- \"synchron\": [8, 18, 19, 23, 27, 51, 52, 54, 69, 70, 71],\n+ \"offici\": [8, 16, 18, 19, 23, 27, 54, 69, 70, 71, 81],\n+ \"synchron\": [8, 18, 19, 23, 27, 54, 69, 70, 71],\n \"action\": [8, 18, 19, 48, 54, 69, 74, 81],\n \"done\": [8, 18, 19, 67, 69, 77, 81, 88],\n- \"state\": [8, 18, 19, 23, 27, 48, 51, 52, 54, 69, 70, 71, 74],\n- \"emoji\": [8, 18, 19, 23, 27, 48, 51, 52, 53, 54, 69, 70, 71, 74],\n- \"reaction\": [8, 18, 19, 23, 27, 48, 51, 52, 53, 54, 69, 70, 71, 74],\n- \"retract\": [8, 18, 19, 23, 27, 48, 51, 52, 54, 69, 70, 71, 74, 82],\n+ \"state\": [8, 18, 19, 23, 27, 48, 54, 69, 70, 71, 74],\n+ \"emoji\": [8, 18, 19, 23, 27, 48, 54, 69, 70, 71, 74],\n+ \"reaction\": [8, 18, 19, 23, 27, 48, 51, 53, 54, 69, 70, 71, 74],\n+ \"retract\": [8, 18, 19, 23, 27, 48, 54, 69, 70, 71, 74, 82],\n \"bookmark\": [8, 51, 53, 71, 82],\n \"0402\": [8, 51, 53, 71],\n \"muc\": [8, 18, 19, 23, 27, 48, 51, 52, 53, 54, 69, 70, 71, 74, 81, 82],\n \"0045\": 8,\n \"easi\": [8, 86],\n \"prosodyctl\": 8,\n \"im\": 8,\n \"rock\": 8,\n \"defin\": [8, 12, 15, 16, 18, 19, 20, 39, 48, 54, 59, 64, 65, 67, 68, 69, 70, 74, 76, 77],\n \"iq\": [8, 10, 23, 27, 48, 51, 53, 54, 63, 66, 70, 71, 74],\n \"pubsub\": 8,\n \"Then\": 8,\n- \"either\": [8, 12, 15, 17, 18, 19, 23, 27, 54, 59, 60, 63, 66, 67, 69, 81, 83, 88],\n+ \"either\": [8, 11, 12, 15, 17, 18, 19, 23, 27, 54, 59, 60, 63, 66, 67, 69, 81, 83, 88],\n \"restart\": [8, 51, 53, 71],\n \"mod_reload_compon\": 8,\n- \"activ\": [8, 18, 19, 23, 27, 48, 51, 52, 54, 69, 70, 71, 74, 82, 86],\n+ \"activ\": [8, 18, 19, 23, 27, 48, 54, 69, 70, 71, 74, 82, 86],\n \"deactiv\": 8,\n \"taken\": 8,\n \"easiest\": [8, 76],\n \"go\": [8, 79, 82, 88],\n \"23\": 8,\n \"10\": [8, 16],\n \"newer\": 8,\n@@ -577,186 +577,195 @@\n \"variabl\": [9, 65],\n \"ini\": 9,\n \"convent\": [9, 81],\n \"dir\": 9,\n \"becom\": [9, 16, 68],\n \"home_dir\": 9,\n \"put\": [9, 80],\n- \"anoth\": [9, 18, 19, 23, 27, 48, 51, 52, 54, 60, 69, 70, 71, 74, 79, 82],\n+ \"anoth\": [9, 18, 19, 23, 27, 48, 54, 60, 69, 70, 71, 74, 79, 82],\n \"doubl\": 9,\n \"dash\": 9,\n \"debug\": [9, 66, 68],\n \"tree\": 9,\n \"item\": [9, 10, 12, 15, 23, 27, 51, 53, 54, 59, 63, 66, 67, 70, 71, 82],\n \"dev\": [9, 82],\n \"except\": [9, 16, 20, 23, 27, 34, 54, 56, 60, 65, 66, 68, 70],\n \"sigterminterrupt\": 9,\n- \"base\": [9, 10, 15, 17, 20, 27, 34, 54, 64, 65, 68, 70, 80, 81],\n+ \"base\": [9, 10, 11, 15, 17, 20, 27, 34, 54, 64, 65, 68, 70, 80, 81],\n \"class\": [9, 34, 76, 77, 80, 82],\n \"add_not\": [9, 16, 20, 34, 82],\n \"with_traceback\": [9, 16, 20, 34, 82],\n \"tb\": [9, 16, 20, 34],\n \"self\": [9, 12, 15, 16, 18, 19, 20, 23, 27, 34, 48, 50, 51, 53, 54, 56, 65, 66, 69, 71, 74, 76, 80],\n \"__traceback__\": [9, 16, 20, 34],\n \"adhocprovid\": 10,\n- \"slixmpp\": [10, 12, 15, 17, 18, 19, 23, 25, 27, 49, 51, 52, 53, 54, 56, 59, 63, 66, 69, 70, 71],\n+ \"slixmpp\": [10, 11, 12, 15, 17, 18, 19, 23, 25, 27, 49, 51, 52, 53, 54, 56, 59, 63, 66, 69, 70, 71],\n \"less\": [10, 66],\n \"boilerpl\": 10,\n \"untyp\": 10,\n \"dict\": [10, 12, 15, 23, 27, 48, 54, 63, 67, 70, 74, 80],\n- \"paramet\": [10, 12, 15, 17, 18, 19, 20, 23, 27, 38, 41, 48, 49, 50, 51, 52, 53, 54, 59, 61, 63, 65, 66, 67, 68, 69, 70, 71, 74],\n- \"core\": [10, 12, 15, 17, 18, 19, 20, 50, 51, 53, 54, 59, 69, 71, 74],\n- \"basegatewai\": [10, 12, 15, 16, 17, 23, 27, 48, 54, 70, 74, 77, 80, 82],\n- \"none\": [10, 12, 15, 17, 18, 19, 23, 27, 38, 41, 48, 51, 52, 53, 54, 56, 59, 60, 63, 65, 66, 67, 68, 69, 70, 71, 74, 86],\n+ \"paramet\": [10, 11, 12, 15, 17, 18, 19, 20, 23, 27, 38, 41, 48, 49, 50, 51, 52, 53, 54, 59, 61, 63, 65, 66, 67, 68, 69, 70, 71, 74],\n+ \"core\": [10, 11, 12, 15, 17, 18, 19, 20, 50, 51, 53, 54, 59, 69, 71, 74],\n+ \"basegatewai\": [10, 11, 12, 15, 16, 17, 23, 27, 48, 54, 70, 74, 77, 80, 82],\n+ \"none\": [10, 11, 12, 15, 17, 18, 19, 23, 27, 38, 41, 48, 51, 52, 53, 54, 56, 59, 60, 63, 65, 66, 67, 68, 69, 70, 71, 74, 86],\n \"call\": [10, 18, 19, 23, 27, 48, 50, 51, 52, 53, 54, 56, 63, 66, 67, 68, 69, 70, 71, 74, 77, 80, 81],\n- \"async\": [10, 12, 15, 17, 18, 19, 20, 23, 27, 38, 41, 48, 50, 51, 52, 53, 54, 69, 70, 71, 74, 80],\n+ \"async\": [10, 11, 12, 15, 17, 18, 19, 20, 23, 27, 38, 41, 48, 50, 51, 53, 54, 69, 70, 71, 74, 80],\n \"get_item\": 10,\n- \"node\": [10, 12, 15, 17, 82],\n+ \"node\": [10, 11, 12, 15, 17, 82],\n \"disco\": [10, 23, 27, 54],\n \"queri\": [10, 48, 54, 74],\n \"who\": [10, 12, 15, 81],\n- \"str\": [10, 12, 15, 17, 18, 19, 20, 23, 27, 48, 50, 51, 52, 53, 54, 59, 63, 65, 67, 68, 69, 70, 71, 74, 80],\n+ \"str\": [10, 11, 12, 15, 17, 18, 19, 20, 23, 27, 48, 50, 51, 52, 53, 54, 59, 63, 65, 67, 68, 69, 70, 71, 74, 80],\n \"xep_0030\": 10,\n \"stanza\": [10, 48, 49, 51, 53, 54, 63, 66, 71, 74],\n \"discoitem\": 10,\n- \"tableresult\": [12, 15, 17, 82],\n+ \"admincommand\": 11,\n+ \"abstract\": [11, 12, 15, 17, 23, 27, 39, 48, 50, 51, 53, 54, 64, 65, 68, 70, 71, 74],\n+ \"implement\": [11, 12, 15, 17, 19, 20, 23, 25, 27, 39, 48, 50, 51, 54, 59, 63, 64, 66, 67, 68, 69, 70, 71, 74, 76],\n+ \"chatbot\": [11, 12, 15, 17, 23, 27, 54, 81, 88],\n+ \"hoc\": [11, 12, 15, 17, 81, 83, 88],\n+ \"stuff\": [11, 12, 15, 17, 18, 19, 23, 27, 54, 67, 69, 70, 76, 83],\n+ \"help\": [11, 12, 15, 17, 23, 27, 51, 53, 54, 70, 71, 82, 83],\n+ \"descript\": [11, 12, 15, 17, 51, 53, 59, 66, 71, 82],\n+ \"chat_command\": [11, 12, 15, 17, 82],\n+ \"text\": [11, 12, 15, 17, 18, 19, 23, 27, 48, 54, 59, 66, 67, 69, 70, 71, 74, 80],\n+ \"send\": [11, 12, 15, 17, 18, 19, 23, 25, 27, 48, 51, 52, 53, 54, 66, 69, 70, 71, 74, 80, 83, 85],\n+ \"trigger\": [11, 12, 15, 17, 48, 51, 52, 53, 54, 66, 71, 74, 81, 84, 85],\n+ \"session\": [11, 12, 15, 17, 18, 19, 20, 23, 27, 50, 51, 53, 54, 69, 70, 71, 72, 82],\n+ \"ifrom\": [11, 12, 15, 17, 63],\n+ \"basesess\": [11, 12, 15, 17, 18, 19, 20, 23, 27, 48, 50, 51, 53, 54, 69, 70, 71, 74, 77, 80, 82],\n+ \"word\": [11, 12, 15, 17, 67, 84],\n+ \"after\": [11, 12, 15, 16, 17, 23, 27, 51, 53, 54, 66, 67, 70, 71, 77, 84],\n+ \"string\": [11, 12, 15, 17, 19, 20, 48, 54, 59, 63, 66, 67, 68, 69, 74],\n+ \"tableresult\": [11, 12, 15, 17, 82],\n+ \"form\": [11, 12, 15, 16, 17, 23, 27, 48, 54, 59, 63, 70, 74, 80, 81, 82],\n+ \"confirm\": [11, 12, 15, 16, 17, 18, 19, 23, 27, 54, 69, 70, 82],\n+ \"commandresponsetyp\": [11, 12, 15],\n+ \"raise_if_not_author\": [11, 12, 15, 17, 82],\n+ \"rais\": [11, 12, 15, 16, 17, 23, 27, 48, 50, 51, 53, 54, 56, 60, 63, 66, 67, 68, 70, 71, 74, 77],\n+ \"error\": [11, 12, 15, 17, 66, 67, 68],\n+ \"author\": [11, 12, 15, 17, 48, 54, 67, 74],\n+ \"try\": [11, 12, 15, 17, 18, 19, 23, 27, 54, 65, 67, 69, 70, 71, 76, 84],\n+ \"exist\": [11, 12, 15, 17, 59, 68, 80],\n+ \"listus\": 11,\n+ \"_session\": 11,\n+ \"_ifrom\": [11, 17],\n+ \"_\": [11, 17],\n+ \"slidgeinfo\": 11,\n+ \"deleteus\": 11,\n+ \"changeloglevel\": 11,\n+ \"exec\": 11,\n \"structur\": [12, 15],\n \"result\": [12, 15, 23, 27, 54, 59, 66, 67, 70],\n \"field\": [12, 15, 23, 27, 54, 67, 70, 80, 82],\n \"collect\": [12, 15, 23, 27, 54, 66],\n \"formfield\": [12, 15, 23, 27, 54, 70, 82],\n \"column\": [12, 15],\n \"tabl\": [12, 15, 65, 67],\n \"row\": [12, 15],\n \"kei\": [12, 15, 23, 27, 48, 54, 59, 63, 65, 67, 74],\n \"attribut\": [12, 18, 19, 20, 23, 27, 48, 51, 53, 59, 66, 68, 69, 70, 71, 74, 77, 80, 82],\n- \"descript\": [12, 15, 17, 51, 53, 59, 66, 71, 82],\n \"get_xml\": [12, 15, 82],\n- \"form\": [12, 15, 16, 17, 23, 27, 48, 54, 59, 63, 70, 74, 80, 81, 82],\n \"report\": [12, 15, 60],\n \"header\": [12, 15, 66],\n \"repres\": [12, 15, 18, 19, 20, 38, 41, 48, 51, 53, 54, 68, 69, 71, 74, 77, 80, 81],\n \"xml\": [12, 15, 59, 61, 66],\n \"xep_0004\": [12, 15],\n \"searchresult\": [12, 15, 17, 48, 54, 74, 82],\n \"search\": [12, 15, 17, 23, 27, 48, 54, 67, 68, 70, 74, 82, 83, 84],\n- \"basesess\": [12, 15, 17, 18, 19, 20, 23, 27, 48, 50, 51, 53, 54, 69, 70, 71, 74, 77, 80, 82],\n- \"confirm\": [12, 15, 16, 17, 18, 19, 23, 27, 54, 69, 70, 82],\n \"dialog\": [12, 15, 23, 27, 54],\n \"prompt\": [12, 15, 23, 27, 48, 54, 70, 74, 82],\n- \"text\": [12, 15, 17, 18, 19, 23, 27, 48, 51, 52, 54, 59, 66, 67, 69, 70, 71, 74, 80],\n \"present\": [12, 15, 23, 27, 48, 51, 53, 54, 60, 63, 67, 68, 71, 74, 83],\n- \"trigger\": [12, 15, 17, 48, 51, 52, 53, 54, 66, 71, 74, 81, 84, 85],\n \"handler\": [12, 15, 67, 68, 80, 82],\n \"confirmationhandlertyp\": [12, 15],\n \"function\": [12, 15, 19, 20, 23, 27, 39, 48, 63, 69, 70, 74, 77, 82],\n \"responsetyp\": [12, 15],\n \"success\": [12, 15, 48, 50, 51, 54, 59, 66, 71, 74, 82],\n \"anyth\": [12, 15, 67, 81],\n \"handler_arg\": [12, 15, 82],\n- \"iter\": [12, 15, 18, 19, 23, 27, 48, 51, 52, 54, 59, 63, 66, 67, 69, 70, 71, 74],\n+ \"iter\": [12, 15, 18, 19, 23, 27, 48, 54, 59, 63, 66, 67, 69, 70, 71, 74],\n \"handler_kwarg\": [12, 15, 82],\n \"keyword\": [12, 15, 18, 19, 20, 66, 67, 68, 69],\n \"get_form\": [12, 15, 82],\n \"input\": [12, 15, 23, 27, 48, 54, 68, 70, 74, 82],\n \"get_valu\": [12, 15, 82],\n \"slix_form\": [12, 15],\n \"pars\": [12, 15],\n \"submiss\": [12, 15],\n- \"string\": [12, 15, 17, 19, 20, 48, 54, 59, 63, 66, 67, 68, 69, 74],\n- \"union\": [12, 15, 17, 18, 19, 23, 27, 48, 51, 52, 53, 54, 59, 60, 63, 69, 70, 71, 74],\n+ \"union\": [12, 15, 17, 18, 19, 23, 27, 48, 51, 53, 54, 59, 60, 63, 69, 70, 71, 74],\n \"bool\": [12, 15, 59, 67],\n \"commandaccess\": [12, 15, 82],\n \"clear\": [12, 18, 19, 56, 59, 60, 63, 67, 69],\n \"shallow\": [12, 60, 67],\n \"dictionari\": [12, 59, 66, 67],\n \"els\": [12, 23, 27, 51, 53, 54, 63, 67, 68, 70, 71],\n- \"object\": [12, 18, 19, 23, 27, 48, 51, 52, 54, 59, 63, 66, 67, 69, 70, 71, 74],\n- \"provid\": [12, 18, 19, 23, 27, 38, 41, 51, 52, 53, 54, 59, 63, 66, 67, 69, 70, 71, 80, 81, 83],\n+ \"object\": [12, 18, 19, 23, 27, 48, 54, 59, 63, 66, 67, 69, 70, 71, 74],\n+ \"provid\": [12, 18, 19, 23, 27, 38, 41, 51, 53, 54, 59, 63, 66, 67, 69, 70, 71, 80, 81, 83],\n \"view\": [12, 63, 67],\n \"pop\": [12, 59, 60, 63, 67],\n \"k\": [12, 51, 53, 63, 67, 71],\n \"v\": [12, 63, 67, 76],\n \"correspond\": [12, 25, 51, 53, 63, 66, 67, 71],\n \"otherwis\": [12, 23, 27, 54, 60, 63, 66, 67],\n- \"rais\": [12, 15, 16, 17, 23, 27, 48, 50, 51, 53, 54, 56, 60, 63, 66, 67, 68, 70, 71, 74, 77],\n \"keyerror\": [12, 60, 63, 65, 67],\n \"popitem\": [12, 63, 67],\n \"pair\": [12, 63, 67],\n- \"tupl\": [12, 18, 19, 23, 27, 51, 52, 54, 63, 66, 67, 69, 70, 71],\n+ \"tupl\": [12, 18, 19, 23, 27, 54, 63, 66, 67, 69, 70, 71],\n \"lifo\": [12, 66, 67],\n \"first\": [12, 23, 27, 51, 53, 54, 66, 67, 68, 71],\n \"setdefault\": [12, 63, 67],\n \"insert\": [12, 48, 54, 67, 74],\n \"f\": [12, 63, 67],\n \"method\": [12, 18, 19, 23, 27, 39, 48, 51, 53, 54, 59, 60, 63, 64, 66, 67, 68, 69, 70, 71, 74, 80],\n \"lack\": [12, 63, 67],\n \"intern\": [12, 15, 18, 19, 23, 27, 50, 51, 52, 53, 54, 63, 69, 70, 71],\n \"retriev\": [12, 15, 18, 19, 20, 51, 53, 59, 69, 71, 80],\n \"gatewayus\": [12, 15, 23, 27, 48, 54, 63, 65, 70, 74, 80],\n \"registration_form\": [12, 15, 23, 27, 54, 63, 70, 80],\n- \"whether\": [12, 15, 18, 19, 23, 27, 51, 52, 53, 54, 60, 66, 67, 69, 70, 71],\n+ \"whether\": [12, 15, 18, 19, 23, 27, 51, 53, 54, 60, 66, 67, 69, 70, 71],\n \"mandatori\": [12, 15],\n \"privat\": [12, 15, 51, 67, 82],\n \"sensit\": [12, 15, 19, 20, 69],\n- \"displai\": [12, 15, 18, 19, 23, 27, 51, 52, 54, 67, 69, 70, 71, 82],\n+ \"displai\": [12, 15, 18, 19, 23, 27, 54, 67, 69, 70, 71, 82],\n \"screen\": [12, 15],\n \"forc\": [12, 15, 18, 19, 69],\n \"field_typ\": [12, 15],\n- \"util\": [12, 15, 17, 18, 19, 20, 23, 27, 38, 41, 48, 50, 51, 52, 53, 54, 69, 70, 71, 74, 76],\n+ \"util\": [12, 15, 17, 18, 19, 20, 23, 27, 38, 41, 48, 50, 51, 53, 54, 69, 70, 71, 74, 76],\n \"fieldtyp\": [12, 15],\n \"0004\": [12, 15, 23, 27, 54],\n \"pre\": [12, 15, 79, 82],\n \"Will\": [12, 15, 48, 54, 59, 74],\n- \"modifi\": [12, 15, 18, 19, 23, 27, 48, 51, 52, 53, 54, 66, 69, 70, 71, 74],\n+ \"modifi\": [12, 15, 18, 19, 23, 27, 48, 51, 53, 54, 66, 69, 70, 71, 74],\n \"subscript\": [12, 15, 60],\n \"image_url\": [12, 15, 82],\n- \"associ\": [12, 15, 18, 19, 23, 27, 51, 52, 53, 54, 59, 69, 70, 71],\n+ \"associ\": [12, 15, 18, 19, 23, 27, 51, 53, 54, 59, 69, 70, 71],\n \"qr\": [12, 15, 16, 23, 27, 48, 54, 70, 74],\n \"valid\": [12, 15, 16, 18, 19, 20, 23, 27, 48, 51, 53, 54, 66, 67, 69, 70, 71, 74, 77, 82],\n \"xmpperror\": [12, 15, 23, 27, 48, 50, 51, 53, 54, 56, 70, 71, 74, 77],\n \"OR\": [12, 15],\n \"format\": [12, 15, 59, 66, 67],\n- \"abstract\": [12, 15, 17, 23, 27, 39, 48, 50, 51, 53, 54, 64, 65, 68, 70, 71, 74],\n- \"implement\": [12, 15, 17, 19, 20, 23, 25, 27, 39, 48, 50, 51, 54, 59, 63, 64, 66, 67, 68, 69, 70, 71, 74, 76],\n- \"chatbot\": [12, 15, 17, 23, 27, 54, 81, 88],\n- \"hoc\": [12, 15, 17, 81, 83, 88],\n- \"stuff\": [12, 15, 17, 18, 19, 23, 27, 54, 67, 69, 70, 76, 83],\n- \"help\": [12, 15, 17, 23, 27, 51, 53, 54, 70, 71, 82, 83],\n- \"chat_command\": [12, 15, 17, 82],\n- \"send\": [12, 15, 17, 18, 19, 23, 25, 27, 48, 51, 52, 53, 54, 66, 69, 70, 71, 74, 80, 83, 85],\n \"categori\": [12, 15, 17, 23, 27, 54, 82],\n \"sever\": [12, 15, 17, 66, 68],\n \"group\": [12, 15, 17, 18, 19, 23, 27, 48, 54, 67, 69, 70, 72, 74, 79, 81, 82, 85],\n \"them\": [12, 15, 17, 38, 41, 51, 52, 53, 71, 77, 83, 85],\n \"hierarchi\": [12, 15, 17, 68],\n \"adhoc\": [12, 15, 17, 23, 27, 54],\n- \"interfac\": [12, 15, 17, 18, 19, 23, 27, 51, 52, 54, 59, 63, 66, 69, 70, 71, 81, 86],\n- \"session\": [12, 15, 17, 18, 19, 20, 23, 27, 50, 51, 52, 53, 54, 69, 70, 71, 72, 82],\n- \"ifrom\": [12, 15, 17, 63],\n- \"word\": [12, 15, 17, 67, 84],\n- \"after\": [12, 15, 16, 17, 23, 27, 51, 53, 54, 66, 67, 70, 71, 77, 84],\n- \"commandresponsetyp\": [12, 15],\n- \"raise_if_not_author\": [12, 15, 17, 82],\n- \"error\": [12, 15, 17, 66, 67, 68],\n- \"author\": [12, 15, 17, 48, 54, 67, 74],\n- \"try\": [12, 15, 17, 18, 19, 23, 27, 51, 52, 54, 65, 67, 69, 70, 71, 76, 84],\n- \"exist\": [12, 15, 17, 59, 68, 80],\n+ \"interfac\": [12, 15, 17, 18, 19, 23, 27, 54, 59, 63, 66, 69, 70, 71, 81, 86],\n \"unifi\": 15,\n \"api\": [15, 18, 19, 23, 27, 54, 63, 69, 80],\n \"subclass\": [15, 19, 20, 23, 27, 39, 48, 54, 64, 66, 68, 69, 74, 77, 80],\n \"__init__\": [15, 19, 20, 66, 69, 80],\n \"py\": [15, 54, 80],\n \"registr\": [16, 23, 27, 48, 54, 63, 70, 74, 80, 82, 84, 85],\n \"necessari\": [16, 51, 53, 71],\n \"registrationtyp\": [16, 23, 27, 54, 70, 82],\n \"enum\": 16,\n \"flow\": [16, 23, 27, 54, 70],\n \"single_step_form\": [16, 23, 27, 54, 82],\n- \"compat\": [16, 18, 19, 38, 41, 51, 53, 69, 71],\n+ \"compat\": [16, 18, 19, 38, 41, 69, 71],\n \"0077\": [16, 23, 27, 54, 63, 88],\n \"whole\": 16,\n \"registration_field\": [16, 23, 27, 54, 70, 80, 82],\n \"registration_instruct\": [16, 23, 27, 54, 82],\n \"qrcode\": [16, 23, 27, 54, 70, 82],\n \"flash\": [16, 23, 27, 54, 70],\n \"send_qr\": [16, 23, 27, 48, 54, 70, 74, 82],\n@@ -766,23 +775,21 @@\n \"20\": 16,\n \"2fa\": [16, 23, 27, 54, 70, 86],\n \"email\": 16,\n \"sm\": [16, 48, 54, 74],\n \"final\": [16, 23, 27, 54, 70],\n \"validate_two_factor_cod\": [16, 23, 27, 54, 70, 82],\n \"twofactornotrequir\": [16, 82],\n- \"_ifrom\": 17,\n \"anybasesess\": 17,\n \"synccontact\": 17,\n- \"_\": 17,\n \"listcontact\": 17,\n \"listgroup\": 17,\n \"creategroup\": 17,\n \"unregist\": [17, 23, 27, 54, 70, 82, 85],\n- \"legacycontact\": [18, 19, 20, 23, 27, 38, 41, 48, 51, 52, 53, 54, 67, 69, 70, 71, 74, 77, 80, 81, 82],\n+ \"legacycontact\": [18, 19, 20, 23, 27, 38, 41, 48, 51, 53, 54, 67, 69, 70, 71, 74, 77, 80, 81, 82],\n \"legacy_id\": [18, 19, 20, 50, 51, 53, 69, 71, 77, 80, 82],\n \"jid_usernam\": [18, 19, 20, 69],\n \"central\": [18, 19, 69],\n \"relat\": [18, 19, 23, 27, 51, 54, 69],\n \"shouldn\": [18, 19, 23, 27, 54, 69, 70],\n \"t\": [18, 19, 23, 27, 39, 48, 51, 53, 54, 64, 66, 67, 68, 69, 70, 71, 74, 76, 80, 88],\n \"reli\": [18, 19, 69],\n@@ -797,45 +804,45 @@\n \"transmit\": [18, 19, 48, 54, 69, 74, 80],\n \"TO\": [18, 19, 69],\n \"mark\": [18, 19, 23, 27, 48, 54, 66, 69, 74],\n \"imperson\": [18, 19, 69],\n \"legacyuseridtyp\": [18, 19, 20, 69],\n \"properti\": [18, 19, 38, 41, 51, 53, 63, 69, 71],\n \"appear\": [18, 19, 69],\n- \"avatar_id\": [18, 19, 38, 41, 51, 53, 69, 71, 82],\n- \"avataridtyp\": [18, 19, 38, 41, 51, 53, 69, 71],\n- \"uniqu\": [18, 19, 23, 27, 38, 41, 51, 52, 53, 54, 67, 68, 69, 70, 71],\n+ \"avatar_id\": [18, 19, 38, 41, 69, 71, 82],\n+ \"avataridtyp\": [18, 19, 38, 41, 69, 71],\n+ \"uniqu\": [18, 19, 23, 27, 38, 41, 51, 53, 54, 67, 68, 69, 70, 71],\n \"avatar\": [18, 19, 20, 23, 27, 41, 48, 51, 53, 54, 69, 71, 74, 77, 81, 82],\n \"set_avatar\": [18, 19, 38, 41, 51, 53, 69, 71, 82],\n- \"prefer\": [18, 19, 38, 41, 51, 53, 69, 71, 88],\n- \"effici\": [18, 19, 38, 41, 51, 53, 69, 71],\n+ \"prefer\": [18, 19, 38, 41, 69, 71, 88],\n+ \"effici\": [18, 19, 38, 41, 69, 71],\n \"cach\": [18, 19, 38, 41, 51, 53, 69, 71, 76],\n- \"okish\": [18, 19, 38, 41, 51, 53, 69, 71],\n- \"act\": [18, 19, 38, 39, 41, 51, 53, 61, 64, 68, 69, 71, 85],\n- \"python\": [18, 19, 38, 41, 51, 53, 63, 66, 67, 68, 69, 71, 80, 82],\n- \"abus\": [18, 19, 38, 41, 51, 53, 69, 71],\n- \"backward\": [18, 19, 38, 41, 51, 53, 69, 71],\n- \"actual\": [18, 19, 23, 27, 38, 41, 51, 52, 53, 54, 56, 69, 70, 71, 80],\n+ \"okish\": [18, 19, 38, 41, 69, 71],\n+ \"act\": [18, 19, 38, 39, 41, 61, 64, 68, 69, 71, 85],\n+ \"python\": [18, 19, 38, 41, 63, 66, 67, 68, 69, 71, 80, 82],\n+ \"abus\": [18, 19, 38, 41, 69, 71],\n+ \"backward\": [18, 19, 38, 41, 69, 71],\n+ \"actual\": [18, 19, 23, 27, 38, 41, 54, 56, 69, 70, 71, 80],\n \"full\": [18, 19, 51, 53, 66, 69, 71],\n- \"mayb\": [18, 19, 23, 27, 51, 52, 54, 69, 70, 71],\n+ \"mayb\": [18, 19, 23, 27, 54, 69, 70, 71],\n \"properli\": [18, 19, 20, 69],\n- \"identifi\": [18, 19, 20, 23, 27, 48, 51, 52, 53, 54, 66, 67, 68, 69, 70, 71, 74],\n+ \"identifi\": [18, 19, 20, 23, 27, 48, 51, 53, 54, 66, 67, 68, 69, 70, 71, 74],\n \"control\": [18, 19, 69],\n \"translat\": [18, 19, 20, 67, 69],\n \"jid_username_to_legacy_id\": [18, 19, 20, 50, 51, 69, 71, 77, 82],\n \"reciproc\": [18, 19, 69],\n \"legacy_id_to_jid_usernam\": [18, 19, 20, 50, 51, 69, 71, 77, 82],\n \"invers\": [18, 19, 69],\n \"transform\": [18, 19, 69],\n \"get_msg_xmpp_id_up_to\": [18, 19, 69, 82],\n \"horizon_xmpp_id\": [18, 19, 69],\n \"msg\": [18, 19, 23, 27, 48, 49, 54, 66, 68, 69, 74, 80],\n- \"reason\": [18, 19, 23, 27, 48, 51, 52, 53, 54, 63, 66, 69, 70, 71, 74],\n+ \"reason\": [18, 19, 23, 27, 48, 51, 53, 54, 63, 66, 69, 70, 71, 74],\n \"most\": [18, 19, 23, 27, 51, 53, 54, 66, 69, 71, 86],\n- \"marker\": [18, 19, 23, 27, 51, 52, 54, 69, 70, 71],\n+ \"marker\": [18, 19, 23, 27, 54, 69, 70, 71],\n \"effect\": [18, 19, 23, 27, 51, 53, 54, 60, 66, 68, 69, 71, 80],\n \"horizon\": [18, 19, 69],\n \"twice\": [18, 19, 69],\n \"add_to_rost\": [18, 19, 20, 23, 27, 54, 69, 70, 82],\n \"even\": [18, 19, 39, 64, 66, 68, 69],\n \"successfulli\": [18, 19, 23, 27, 54, 69],\n \"accept_friend_request\": [18, 19, 69, 82],\n@@ -877,125 +884,125 @@\n \"fetch_vcard\": [18, 19, 69, 82],\n \"doesn\": [18, 19, 69],\n \"too\": [18, 19, 20, 23, 25, 27, 54, 67, 69],\n \"mani\": [18, 19, 69],\n \"profil\": [18, 19, 69, 76, 81, 82, 85],\n \"hasn\": [18, 19, 69],\n \"befor\": [18, 19, 20, 48, 51, 53, 54, 63, 66, 67, 69, 71, 74],\n- \"avatar_unique_id\": [18, 19, 38, 41, 51, 53, 69, 71],\n- \"cancel\": [18, 19, 38, 41, 51, 53, 69, 71],\n- \"avatartyp\": [18, 19, 23, 27, 38, 41, 51, 53, 54, 69, 71],\n- \"legacyfileidtyp\": [18, 19, 38, 41, 51, 53, 69, 71],\n- \"invite_to\": [18, 19, 23, 27, 51, 52, 54, 69, 70, 71, 82],\n- \"send_kwarg\": [18, 19, 23, 27, 51, 52, 54, 69, 70, 71],\n- \"invit\": [18, 19, 23, 27, 48, 51, 52, 53, 54, 69, 70, 71, 74],\n+ \"avatar_unique_id\": [18, 19, 38, 41, 69, 71],\n+ \"cancel\": [18, 19, 38, 41, 69, 71],\n+ \"avatartyp\": [18, 19, 23, 27, 38, 41, 54, 69, 71],\n+ \"legacyfileidtyp\": [18, 19, 38, 41, 69, 71],\n+ \"invite_to\": [18, 19, 23, 27, 54, 69, 70, 71, 82],\n+ \"send_kwarg\": [18, 19, 23, 27, 54, 69, 70, 71],\n+ \"invit\": [18, 19, 23, 27, 48, 51, 53, 54, 69, 70, 71, 74],\n \"join\": [18, 19, 23, 27, 48, 51, 52, 53, 54, 67, 69, 70, 71, 74],\n- \"0249\": [18, 19, 23, 27, 48, 51, 52, 54, 69, 70, 71, 74],\n+ \"0249\": [18, 19, 23, 27, 48, 54, 69, 70, 71, 74],\n \"legacymuc\": [18, 19, 23, 27, 38, 41, 48, 51, 52, 53, 54, 69, 70, 71, 74, 77, 82],\n- \"why\": [18, 19, 23, 27, 51, 52, 54, 69, 70, 71],\n- \"sens\": [18, 19, 23, 27, 51, 52, 54, 69, 70, 71],\n- \"later\": [18, 19, 23, 27, 48, 51, 52, 54, 69, 70, 71, 74],\n- \"kwarg\": [18, 19, 20, 23, 27, 48, 51, 52, 53, 54, 66, 67, 68, 69, 70, 71, 74, 80],\n- \"_send\": [18, 19, 23, 27, 51, 52, 54, 69, 70, 71],\n- \"0085\": [18, 19, 23, 27, 48, 51, 52, 54, 69, 70, 71, 74],\n- \"compos\": [18, 19, 23, 27, 51, 52, 54, 69, 70, 71, 76, 82],\n- \"notif\": [18, 19, 23, 27, 51, 52, 53, 54, 69, 70, 71],\n- \"paus\": [18, 19, 23, 27, 48, 51, 52, 54, 69, 70, 71, 74, 82],\n- \"inact\": [18, 19, 23, 27, 48, 51, 52, 54, 69, 70, 71, 74, 82],\n- \"intermedi\": [18, 19, 23, 27, 51, 52, 54, 69, 70, 71],\n- \"period\": [18, 19, 23, 27, 51, 52, 54, 68, 69, 70, 71],\n- \"time\": [18, 19, 23, 27, 48, 51, 52, 54, 66, 69, 70, 71, 74, 84],\n- \"gone\": [18, 19, 23, 27, 51, 52, 54, 69, 70, 71, 82],\n- \"devic\": [18, 19, 23, 27, 51, 52, 54, 69, 70, 71],\n- \"rel\": [18, 19, 23, 27, 51, 52, 54, 69, 70, 71],\n- \"send_text\": [18, 19, 23, 27, 48, 51, 52, 54, 69, 70, 71, 74, 80, 82],\n- \"bodi\": [18, 19, 23, 27, 51, 52, 54, 56, 59, 67, 69, 70, 71, 80],\n- \"legacy_msg_id\": [18, 19, 23, 27, 48, 51, 52, 53, 54, 69, 70, 71, 74, 80],\n- \"reply_to\": [18, 19, 23, 27, 48, 51, 52, 54, 69, 70, 71, 74],\n- \"thread\": [18, 19, 23, 27, 48, 51, 52, 54, 69, 70, 71, 74],\n- \"hint\": [18, 19, 23, 27, 51, 52, 54, 69, 70, 71],\n- \"archive_onli\": [18, 19, 23, 27, 51, 52, 53, 54, 69, 70, 71],\n- \"correct\": [18, 19, 23, 27, 48, 51, 52, 53, 54, 66, 69, 70, 71, 74, 82],\n- \"correction_event_id\": [18, 19, 23, 27, 51, 52, 54, 69, 70, 71],\n- \"link_preview\": [18, 19, 23, 27, 48, 51, 52, 54, 69, 70, 71, 74],\n- \"legacymessagetyp\": [18, 19, 23, 27, 48, 51, 52, 53, 54, 69, 70, 71, 74],\n- \"abl\": [18, 19, 23, 27, 51, 52, 54, 69, 70, 71, 77],\n- \"transport\": [18, 19, 23, 27, 51, 52, 54, 69, 70, 71, 80],\n- \"datetim\": [18, 19, 23, 27, 51, 52, 53, 54, 69, 70, 71],\n- \"delai\": [18, 19, 23, 27, 51, 52, 54, 69, 70, 71],\n- \"0203\": [18, 19, 23, 27, 51, 52, 54, 69, 70, 71],\n- \"messagerefer\": [18, 19, 23, 27, 51, 52, 54, 67, 69, 70, 71],\n- \"quot\": [18, 19, 23, 27, 48, 51, 52, 54, 67, 69, 70, 71, 74],\n- \"0461\": [18, 19, 23, 27, 48, 51, 52, 54, 67, 69, 70, 71, 74],\n- \"processinghint\": [18, 19, 23, 27, 51, 52, 54, 69, 70, 71],\n- \"legacythreadtyp\": [18, 19, 23, 27, 48, 51, 52, 54, 69, 70, 71, 74],\n- \"histori\": [18, 19, 23, 27, 51, 52, 53, 54, 69, 70, 71, 81],\n- \"random\": [18, 19, 23, 27, 51, 52, 54, 69, 70, 71, 84],\n- \"linkpreview\": [18, 19, 23, 27, 48, 51, 52, 54, 59, 69, 70, 71, 74],\n- \"littl\": [18, 19, 23, 27, 51, 52, 54, 69, 70, 71],\n- \"sender\": [18, 19, 23, 27, 48, 51, 52, 54, 56, 69, 70, 71, 74, 80],\n- \"preview\": [18, 19, 23, 27, 48, 51, 52, 54, 69, 70, 71, 74],\n- \"link\": [18, 19, 23, 27, 48, 51, 52, 54, 69, 70, 71, 74, 83, 85, 87, 88],\n- \"archiv\": [18, 19, 23, 27, 51, 52, 53, 54, 69, 70, 71],\n- \"backfil\": [18, 19, 23, 27, 51, 52, 53, 54, 69, 70, 71, 82],\n- \"new_text\": [18, 19, 23, 27, 51, 52, 54, 69, 70, 71],\n- \"previous\": [18, 19, 23, 27, 51, 52, 54, 69, 70, 71],\n- \"0308\": [18, 19, 23, 27, 48, 51, 52, 54, 69, 70, 71, 74],\n- \"react\": [18, 19, 23, 27, 48, 51, 52, 54, 69, 70, 71, 74, 82],\n- \"0444\": [18, 19, 23, 27, 48, 51, 52, 54, 69, 70, 71, 74],\n- \"0424\": [18, 19, 23, 27, 48, 51, 52, 54, 69, 70, 71, 74],\n- \"send_fil\": [18, 19, 23, 27, 51, 52, 54, 67, 69, 70, 71, 82],\n- \"file_path\": [18, 19, 23, 27, 51, 52, 54, 69, 70, 71],\n- \"data_stream\": [18, 19, 23, 27, 51, 52, 54, 69, 70, 71],\n- \"file_url\": [18, 19, 23, 27, 51, 52, 54, 69, 70, 71],\n- \"file_nam\": [18, 19, 23, 27, 51, 52, 54, 69, 70, 71],\n- \"content_typ\": [18, 19, 23, 27, 51, 52, 54, 69, 70, 71],\n- \"caption\": [18, 19, 23, 27, 51, 52, 54, 67, 69, 70, 71],\n- \"legacy_file_id\": [18, 19, 23, 27, 51, 52, 54, 69, 70, 71],\n- \"pathlib\": [18, 19, 23, 27, 51, 52, 54, 69, 70, 71],\n- \"byte\": [18, 19, 23, 27, 48, 51, 52, 53, 54, 69, 70, 71, 74],\n- \"altern\": [18, 19, 23, 27, 51, 52, 53, 54, 69, 70, 71, 85, 86],\n- \"stream\": [18, 19, 23, 27, 51, 52, 54, 66, 69, 70, 71, 76],\n- \"mime\": [18, 19, 23, 27, 48, 51, 52, 53, 54, 69, 70, 71, 74],\n- \"infer\": [18, 19, 20, 23, 27, 51, 52, 54, 69, 70, 71],\n- \"filenam\": [18, 19, 23, 27, 51, 52, 54, 63, 66, 69, 70, 71],\n- \"int\": [18, 19, 23, 27, 48, 51, 52, 53, 54, 59, 67, 68, 69, 70, 71, 74],\n- \"best\": [18, 19, 23, 27, 51, 52, 54, 69, 70, 71],\n- \"duplic\": [18, 19, 23, 27, 51, 52, 54, 69, 70, 71],\n- \"ack\": [18, 19, 23, 27, 48, 51, 52, 54, 69, 70, 71, 74, 82],\n- \"acknowledg\": [18, 19, 23, 27, 48, 51, 52, 54, 69, 70, 71, 74],\n- \"0333\": [18, 19, 23, 27, 48, 51, 52, 54, 69, 70, 71, 74],\n- \"deliveri\": [18, 19, 23, 25, 27, 51, 52, 54, 69, 70, 71],\n- \"receipt\": [18, 19, 23, 25, 27, 51, 52, 54, 69, 70, 71],\n- \"0184\": [18, 19, 23, 25, 27, 51, 52, 54, 69, 70, 71],\n- \"onlin\": [18, 19, 48, 51, 52, 53, 54, 69, 71, 74, 82],\n- \"statu\": [18, 19, 23, 27, 48, 51, 52, 54, 59, 69, 71, 74],\n- \"last_seen\": [18, 19, 51, 52, 69, 71],\n- \"arbitrari\": [18, 19, 20, 23, 27, 48, 51, 52, 54, 60, 68, 69, 70, 71, 74],\n- \"britnei\": [18, 19, 51, 52, 69, 71],\n- \"spear\": [18, 19, 51, 52, 69, 71],\n- \"0319\": [18, 19, 51, 52, 69, 71],\n- \"awai\": [18, 19, 23, 27, 51, 52, 54, 69, 70, 71, 77, 82],\n- \"global\": [18, 19, 48, 51, 52, 54, 67, 69, 71, 74],\n- \"oppos\": [18, 19, 51, 52, 69, 71],\n- \"concern\": [18, 19, 51, 52, 69, 71],\n- \"convers\": [18, 19, 20, 51, 52, 69, 71, 85],\n- \"window\": [18, 19, 23, 27, 51, 52, 54, 69, 70, 71],\n- \"fight\": [18, 19, 51, 52, 69, 71, 86],\n- \"capit\": [18, 19, 51, 52, 67, 69, 71],\n- \"extended_awai\": [18, 19, 51, 52, 69, 71, 82],\n- \"extend\": [18, 19, 23, 27, 51, 52, 54, 59, 69, 71],\n- \"busi\": [18, 19, 51, 52, 69, 71, 82],\n- \"dnd\": [18, 19, 48, 51, 52, 54, 69, 71, 74],\n- \"0100\": [18, 19, 23, 27, 51, 52, 54, 63, 69, 70, 71, 81],\n- \"offlin\": [18, 19, 48, 51, 52, 54, 69, 71, 74, 82],\n- \"available_emoji\": [18, 19, 51, 53, 69, 71, 82],\n+ \"why\": [18, 19, 23, 27, 54, 69, 70, 71],\n+ \"sens\": [18, 19, 23, 27, 54, 69, 70, 71],\n+ \"later\": [18, 19, 23, 27, 48, 54, 69, 70, 71, 74],\n+ \"kwarg\": [18, 19, 20, 23, 27, 48, 51, 53, 54, 66, 67, 68, 69, 70, 71, 74, 80],\n+ \"_send\": [18, 19, 23, 27, 54, 69, 70, 71],\n+ \"0085\": [18, 19, 23, 27, 48, 54, 69, 70, 71, 74],\n+ \"compos\": [18, 19, 23, 27, 54, 69, 70, 71, 76, 82],\n+ \"notif\": [18, 19, 23, 27, 51, 53, 54, 69, 70, 71],\n+ \"paus\": [18, 19, 23, 27, 48, 54, 69, 70, 71, 74, 82],\n+ \"inact\": [18, 19, 23, 27, 48, 54, 69, 70, 71, 74, 82],\n+ \"intermedi\": [18, 19, 23, 27, 54, 69, 70, 71],\n+ \"period\": [18, 19, 23, 27, 54, 68, 69, 70, 71],\n+ \"time\": [18, 19, 23, 27, 48, 54, 66, 69, 70, 71, 74, 84],\n+ \"gone\": [18, 19, 23, 27, 54, 69, 70, 71, 82],\n+ \"devic\": [18, 19, 23, 27, 54, 69, 70, 71],\n+ \"rel\": [18, 19, 23, 27, 54, 69, 70, 71],\n+ \"send_text\": [18, 19, 23, 27, 48, 54, 69, 70, 71, 74, 80, 82],\n+ \"bodi\": [18, 19, 23, 27, 54, 56, 59, 67, 69, 70, 71, 80],\n+ \"legacy_msg_id\": [18, 19, 23, 27, 48, 54, 69, 70, 71, 74, 80],\n+ \"reply_to\": [18, 19, 23, 27, 48, 54, 69, 70, 71, 74],\n+ \"thread\": [18, 19, 23, 27, 48, 54, 69, 70, 71, 74],\n+ \"hint\": [18, 19, 23, 27, 54, 69, 70, 71],\n+ \"archive_onli\": [18, 19, 23, 27, 51, 53, 54, 69, 70, 71],\n+ \"correct\": [18, 19, 23, 27, 48, 51, 53, 54, 66, 69, 70, 71, 74, 82],\n+ \"correction_event_id\": [18, 19, 23, 27, 54, 69, 70, 71],\n+ \"link_preview\": [18, 19, 23, 27, 48, 54, 69, 70, 71, 74],\n+ \"legacymessagetyp\": [18, 19, 23, 27, 48, 51, 53, 54, 69, 70, 71, 74],\n+ \"abl\": [18, 19, 23, 27, 54, 69, 70, 71, 77],\n+ \"transport\": [18, 19, 23, 27, 54, 69, 70, 71, 80],\n+ \"datetim\": [18, 19, 23, 27, 51, 53, 54, 69, 70, 71],\n+ \"delai\": [18, 19, 23, 27, 54, 69, 70, 71],\n+ \"0203\": [18, 19, 23, 27, 54, 69, 70, 71],\n+ \"messagerefer\": [18, 19, 23, 27, 54, 67, 69, 70, 71],\n+ \"quot\": [18, 19, 23, 27, 48, 54, 67, 69, 70, 71, 74],\n+ \"0461\": [18, 19, 23, 27, 48, 54, 67, 69, 70, 71, 74],\n+ \"processinghint\": [18, 19, 23, 27, 54, 69, 70, 71],\n+ \"legacythreadtyp\": [18, 19, 23, 27, 48, 54, 69, 70, 71, 74],\n+ \"histori\": [18, 19, 23, 27, 51, 53, 54, 69, 70, 71, 81],\n+ \"random\": [18, 19, 23, 27, 54, 69, 70, 71, 84],\n+ \"linkpreview\": [18, 19, 23, 27, 48, 54, 59, 69, 70, 71, 74],\n+ \"littl\": [18, 19, 23, 27, 54, 69, 70, 71],\n+ \"sender\": [18, 19, 23, 27, 48, 54, 56, 69, 70, 71, 74, 80],\n+ \"preview\": [18, 19, 23, 27, 48, 54, 69, 70, 71, 74],\n+ \"link\": [18, 19, 23, 27, 48, 54, 69, 70, 71, 74, 83, 85, 87, 88],\n+ \"archiv\": [18, 19, 23, 27, 51, 53, 54, 69, 70, 71],\n+ \"backfil\": [18, 19, 23, 27, 51, 53, 54, 69, 70, 71, 82],\n+ \"new_text\": [18, 19, 23, 27, 54, 69, 70, 71],\n+ \"previous\": [18, 19, 23, 27, 54, 69, 70, 71],\n+ \"0308\": [18, 19, 23, 27, 48, 54, 69, 70, 71, 74],\n+ \"react\": [18, 19, 23, 27, 48, 54, 69, 70, 71, 74, 82],\n+ \"0444\": [18, 19, 23, 27, 48, 54, 69, 70, 71, 74],\n+ \"0424\": [18, 19, 23, 27, 48, 54, 69, 70, 71, 74],\n+ \"send_fil\": [18, 19, 23, 27, 54, 67, 69, 70, 71, 82],\n+ \"file_path\": [18, 19, 23, 27, 54, 69, 70, 71],\n+ \"data_stream\": [18, 19, 23, 27, 54, 69, 70, 71],\n+ \"file_url\": [18, 19, 23, 27, 54, 69, 70, 71],\n+ \"file_nam\": [18, 19, 23, 27, 54, 69, 70, 71],\n+ \"content_typ\": [18, 19, 23, 27, 54, 69, 70, 71],\n+ \"caption\": [18, 19, 23, 27, 54, 67, 69, 70, 71],\n+ \"legacy_file_id\": [18, 19, 23, 27, 54, 69, 70, 71],\n+ \"pathlib\": [18, 19, 23, 27, 54, 69, 70, 71],\n+ \"byte\": [18, 19, 23, 27, 48, 51, 53, 54, 69, 70, 71, 74],\n+ \"altern\": [18, 19, 23, 27, 51, 53, 54, 69, 70, 71, 85, 86],\n+ \"stream\": [18, 19, 23, 27, 54, 66, 69, 70, 71, 76],\n+ \"mime\": [18, 19, 23, 27, 48, 51, 53, 54, 69, 70, 71, 74],\n+ \"infer\": [18, 19, 20, 23, 27, 54, 69, 70, 71],\n+ \"filenam\": [18, 19, 23, 27, 54, 63, 66, 69, 70, 71],\n+ \"int\": [18, 19, 23, 27, 48, 51, 53, 54, 59, 67, 68, 69, 70, 71, 74],\n+ \"best\": [18, 19, 23, 27, 54, 69, 70, 71],\n+ \"duplic\": [18, 19, 23, 27, 54, 69, 70, 71],\n+ \"ack\": [18, 19, 23, 27, 48, 54, 69, 70, 71, 74, 82],\n+ \"acknowledg\": [18, 19, 23, 27, 48, 54, 69, 70, 71, 74],\n+ \"0333\": [18, 19, 23, 27, 48, 54, 69, 70, 71, 74],\n+ \"deliveri\": [18, 19, 23, 25, 27, 54, 69, 70, 71],\n+ \"receipt\": [18, 19, 23, 25, 27, 54, 69, 70, 71],\n+ \"0184\": [18, 19, 23, 25, 27, 54, 69, 70, 71],\n+ \"onlin\": [18, 19, 48, 51, 53, 54, 69, 71, 74, 82],\n+ \"statu\": [18, 19, 23, 27, 48, 54, 59, 69, 71, 74],\n+ \"last_seen\": [18, 19, 69, 71],\n+ \"arbitrari\": [18, 19, 20, 23, 27, 48, 54, 60, 68, 69, 70, 71, 74],\n+ \"britnei\": [18, 19, 69, 71],\n+ \"spear\": [18, 19, 69, 71],\n+ \"0319\": [18, 19, 69, 71],\n+ \"awai\": [18, 19, 23, 27, 54, 69, 70, 71, 77, 82],\n+ \"global\": [18, 19, 48, 54, 67, 69, 71, 74],\n+ \"oppos\": [18, 19, 69, 71],\n+ \"concern\": [18, 19, 69, 71],\n+ \"convers\": [18, 19, 20, 69, 71, 85],\n+ \"window\": [18, 19, 23, 27, 54, 69, 70, 71],\n+ \"fight\": [18, 19, 69, 71, 86],\n+ \"capit\": [18, 19, 67, 69, 71],\n+ \"extended_awai\": [18, 19, 69, 71, 82],\n+ \"extend\": [18, 19, 23, 27, 54, 59, 69, 71],\n+ \"busi\": [18, 19, 69, 71, 82],\n+ \"dnd\": [18, 19, 48, 54, 69, 71, 74],\n+ \"0100\": [18, 19, 23, 27, 54, 63, 69, 70, 71, 81],\n+ \"offlin\": [18, 19, 48, 54, 69, 71, 74, 82],\n+ \"available_emoji\": [18, 19, 69, 71, 82],\n \"overrid\": [18, 19, 20, 23, 27, 48, 50, 51, 53, 54, 56, 69, 70, 71, 74, 77, 80],\n- \"subset\": [18, 19, 51, 53, 66, 69, 71],\n- \"recipi\": [18, 19, 23, 27, 48, 51, 53, 54, 66, 69, 70, 71, 74, 80],\n+ \"subset\": [18, 19, 66, 69, 71],\n+ \"recipi\": [18, 19, 23, 27, 48, 54, 66, 69, 70, 71, 74, 80],\n \"virtual\": [19, 20, 39, 64, 68, 69, 76, 80],\n \"bug\": [19, 20, 69],\n \"mostli\": [19, 20, 69],\n \"incorpor\": [19, 20, 69],\n \"custom\": [19, 20, 23, 27, 48, 54, 59, 69, 70, 74, 77, 80],\n \"logic\": [19, 20, 48, 50, 51, 54, 69, 71, 74],\n \"charact\": [19, 20, 48, 50, 51, 54, 67, 69, 71, 74],\n@@ -2146,14 +2153,60 @@\n \"slidge.command.adhoc\": [\n [10, 1, 1, \"\", \"AdhocProvider\"]\n ],\n \"slidge.command.adhoc.AdhocProvider\": [\n [10, 3, 1, \"\", \"get_items\"],\n [10, 3, 1, \"\", \"register\"]\n ],\n+ \"slidge.command.admin\": [\n+ [11, 1, 1, \"\", \"AdminCommand\"],\n+ [11, 1, 1, \"\", \"ChangeLoglevel\"],\n+ [11, 1, 1, \"\", \"DeleteUser\"],\n+ [11, 1, 1, \"\", \"Exec\"],\n+ [11, 1, 1, \"\", \"ListUsers\"],\n+ [11, 1, 1, \"\", \"SlidgeInfo\"]\n+ ],\n+ \"slidge.command.admin.AdminCommand\": [\n+ [11, 2, 1, \"\", \"CHAT_COMMAND\"],\n+ [11, 2, 1, \"\", \"HELP\"],\n+ [11, 2, 1, \"\", \"NAME\"],\n+ [11, 2, 1, \"\", \"NODE\"],\n+ [11, 3, 1, \"\", \"raise_if_not_authorized\"],\n+ [11, 3, 1, \"\", \"run\"]\n+ ],\n+ \"slidge.command.admin.ChangeLoglevel\": [\n+ [11, 2, 1, \"\", \"CHAT_COMMAND\"],\n+ [11, 2, 1, \"\", \"NODE\"],\n+ [11, 3, 1, \"\", \"raise_if_not_authorized\"],\n+ [11, 3, 1, \"\", \"run\"]\n+ ],\n+ \"slidge.command.admin.DeleteUser\": [\n+ [11, 2, 1, \"\", \"CHAT_COMMAND\"],\n+ [11, 2, 1, \"\", \"NODE\"],\n+ [11, 3, 1, \"\", \"raise_if_not_authorized\"],\n+ [11, 3, 1, \"\", \"run\"]\n+ ],\n+ \"slidge.command.admin.Exec\": [\n+ [11, 2, 1, \"\", \"HELP\"],\n+ [11, 2, 1, \"\", \"NAME\"],\n+ [11, 3, 1, \"\", \"raise_if_not_authorized\"],\n+ [11, 3, 1, \"\", \"run\"]\n+ ],\n+ \"slidge.command.admin.ListUsers\": [\n+ [11, 2, 1, \"\", \"CHAT_COMMAND\"],\n+ [11, 2, 1, \"\", \"NODE\"],\n+ [11, 3, 1, \"\", \"raise_if_not_authorized\"],\n+ [11, 3, 1, \"\", \"run\"]\n+ ],\n+ \"slidge.command.admin.SlidgeInfo\": [\n+ [11, 2, 1, \"\", \"CHAT_COMMAND\"],\n+ [11, 2, 1, \"\", \"NODE\"],\n+ [11, 3, 1, \"\", \"raise_if_not_authorized\"],\n+ [11, 3, 1, \"\", \"run\"]\n+ ],\n \"slidge.command.base\": [\n [12, 1, 1, \"\", \"Command\"],\n [12, 1, 1, \"\", \"CommandAccess\"],\n [12, 1, 1, \"\", \"Confirmation\"],\n [12, 1, 1, \"\", \"Form\"],\n [12, 1, 1, \"\", \"FormField\"],\n [12, 1, 1, \"\", \"Option\"],\n@@ -2573,57 +2626,34 @@\n [51, 3, 1, \"\", \"jid_username_to_legacy_id\"],\n [51, 3, 1, \"\", \"legacy_id_to_jid_username\"]\n ],\n \"slidge.group.LegacyMUC\": [\n [51, 2, 1, \"\", \"KEEP_BACKFILLED_PARTICIPANTS\"],\n [51, 2, 1, \"\", \"STABLE_ARCHIVE\"],\n [51, 3, 1, \"\", \"add_to_bookmarks\"],\n- [51, 3, 1, \"\", \"available_emojis\"],\n- [51, 5, 1, \"\", \"avatar\"],\n- [51, 5, 1, \"\", \"avatar_id\"],\n [51, 3, 1, \"\", \"backfill\"],\n [51, 3, 1, \"\", \"fill_participants\"],\n [51, 3, 1, \"\", \"get_participant\"],\n [51, 3, 1, \"\", \"get_participant_by_contact\"],\n [51, 3, 1, \"\", \"get_participants\"],\n [51, 3, 1, \"\", \"get_system_participant\"],\n [51, 3, 1, \"\", \"get_user_participant\"],\n [51, 3, 1, \"\", \"kick_resource\"],\n [51, 3, 1, \"\", \"on_avatar\"],\n [51, 3, 1, \"\", \"on_destroy_request\"],\n [51, 3, 1, \"\", \"on_set_affiliation\"],\n [51, 3, 1, \"\", \"on_set_config\"],\n [51, 3, 1, \"\", \"remove_participant\"],\n- [51, 3, 1, \"\", \"set_avatar\"],\n [51, 3, 1, \"\", \"update_info\"]\n ],\n \"slidge.group.LegacyParticipant\": [\n- [51, 3, 1, \"\", \"ack\"],\n- [51, 3, 1, \"\", \"active\"],\n- [51, 3, 1, \"\", \"away\"],\n [51, 3, 1, \"\", \"ban\"],\n- [51, 3, 1, \"\", \"busy\"],\n- [51, 3, 1, \"\", \"composing\"],\n- [51, 3, 1, \"\", \"correct\"],\n- [51, 3, 1, \"\", \"displayed\"],\n- [51, 3, 1, \"\", \"extended_away\"],\n- [51, 3, 1, \"\", \"gone\"],\n- [51, 3, 1, \"\", \"inactive\"],\n- [51, 3, 1, \"\", \"invite_to\"],\n [51, 3, 1, \"\", \"kick\"],\n [51, 3, 1, \"\", \"leave\"],\n- [51, 3, 1, \"\", \"offline\"],\n- [51, 3, 1, \"\", \"online\"],\n- [51, 3, 1, \"\", \"paused\"],\n- [51, 3, 1, \"\", \"react\"],\n- [51, 3, 1, \"\", \"received\"],\n- [51, 3, 1, \"\", \"retract\"],\n- [51, 3, 1, \"\", \"send_file\"],\n- [51, 3, 1, \"\", \"send_initial_presence\"],\n- [51, 3, 1, \"\", \"send_text\"]\n+ [51, 3, 1, \"\", \"send_initial_presence\"]\n ],\n \"slidge.group.MucType\": [\n [51, 2, 1, \"\", \"CHANNEL\"],\n [51, 2, 1, \"\", \"CHANNEL_NON_ANONYMOUS\"],\n [51, 2, 1, \"\", \"GROUP\"]\n ],\n \"slidge.group.archive\": [\n@@ -2637,62 +2667,39 @@\n [50, 3, 1, \"\", \"jid_username_to_legacy_id\"],\n [50, 3, 1, \"\", \"legacy_id_to_jid_username\"]\n ],\n \"slidge.group.participant\": [\n [52, 1, 1, \"\", \"LegacyParticipant\"]\n ],\n \"slidge.group.participant.LegacyParticipant\": [\n- [52, 3, 1, \"\", \"ack\"],\n- [52, 3, 1, \"\", \"active\"],\n- [52, 3, 1, \"\", \"away\"],\n [52, 3, 1, \"\", \"ban\"],\n- [52, 3, 1, \"\", \"busy\"],\n- [52, 3, 1, \"\", \"composing\"],\n- [52, 3, 1, \"\", \"correct\"],\n- [52, 3, 1, \"\", \"displayed\"],\n- [52, 3, 1, \"\", \"extended_away\"],\n- [52, 3, 1, \"\", \"gone\"],\n- [52, 3, 1, \"\", \"inactive\"],\n- [52, 3, 1, \"\", \"invite_to\"],\n [52, 3, 1, \"\", \"kick\"],\n [52, 3, 1, \"\", \"leave\"],\n- [52, 3, 1, \"\", \"offline\"],\n- [52, 3, 1, \"\", \"online\"],\n- [52, 3, 1, \"\", \"paused\"],\n- [52, 3, 1, \"\", \"react\"],\n- [52, 3, 1, \"\", \"received\"],\n- [52, 3, 1, \"\", \"retract\"],\n- [52, 3, 1, \"\", \"send_file\"],\n- [52, 3, 1, \"\", \"send_initial_presence\"],\n- [52, 3, 1, \"\", \"send_text\"]\n+ [52, 3, 1, \"\", \"send_initial_presence\"]\n ],\n \"slidge.group.room\": [\n [53, 1, 1, \"\", \"LegacyMUC\"]\n ],\n \"slidge.group.room.LegacyMUC\": [\n [53, 2, 1, \"\", \"KEEP_BACKFILLED_PARTICIPANTS\"],\n [53, 2, 1, \"\", \"STABLE_ARCHIVE\"],\n [53, 3, 1, \"\", \"add_to_bookmarks\"],\n- [53, 3, 1, \"\", \"available_emojis\"],\n- [53, 5, 1, \"\", \"avatar\"],\n- [53, 5, 1, \"\", \"avatar_id\"],\n [53, 3, 1, \"\", \"backfill\"],\n [53, 3, 1, \"\", \"fill_participants\"],\n [53, 3, 1, \"\", \"get_participant\"],\n [53, 3, 1, \"\", \"get_participant_by_contact\"],\n [53, 3, 1, \"\", \"get_participants\"],\n [53, 3, 1, \"\", \"get_system_participant\"],\n [53, 3, 1, \"\", \"get_user_participant\"],\n [53, 3, 1, \"\", \"kick_resource\"],\n [53, 3, 1, \"\", \"on_avatar\"],\n [53, 3, 1, \"\", \"on_destroy_request\"],\n [53, 3, 1, \"\", \"on_set_affiliation\"],\n [53, 3, 1, \"\", \"on_set_config\"],\n [53, 3, 1, \"\", \"remove_participant\"],\n- [53, 3, 1, \"\", \"set_avatar\"],\n [53, 3, 1, \"\", \"update_info\"]\n ],\n \"slidge.slixfix\": [\n [57, 0, 0, \"-\", \"link_preview\"],\n [56, 6, 1, \"\", \"reply\"],\n [60, 0, 0, \"-\", \"roster\"]\n ],\n@@ -3389,19 +3396,19 @@\n \"admin\": [5, 11],\n \"dockerhub\": 6,\n \"pipx\": 6,\n \"privileg\": 8,\n \"mod_privileg\": 8,\n \"slidg\": [9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 30, 31, 32, 33, 34, 35, 36, 37, 38, 39, 40, 41, 42, 43, 44, 45, 46, 47, 48, 49, 50, 51, 52, 53, 54, 55, 56, 57, 58, 59, 60, 61, 62, 63, 64, 65, 66, 67, 68, 77, 82],\n \"__main__\": 9,\n- \"modul\": [9, 10, 12, 16, 17, 18, 20, 21, 23, 34, 38, 39, 48, 49, 50, 52, 53, 59, 60, 61, 63, 65, 66, 67, 68, 69, 70, 71, 74, 80],\n- \"content\": [9, 10, 12, 15, 16, 17, 18, 19, 20, 21, 23, 27, 34, 36, 38, 39, 41, 48, 49, 50, 51, 52, 53, 54, 56, 59, 60, 61, 63, 64, 65, 66, 67, 68, 69, 70, 71, 74],\n+ \"modul\": [9, 10, 11, 12, 16, 17, 18, 20, 21, 23, 34, 38, 39, 48, 49, 50, 52, 53, 59, 60, 61, 63, 65, 66, 67, 68, 69, 70, 71, 74, 80],\n+ \"content\": [9, 10, 11, 12, 15, 16, 17, 18, 19, 20, 21, 23, 27, 34, 36, 38, 39, 41, 48, 49, 50, 51, 52, 53, 54, 56, 59, 60, 61, 63, 64, 65, 66, 67, 68, 69, 70, 71, 74],\n \"command\": [10, 11, 12, 13, 14, 15, 16, 17, 83],\n \"adhoc\": 10,\n- \"class\": [10, 12, 15, 16, 17, 18, 19, 20, 21, 23, 27, 36, 38, 39, 41, 48, 50, 51, 52, 53, 54, 59, 60, 63, 64, 65, 66, 67, 68, 69, 70, 71, 74],\n+ \"class\": [10, 11, 12, 15, 16, 17, 18, 19, 20, 21, 23, 27, 36, 38, 39, 41, 48, 50, 51, 52, 53, 54, 59, 60, 63, 64, 65, 66, 67, 68, 69, 70, 71, 74],\n \"base\": [12, 23, 39],\n \"categori\": 13,\n \"chat_command\": 14,\n \"submodul\": [15, 27, 64, 72],\n \"attribut\": [15, 21, 54, 67],\n \"regist\": 16,\n \"user\": [17, 85],\n@@ -3602,14 +3609,15 @@\n ],\n \"slidge.__main__\": [\n [9, \"module-slidge.__main__\"]\n ],\n \"Module Contents\": [\n [9, \"module-contents\"],\n [10, \"module-contents\"],\n+ [11, \"module-contents\"],\n [12, \"module-contents\"],\n [16, \"module-contents\"],\n [17, \"module-contents\"],\n [18, \"module-contents\"],\n [20, \"module-contents\"],\n [21, \"module-contents\"],\n [23, \"module-contents\"],\n@@ -3635,14 +3643,15 @@\n [74, \"module-contents\"]\n ],\n \"slidge.command.adhoc\": [\n [10, \"module-slidge.command.adhoc\"]\n ],\n \"Classes\": [\n [10, \"classes\"],\n+ [11, \"classes\"],\n [12, \"classes\"],\n [15, \"classes\"],\n [16, \"classes\"],\n [17, \"classes\"],\n [18, \"classes\"],\n [19, \"classes\"],\n [20, \"classes\"],\n@@ -4108,14 +4117,110 @@\n ],\n \"register() (slidge.command.adhoc.adhocprovider method)\": [\n [10, \"slidge.command.adhoc.AdhocProvider.register\"]\n ],\n \"slidge.command.adhoc\": [\n [10, \"module-slidge.command.adhoc\"]\n ],\n+ \"admincommand (class in slidge.command.admin)\": [\n+ [11, \"slidge.command.admin.AdminCommand\"]\n+ ],\n+ \"chat_command (slidge.command.admin.admincommand attribute)\": [\n+ [11, \"slidge.command.admin.AdminCommand.CHAT_COMMAND\"]\n+ ],\n+ \"chat_command (slidge.command.admin.changeloglevel attribute)\": [\n+ [11, \"slidge.command.admin.ChangeLoglevel.CHAT_COMMAND\"]\n+ ],\n+ \"chat_command (slidge.command.admin.deleteuser attribute)\": [\n+ [11, \"slidge.command.admin.DeleteUser.CHAT_COMMAND\"]\n+ ],\n+ \"chat_command (slidge.command.admin.listusers attribute)\": [\n+ [11, \"slidge.command.admin.ListUsers.CHAT_COMMAND\"]\n+ ],\n+ \"chat_command (slidge.command.admin.slidgeinfo attribute)\": [\n+ [11, \"slidge.command.admin.SlidgeInfo.CHAT_COMMAND\"]\n+ ],\n+ \"changeloglevel (class in slidge.command.admin)\": [\n+ [11, \"slidge.command.admin.ChangeLoglevel\"]\n+ ],\n+ \"deleteuser (class in slidge.command.admin)\": [\n+ [11, \"slidge.command.admin.DeleteUser\"]\n+ ],\n+ \"exec (class in slidge.command.admin)\": [\n+ [11, \"slidge.command.admin.Exec\"]\n+ ],\n+ \"help (slidge.command.admin.admincommand attribute)\": [\n+ [11, \"slidge.command.admin.AdminCommand.HELP\"]\n+ ],\n+ \"help (slidge.command.admin.exec attribute)\": [\n+ [11, \"slidge.command.admin.Exec.HELP\"]\n+ ],\n+ \"listusers (class in slidge.command.admin)\": [\n+ [11, \"slidge.command.admin.ListUsers\"]\n+ ],\n+ \"name (slidge.command.admin.admincommand attribute)\": [\n+ [11, \"slidge.command.admin.AdminCommand.NAME\"]\n+ ],\n+ \"name (slidge.command.admin.exec attribute)\": [\n+ [11, \"slidge.command.admin.Exec.NAME\"]\n+ ],\n+ \"node (slidge.command.admin.admincommand attribute)\": [\n+ [11, \"slidge.command.admin.AdminCommand.NODE\"]\n+ ],\n+ \"node (slidge.command.admin.changeloglevel attribute)\": [\n+ [11, \"slidge.command.admin.ChangeLoglevel.NODE\"]\n+ ],\n+ \"node (slidge.command.admin.deleteuser attribute)\": [\n+ [11, \"slidge.command.admin.DeleteUser.NODE\"]\n+ ],\n+ \"node (slidge.command.admin.listusers attribute)\": [\n+ [11, \"slidge.command.admin.ListUsers.NODE\"]\n+ ],\n+ \"node (slidge.command.admin.slidgeinfo attribute)\": [\n+ [11, \"slidge.command.admin.SlidgeInfo.NODE\"]\n+ ],\n+ \"slidgeinfo (class in slidge.command.admin)\": [\n+ [11, \"slidge.command.admin.SlidgeInfo\"]\n+ ],\n+ \"raise_if_not_authorized() (slidge.command.admin.admincommand method)\": [\n+ [11, \"slidge.command.admin.AdminCommand.raise_if_not_authorized\"]\n+ ],\n+ \"raise_if_not_authorized() (slidge.command.admin.changeloglevel method)\": [\n+ [11, \"slidge.command.admin.ChangeLoglevel.raise_if_not_authorized\"]\n+ ],\n+ \"raise_if_not_authorized() (slidge.command.admin.deleteuser method)\": [\n+ [11, \"slidge.command.admin.DeleteUser.raise_if_not_authorized\"]\n+ ],\n+ \"raise_if_not_authorized() (slidge.command.admin.exec method)\": [\n+ [11, \"slidge.command.admin.Exec.raise_if_not_authorized\"]\n+ ],\n+ \"raise_if_not_authorized() (slidge.command.admin.listusers method)\": [\n+ [11, \"slidge.command.admin.ListUsers.raise_if_not_authorized\"]\n+ ],\n+ \"raise_if_not_authorized() (slidge.command.admin.slidgeinfo method)\": [\n+ [11, \"slidge.command.admin.SlidgeInfo.raise_if_not_authorized\"]\n+ ],\n+ \"run() (slidge.command.admin.admincommand method)\": [\n+ [11, \"slidge.command.admin.AdminCommand.run\"]\n+ ],\n+ \"run() (slidge.command.admin.changeloglevel method)\": [\n+ [11, \"slidge.command.admin.ChangeLoglevel.run\"]\n+ ],\n+ \"run() (slidge.command.admin.deleteuser method)\": [\n+ [11, \"slidge.command.admin.DeleteUser.run\"]\n+ ],\n+ \"run() (slidge.command.admin.exec method)\": [\n+ [11, \"slidge.command.admin.Exec.run\"]\n+ ],\n+ \"run() (slidge.command.admin.listusers method)\": [\n+ [11, \"slidge.command.admin.ListUsers.run\"]\n+ ],\n+ \"run() (slidge.command.admin.slidgeinfo method)\": [\n+ [11, \"slidge.command.admin.SlidgeInfo.run\"]\n+ ],\n \"slidge.command.admin\": [\n [11, \"module-slidge.command.admin\"]\n ],\n \"access (slidge.command.base.command attribute)\": [\n [12, \"slidge.command.base.Command.ACCESS\"]\n ],\n \"category (slidge.command.base.command attribute)\": [\n@@ -5272,56 +5377,23 @@\n ],\n \"muctype (class in slidge.group)\": [\n [51, \"slidge.group.MucType\"]\n ],\n \"stable_archive (slidge.group.legacymuc attribute)\": [\n [51, \"slidge.group.LegacyMUC.STABLE_ARCHIVE\"]\n ],\n- \"ack() (slidge.group.legacyparticipant method)\": [\n- [51, \"slidge.group.LegacyParticipant.ack\"]\n- ],\n- \"active() (slidge.group.legacyparticipant method)\": [\n- [51, \"slidge.group.LegacyParticipant.active\"]\n- ],\n \"add_to_bookmarks() (slidge.group.legacymuc method)\": [\n [51, \"slidge.group.LegacyMUC.add_to_bookmarks\"]\n ],\n- \"available_emojis() (slidge.group.legacymuc method)\": [\n- [51, \"slidge.group.LegacyMUC.available_emojis\"]\n- ],\n- \"avatar (slidge.group.legacymuc property)\": [\n- [51, \"slidge.group.LegacyMUC.avatar\"]\n- ],\n- \"avatar_id (slidge.group.legacymuc property)\": [\n- [51, \"slidge.group.LegacyMUC.avatar_id\"]\n- ],\n- \"away() (slidge.group.legacyparticipant method)\": [\n- [51, \"slidge.group.LegacyParticipant.away\"]\n- ],\n \"backfill() (slidge.group.legacymuc method)\": [\n [51, \"slidge.group.LegacyMUC.backfill\"]\n ],\n \"ban() (slidge.group.legacyparticipant method)\": [\n [51, \"slidge.group.LegacyParticipant.ban\"]\n ],\n- \"busy() (slidge.group.legacyparticipant method)\": [\n- [51, \"slidge.group.LegacyParticipant.busy\"]\n- ],\n- \"composing() (slidge.group.legacyparticipant method)\": [\n- [51, \"slidge.group.LegacyParticipant.composing\"]\n- ],\n- \"correct() (slidge.group.legacyparticipant method)\": [\n- [51, \"slidge.group.LegacyParticipant.correct\"]\n- ],\n- \"displayed() (slidge.group.legacyparticipant method)\": [\n- [51, \"slidge.group.LegacyParticipant.displayed\"]\n- ],\n- \"extended_away() (slidge.group.legacyparticipant method)\": [\n- [51, \"slidge.group.LegacyParticipant.extended_away\"]\n- ],\n \"fill() (slidge.group.legacybookmarks method)\": [\n [51, \"slidge.group.LegacyBookmarks.fill\"]\n ],\n \"fill_participants() (slidge.group.legacymuc method)\": [\n [51, \"slidge.group.LegacyMUC.fill_participants\"]\n ],\n \"get_participant() (slidge.group.legacymuc method)\": [\n@@ -5335,23 +5407,14 @@\n ],\n \"get_system_participant() (slidge.group.legacymuc method)\": [\n [51, \"slidge.group.LegacyMUC.get_system_participant\"]\n ],\n \"get_user_participant() (slidge.group.legacymuc method)\": [\n [51, \"slidge.group.LegacyMUC.get_user_participant\"]\n ],\n- \"gone() (slidge.group.legacyparticipant method)\": [\n- [51, \"slidge.group.LegacyParticipant.gone\"]\n- ],\n- \"inactive() (slidge.group.legacyparticipant method)\": [\n- [51, \"slidge.group.LegacyParticipant.inactive\"]\n- ],\n- \"invite_to() (slidge.group.legacyparticipant method)\": [\n- [51, \"slidge.group.LegacyParticipant.invite_to\"]\n- ],\n \"jid_username_to_legacy_id() (slidge.group.legacybookmarks method)\": [\n [51, \"slidge.group.LegacyBookmarks.jid_username_to_legacy_id\"]\n ],\n \"kick() (slidge.group.legacyparticipant method)\": [\n [51, \"slidge.group.LegacyParticipant.kick\"]\n ],\n \"kick_resource() (slidge.group.legacymuc method)\": [\n@@ -5359,137 +5422,53 @@\n ],\n \"leave() (slidge.group.legacyparticipant method)\": [\n [51, \"slidge.group.LegacyParticipant.leave\"]\n ],\n \"legacy_id_to_jid_username() (slidge.group.legacybookmarks method)\": [\n [51, \"slidge.group.LegacyBookmarks.legacy_id_to_jid_username\"]\n ],\n- \"offline() (slidge.group.legacyparticipant method)\": [\n- [51, \"slidge.group.LegacyParticipant.offline\"]\n- ],\n \"on_avatar() (slidge.group.legacymuc method)\": [\n [51, \"slidge.group.LegacyMUC.on_avatar\"]\n ],\n \"on_destroy_request() (slidge.group.legacymuc method)\": [\n [51, \"slidge.group.LegacyMUC.on_destroy_request\"]\n ],\n \"on_set_affiliation() (slidge.group.legacymuc method)\": [\n [51, \"slidge.group.LegacyMUC.on_set_affiliation\"]\n ],\n \"on_set_config() (slidge.group.legacymuc method)\": [\n [51, \"slidge.group.LegacyMUC.on_set_config\"]\n ],\n- \"online() (slidge.group.legacyparticipant method)\": [\n- [51, \"slidge.group.LegacyParticipant.online\"]\n- ],\n- \"paused() (slidge.group.legacyparticipant method)\": [\n- [51, \"slidge.group.LegacyParticipant.paused\"]\n- ],\n- \"react() (slidge.group.legacyparticipant method)\": [\n- [51, \"slidge.group.LegacyParticipant.react\"]\n- ],\n- \"received() (slidge.group.legacyparticipant method)\": [\n- [51, \"slidge.group.LegacyParticipant.received\"]\n- ],\n \"remove_participant() (slidge.group.legacymuc method)\": [\n [51, \"slidge.group.LegacyMUC.remove_participant\"]\n ],\n- \"retract() (slidge.group.legacyparticipant method)\": [\n- [51, \"slidge.group.LegacyParticipant.retract\"]\n- ],\n- \"send_file() (slidge.group.legacyparticipant method)\": [\n- [51, \"slidge.group.LegacyParticipant.send_file\"]\n- ],\n \"send_initial_presence() (slidge.group.legacyparticipant method)\": [\n [51, \"slidge.group.LegacyParticipant.send_initial_presence\"]\n ],\n- \"send_text() (slidge.group.legacyparticipant method)\": [\n- [51, \"slidge.group.LegacyParticipant.send_text\"]\n- ],\n- \"set_avatar() (slidge.group.legacymuc method)\": [\n- [51, \"slidge.group.LegacyMUC.set_avatar\"]\n- ],\n \"slidge.group\": [\n [51, \"module-slidge.group\"]\n ],\n \"update_info() (slidge.group.legacymuc method)\": [\n [51, \"slidge.group.LegacyMUC.update_info\"]\n ],\n \"legacyparticipant (class in slidge.group.participant)\": [\n [52, \"slidge.group.participant.LegacyParticipant\"]\n ],\n- \"ack() (slidge.group.participant.legacyparticipant method)\": [\n- [52, \"slidge.group.participant.LegacyParticipant.ack\"]\n- ],\n- \"active() (slidge.group.participant.legacyparticipant method)\": [\n- [52, \"slidge.group.participant.LegacyParticipant.active\"]\n- ],\n- \"away() (slidge.group.participant.legacyparticipant method)\": [\n- [52, \"slidge.group.participant.LegacyParticipant.away\"]\n- ],\n \"ban() (slidge.group.participant.legacyparticipant method)\": [\n [52, \"slidge.group.participant.LegacyParticipant.ban\"]\n ],\n- \"busy() (slidge.group.participant.legacyparticipant method)\": [\n- [52, \"slidge.group.participant.LegacyParticipant.busy\"]\n- ],\n- \"composing() (slidge.group.participant.legacyparticipant method)\": [\n- [52, \"slidge.group.participant.LegacyParticipant.composing\"]\n- ],\n- \"correct() (slidge.group.participant.legacyparticipant method)\": [\n- [52, \"slidge.group.participant.LegacyParticipant.correct\"]\n- ],\n- \"displayed() (slidge.group.participant.legacyparticipant method)\": [\n- [52, \"slidge.group.participant.LegacyParticipant.displayed\"]\n- ],\n- \"extended_away() (slidge.group.participant.legacyparticipant method)\": [\n- [52, \"slidge.group.participant.LegacyParticipant.extended_away\"]\n- ],\n- \"gone() (slidge.group.participant.legacyparticipant method)\": [\n- [52, \"slidge.group.participant.LegacyParticipant.gone\"]\n- ],\n- \"inactive() (slidge.group.participant.legacyparticipant method)\": [\n- [52, \"slidge.group.participant.LegacyParticipant.inactive\"]\n- ],\n- \"invite_to() (slidge.group.participant.legacyparticipant method)\": [\n- [52, \"slidge.group.participant.LegacyParticipant.invite_to\"]\n- ],\n \"kick() (slidge.group.participant.legacyparticipant method)\": [\n [52, \"slidge.group.participant.LegacyParticipant.kick\"]\n ],\n \"leave() (slidge.group.participant.legacyparticipant method)\": [\n [52, \"slidge.group.participant.LegacyParticipant.leave\"]\n ],\n- \"offline() (slidge.group.participant.legacyparticipant method)\": [\n- [52, \"slidge.group.participant.LegacyParticipant.offline\"]\n- ],\n- \"online() (slidge.group.participant.legacyparticipant method)\": [\n- [52, \"slidge.group.participant.LegacyParticipant.online\"]\n- ],\n- \"paused() (slidge.group.participant.legacyparticipant method)\": [\n- [52, \"slidge.group.participant.LegacyParticipant.paused\"]\n- ],\n- \"react() (slidge.group.participant.legacyparticipant method)\": [\n- [52, \"slidge.group.participant.LegacyParticipant.react\"]\n- ],\n- \"received() (slidge.group.participant.legacyparticipant method)\": [\n- [52, \"slidge.group.participant.LegacyParticipant.received\"]\n- ],\n- \"retract() (slidge.group.participant.legacyparticipant method)\": [\n- [52, \"slidge.group.participant.LegacyParticipant.retract\"]\n- ],\n- \"send_file() (slidge.group.participant.legacyparticipant method)\": [\n- [52, \"slidge.group.participant.LegacyParticipant.send_file\"]\n- ],\n \"send_initial_presence() (slidge.group.participant.legacyparticipant method)\": [\n [52, \"slidge.group.participant.LegacyParticipant.send_initial_presence\"]\n ],\n- \"send_text() (slidge.group.participant.legacyparticipant method)\": [\n- [52, \"slidge.group.participant.LegacyParticipant.send_text\"]\n- ],\n \"slidge.group.participant\": [\n [52, \"module-slidge.group.participant\"]\n ],\n \"keep_backfilled_participants (slidge.group.room.legacymuc attribute)\": [\n [53, \"slidge.group.room.LegacyMUC.KEEP_BACKFILLED_PARTICIPANTS\"]\n ],\n \"legacymuc (class in slidge.group.room)\": [\n@@ -5497,23 +5476,14 @@\n ],\n \"stable_archive (slidge.group.room.legacymuc attribute)\": [\n [53, \"slidge.group.room.LegacyMUC.STABLE_ARCHIVE\"]\n ],\n \"add_to_bookmarks() (slidge.group.room.legacymuc method)\": [\n [53, \"slidge.group.room.LegacyMUC.add_to_bookmarks\"]\n ],\n- \"available_emojis() (slidge.group.room.legacymuc method)\": [\n- [53, \"slidge.group.room.LegacyMUC.available_emojis\"]\n- ],\n- \"avatar (slidge.group.room.legacymuc property)\": [\n- [53, \"slidge.group.room.LegacyMUC.avatar\"]\n- ],\n- \"avatar_id (slidge.group.room.legacymuc property)\": [\n- [53, \"slidge.group.room.LegacyMUC.avatar_id\"]\n- ],\n \"backfill() (slidge.group.room.legacymuc method)\": [\n [53, \"slidge.group.room.LegacyMUC.backfill\"]\n ],\n \"fill_participants() (slidge.group.room.legacymuc method)\": [\n [53, \"slidge.group.room.LegacyMUC.fill_participants\"]\n ],\n \"get_participant() (slidge.group.room.legacymuc method)\": [\n@@ -5545,17 +5515,14 @@\n ],\n \"on_set_config() (slidge.group.room.legacymuc method)\": [\n [53, \"slidge.group.room.LegacyMUC.on_set_config\"]\n ],\n \"remove_participant() (slidge.group.room.legacymuc method)\": [\n [53, \"slidge.group.room.LegacyMUC.remove_participant\"]\n ],\n- \"set_avatar() (slidge.group.room.legacymuc method)\": [\n- [53, \"slidge.group.room.LegacyMUC.set_avatar\"]\n- ],\n \"slidge.group.room\": [\n [53, \"module-slidge.group.room\"]\n ],\n \"update_info() (slidge.group.room.legacymuc method)\": [\n [53, \"slidge.group.room.LegacyMUC.update_info\"]\n ],\n \"basegateway (class in slidge)\": [\n"}]}]}]}]}]}